ThaiSEOBoard.com

พัฒนาเว็บไซต์ => CMS & Free Script => ข้อความที่เริ่มโดย: shop6054 ที่ 24 มกราคม 2018, 09:14:56



หัวข้อ: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: shop6054 ที่ 24 มกราคม 2018, 09:14:56
รบกวนท่านผู้รู้ครับ
ผมอยากทำ
Script Google Drive Proxy Player ใส่เว็บตัวเอง
ไม่อยากใช้ของที่เขาแจกให้ใช้ฟรี หรือที่มีขายก็แพงไปหน่อยครับ

หากไม่รบกวนท่านมากนัก แนะนำวิธีการทำให้ด้วยครับ
จะแนะนำ หรือชี้แนะ หรือมี script แบบไหนก็ได้ครับ

ขอบคุณล่วงหน้าครับ




หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: minigoood ที่ 24 มกราคม 2018, 09:18:54
รบกวนท่านผู้รู้ครับ
ผมอยากทำ
Script Google Drive Proxy Player ใส่เว็บตัวเอง
ไม่อยากใช้ของที่เขาแจกให้ใช้ฟรี หรือที่มีขายก็แพงไปหน่อยครับ

หากไม่รบกวนท่านมากนัก แนะนำวิธีการทำให้ด้วยครับ
จะแนะนำ หรือชี้แนะ หรือมี script แบบไหนก็ได้ครับ

ขอบคุณล่วงหน้าครับ



ติดเป็น iframe ไปเลยครับถ้างบไม่มี เพราะตอนนี้ที่มันแพงเพราะต้องใช้ความสามารถหน่อยๆ พูดง่ายๆครับ ค่าวิชาแหละครับ เมื่อก่อนถูกเพราะคนสามารถทำกันได้ง่ายๆ แจกกันกระจาย พอทาง google update มาเขา คนที่อัพเดทรับแก้ก็มีคนแก้ได้บ้างไม่ได้บ้าง คนที่แก้ได้ก็จะเก็บวิชาไม่อยากให้วิชาแพร่ไป เพราะถ้าแพร่มาก google ก็จับทางได้ ก็จบทั้งเว็ปตัวเองและคนอื่นๆ ด้วย ง่ายๆ


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: shop6054 ที่ 24 มกราคม 2018, 09:22:22
รบกวนท่านผู้รู้ครับ
ผมอยากทำ
Script Google Drive Proxy Player ใส่เว็บตัวเอง
ไม่อยากใช้ของที่เขาแจกให้ใช้ฟรี หรือที่มีขายก็แพงไปหน่อยครับ

หากไม่รบกวนท่านมากนัก แนะนำวิธีการทำให้ด้วยครับ
จะแนะนำ หรือชี้แนะ หรือมี script แบบไหนก็ได้ครับ

ขอบคุณล่วงหน้าครับ



ติดเป็น iframe ไปเลยครับถ้างบไม่มี เพราะตอนนี้ที่มันแพงเพราะต้องใช้ความสามารถหน่อยๆ พูดง่ายๆครับ ค่าวิชาแหละครับ เมื่อก่อนถูกเพราะคนสามารถทำกันได้ง่ายๆ แจกกันกระจาย พอทาง google update มาเขา คนที่อัพเดทรับแก้ก็มีคนแก้ได้บ้างไม่ได้บ้าง คนที่แก้ได้ก็จะเก็บวิชาไม่อยากให้วิชาแพร่ไป เพราะถ้าแพร่มาก google ก็จับทางได้ ก็จบทั้งเว็ปตัวเองและคนอื่นๆ ด้วย ง่ายๆ
ขอบคุณครับ.


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: opzakong ที่ 24 มกราคม 2018, 09:44:58

ถ้าผมจำไม่ผิด เมื่อก่อนลิงค์ของ Proxy Player จะใช้ ทรัพยากรของทาง google มหาศาล ซึ่งหลายคนที่ทำบอกกันมาว่า มันทำง่าย

ต่อมามันเริ่มนิยม ไม่ใช่แค่ไทย แต่ต่างประเทศก็ใช้เยอะ google เลยหันมาเริ่มบล็อค Proxy พวกนี้

ปัจจุบันแทบไม่มีคนทำได้แล้วครับ เพราะ googledrive เล่นหนักมาก ทำได้ก็ปรับ ทำได้ก็ปรับ ทำได้ก็ปรับ

ที่ตอนนี้ยังมีคนทำได้เพราะดึงวิดีโอแล้วนำมาเล่นในเซ็พเวอร์ของตัวเอง ทำให้ google ไม่ได้เปลืองแบนวิชของเขามานัก เขาเลยเริ่มพลาๆการอัพเดตลง

ผมแนะนำ Openload ครับ ตั้งค่าหลังบ้าน 480 หรือหมวด HD

เดี๋ยวนี้ openload เพื่ม CDN เข้าไป วิดีโอเล่นไวมาก แถมเรายังทำเงินได้เล็กๆน้อยๆอีกต่างหาก



เทียบกันเล่นๆนะครับ Proxy แบบดึงไปเล่น ปัญหาไม่ค่อยมีมาซักพักใหญ่แล้วครับ แต่เอาแน่เอานอนไม่ได้เท่าไหร่ แต่คิดว่าน่าจะใช้ได้ยาวๆอยู่ครับ

แต่ถ้าฝากกับพวก Openload วิดีโอจะอยู่ในระดับกลางๆไม่เร็วมากครับ แต่บางวิดีโอจะเร็วมาก ก็ไม่รู้เป็นเพราะอะไร ข้อดีคือเว็บฝากวิดีโอจะมีพวก Remote ไฟล์อยู่ เราสามารถย้ายไฟล์ของเราไปยังเว็บอัพโหลดอื่นๆได้สบายเลยครับ

ในอนาคตผมคิดว่า Openload น่าจะพํฒนาไปได้อีกไกลเลยครับ เทียบกับปีที่แล้ว Openload ความเร็วเป็นสล็อต ต่อมาพัฒนาเป็นเต่า ปัจจุบันผมว่าน่าจะเป็นปลาตัวใหญ่นะครับ (ล้อเล่น)



หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: pungpp ที่ 24 มกราคม 2018, 09:54:47

ถ้าผมจำไม่ผิด เมื่อก่อนลิงค์ของ Proxy Player จะใช้ ทรัพยากรของทาง google มหาศาล ซึ่งหลายคนที่ทำบอกกันมาว่า มันทำง่าย

ต่อมามันเริ่มนิยม ไม่ใช่แค่ไทย แต่ต่างประเทศก็ใช้เยอะ google เลยหันมาเริ่มบล็อค Proxy พวกนี้

ปัจจุบันแทบไม่มีคนทำได้แล้วครับ เพราะ googledrive เล่นหนักมาก ทำได้ก็ปรับ ทำได้ก็ปรับ ทำได้ก็ปรับ

ที่ตอนนี้ยังมีคนทำได้เพราะดึงวิดีโอแล้วนำมาเล่นในเซ็พเวอร์ของตัวเอง ทำให้ google ไม่ได้เปลืองแบนวิชของเขามานัก เขาเลยเริ่มพลาๆการอัพเดตลง

ผมแนะนำ Openload ครับ ตั้งค่าหลังบ้าน 480 หรือหมวด HD

เดี๋ยวนี้ openload เพื่ม CDN เข้าไป วิดีโอเล่นไวมาก แถมเรายังทำเงินได้เล็กๆน้อยๆอีกต่างหาก



เทียบกันเล่นๆนะครับ Proxy แบบดึงไปเล่น ปัญหาไม่ค่อยมีมาซักพักใหญ่แล้วครับ แต่เอาแน่เอานอนไม่ได้เท่าไหร่ แต่คิดว่าน่าจะใช้ได้ยาวๆอยู่ครับ

แต่ถ้าฝากกับพวก Openload วิดีโอจะอยู่ในระดับกลางๆไม่เร็วมากครับ แต่บางวิดีโอจะเร็วมาก ก็ไม่รู้เป็นเพราะอะไร ข้อดีคือเว็บฝากวิดีโอจะมีพวก Remote ไฟล์อยู่ เราสามารถย้ายไฟล์ของเราไปยังเว็บอัพโหลดอื่นๆได้สบายเลยครับ

ในอนาคตผมคิดว่า Openload น่าจะพํฒนาไปได้อีกไกลเลยครับ เทียบกับปีที่แล้ว Openload ความเร็วเป็นสล็อต ต่อมาพัฒนาเป็นเต่า ปัจจุบันผมว่าน่าจะเป็นปลาตัวใหญ่นะครับ (ล้อเล่น)



openload ตอนนี้ผมเริ่มถอยออกมาแล้วครับ วิดีโอโหลดช้ามาก น่าเป็นที่ช่วงเวลาด้วยแหละ แต่คนบ่นเยอะมาก แถมหลังๆลบวิดีโอถี่ยิบ ไม่ไหวจะเครีย  :P


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: ekcdn ที่ 24 มกราคม 2018, 10:28:41

ถ้าผมจำไม่ผิด เมื่อก่อนลิงค์ของ Proxy Player จะใช้ ทรัพยากรของทาง google มหาศาล ซึ่งหลายคนที่ทำบอกกันมาว่า มันทำง่าย

ต่อมามันเริ่มนิยม ไม่ใช่แค่ไทย แต่ต่างประเทศก็ใช้เยอะ google เลยหันมาเริ่มบล็อค Proxy พวกนี้

ปัจจุบันแทบไม่มีคนทำได้แล้วครับ เพราะ googledrive เล่นหนักมาก ทำได้ก็ปรับ ทำได้ก็ปรับ ทำได้ก็ปรับ

ที่ตอนนี้ยังมีคนทำได้เพราะดึงวิดีโอแล้วนำมาเล่นในเซ็พเวอร์ของตัวเอง ทำให้ google ไม่ได้เปลืองแบนวิชของเขามานัก เขาเลยเริ่มพลาๆการอัพเดตลง

ผมแนะนำ Openload ครับ ตั้งค่าหลังบ้าน 480 หรือหมวด HD

เดี๋ยวนี้ openload เพื่ม CDN เข้าไป วิดีโอเล่นไวมาก แถมเรายังทำเงินได้เล็กๆน้อยๆอีกต่างหาก



เทียบกันเล่นๆนะครับ Proxy แบบดึงไปเล่น ปัญหาไม่ค่อยมีมาซักพักใหญ่แล้วครับ แต่เอาแน่เอานอนไม่ได้เท่าไหร่ แต่คิดว่าน่าจะใช้ได้ยาวๆอยู่ครับ

แต่ถ้าฝากกับพวก Openload วิดีโอจะอยู่ในระดับกลางๆไม่เร็วมากครับ แต่บางวิดีโอจะเร็วมาก ก็ไม่รู้เป็นเพราะอะไร ข้อดีคือเว็บฝากวิดีโอจะมีพวก Remote ไฟล์อยู่ เราสามารถย้ายไฟล์ของเราไปยังเว็บอัพโหลดอื่นๆได้สบายเลยครับ

ในอนาคตผมคิดว่า Openload น่าจะพํฒนาไปได้อีกไกลเลยครับ เทียบกับปีที่แล้ว Openload ความเร็วเป็นสล็อต ต่อมาพัฒนาเป็นเต่า ปัจจุบันผมว่าน่าจะเป็นปลาตัวใหญ่นะครับ (ล้อเล่น)



openload ตอนนี้ผมเริ่มถอยออกมาแล้วครับ วิดีโอโหลดช้ามาก น่าเป็นที่ช่วงเวลาด้วยแหละ แต่คนบ่นเยอะมาก แถมหลังๆลบวิดีโอถี่ยิบ ไม่ไหวจะเครีย  :P
้เป็นเรื่องปกติครับ ที่ลบถี่ เพราะตัวเว็ปบอกไว้แล้ว่า DMCA เรื่องลิขสิทธิโดนรายงานมาเขาก็ลบครับ


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: jakky ที่ 24 มกราคม 2018, 11:00:21
ถ้าผมมีความรู้ในเรื่องของสคริป ผมจะไม่ทำ proxy เด็ดขาด ผมจะเขียนสคริปอะไรสักอย่าง เอามาปิดปุ่ม Pop Out ที่อยู่ใน iframe ไว้ไม่ให้คนดูคลิ๊กออกได้ ทีนี้ก็กินยาวครับ เพราะการใช้ iframe กูเกิ้ลเค้าไม่ว่าอยู่แล้ว


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: HIPpoPO ที่ 24 มกราคม 2018, 11:47:37
gg drive player ของ juicycode มั้ง ถ้าจำไม่ผิด 10-20 เหรียญเอง ไปซื้อมาใช้สิคะ แต่ไม่รู้ว่าดีหรือเปล่านะ ของคนไทยอย่าไปซื้อใช้เด็ดขาด ขายแพง แล้วก็ไม่รู้ว่ามันจะรับผิดชอบแก้ปัญหาได้ดีแค่ไหน ต้องมีดราม่าอีกแน่ ๆ.


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: doodosang ที่ 24 มกราคม 2018, 11:57:07
gg drive player ของ juicycode มั้ง ถ้าจำไม่ผิด 10-20 เหรียญเอง ไปซื้อมาใช้สิคะ แต่ไม่รู้ว่าดีหรือเปล่านะ ของคนไทยอย่าไปซื้อใช้เด็ดขาด ขายแพง แล้วก็ไม่รู้ว่ามันจะรับผิดชอบแก้ปัญหาได้ดีแค่ไหน ต้องมีดราม่าอีกแน่ ๆ.
เคยใช้แล้ว juicycode มีปัญหาก็แก้ไขลำบาก นานกว่าจะตอบ ของที่ถูกก็ใช้จะดีเสมอไปครับ จากผุ้ใช้งานจริง (อันนี้แล้วแต่บุคคล)


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: opzakong ที่ 24 มกราคม 2018, 14:22:38

ถ้าดูจากปัญหาที่คนส่วนใหญ่เป็นก็ประมาณี้

Proxy GD = Google ปรับบ่อยจนเน่าหลายครั้ง ฝ่ายซื้อต้องเสียเงินไปไม่คุ้ม ข้อดีคือป้องกันโดนขโมย+ลิขสิทธิ์

Google ธรรมดา = โดนขโมยไฟล์ + ลิขสิทธิ์ + ลิมิตต่อวันโครตน้อย

Openload = เร็วช้าแล้วแต่ดวง + มี Popup(สร้างรายได้) ปัญหาไม่ค่อยมี ธีม player ไม่สวยมาก

ถ้าแบบ Upload MP4 ในเซ็พเวอร์ส่วนตัวก็จะกินค่าเช่าเยอะพอสมควรไม่คุ้มรายได้

สรุปไม่มีอันไหนดีเลย ถ้าจะอยู่แบบยาวๆแนะนำ Openload ครับ ไม่ใช่อวยนะ แต่มันอยู่มานาน อยู่แบบนิ่งๆ อยู่ยังไงก็ยังงั้น 5555


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: doodosang ที่ 24 มกราคม 2018, 14:37:19
ตามคอมเม้นบนเลยครับ แต่ทางผมเลือกใช้ api proxy อยู่และยังคงอยู่


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: winzaza ที่ 24 มกราคม 2018, 14:40:31
ตามคอมเม้นบนเลยครับ แต่ทางผมเลือกใช้ api proxy อยู่และยังคงอยู่


มีแนะนำไหมครับ

เข้าไปดู จุ้ยcode ราคา 55ดอล แน่ะ

ขอบคุณครับ


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: doodosang ที่ 24 มกราคม 2018, 14:41:51
ตามคอมเม้นบนเลยครับ แต่ทางผมเลือกใช้ api proxy อยู่และยังคงอยู่


มีแนะนำไหมครับ

เข้าไปดู จุ้ยcode ราคา 55ดอล แน่ะ

ขอบคุณครับ
ถ้าแนะนำแพงกว่า จุ้ยcode แน่นอน แต่ใช้มานานและ คุ้มแหละ เมือก่อนเคยใช้ จุ้ยเสีย ติดต่ออยากมาก ซัพช้า เลยได้ทีี่ใหม่แหละ  :wanwan011:


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: jakky ที่ 24 มกราคม 2018, 15:09:34
ถ้าจะทำเว็บจำพวกคลิป หรือว่าดูหนัง มันต้องแบบนี้ครับ
freemoviethai.com ไม่ต้องง้อ Google Drive ไม่ต้อง Openload ขั้นเทพมาก


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: winzaza ที่ 24 มกราคม 2018, 15:49:15
ถ้าจะทำเว็บจำพวกคลิป หรือว่าดูหนัง มันต้องแบบนี้ครับ
freemoviethai.com ไม่ต้องง้อ Google Drive ไม่ต้อง Openload ขั้นเทพมาก

เขาใช้อะไรหรอครับ


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: roommini ที่ 24 มกราคม 2018, 16:36:33
 :P ไม่ธรรมดา Steam ใช้ nginx ใช้ https ด้วย ip ของ 31.220.1.xxx โหลดตรง ๆ เลย ที่นี้ บราซิลจิน ๆ เลย


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: doodosang ที่ 24 มกราคม 2018, 16:56:10
ถ้าจะทำเว็บจำพวกคลิป หรือว่าดูหนัง มันต้องแบบนี้ครับ
freemoviethai.com ไม่ต้องง้อ Google Drive ไม่ต้อง Openload ขั้นเทพมาก

เขาใช้อะไรหรอครับ
cdn เลยครับ ยิงลิงค์ตรงๆ กันไปเลย เนื้อที่ไม่จำกัด แต่ท่านจะบริหาร แบนวิช ได้ดีแค่ไหน


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: jukkree ที่ 24 มกราคม 2018, 19:00:36
ถ้าจะทำเว็บจำพวกคลิป หรือว่าดูหนัง มันต้องแบบนี้ครับ
freemoviethai.com ไม่ต้องง้อ Google Drive ไม่ต้อง Openload ขั้นเทพมาก

เขาใช้อะไรหรอครับ
cdn เลยครับ ยิงลิงค์ตรงๆ กันไปเลย เนื้อที่ไม่จำกัด แต่ท่านจะบริหาร แบนวิช ได้ดีแค่ไหน

เว็บท่านใช้ g drive ใช่ไหมครับเเล้วใช้ของเจ้าไหนหรอครับ proxy ราคาเเพงไหมหรอครับ


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: doodosang ที่ 01 กุมภาพันธ์ 2018, 03:17:18
ถ้าจะทำเว็บจำพวกคลิป หรือว่าดูหนัง มันต้องแบบนี้ครับ
freemoviethai.com ไม่ต้องง้อ Google Drive ไม่ต้อง Openload ขั้นเทพมาก

เขาใช้อะไรหรอครับ
cdn เลยครับ ยิงลิงค์ตรงๆ กันไปเลย เนื้อที่ไม่จำกัด แต่ท่านจะบริหาร แบนวิช ได้ดีแค่ไหน

เว็บท่านใช้ g drive ใช่ไหมครับเเล้วใช้ของเจ้าไหนหรอครับ proxy ราคาเเพงไหมหรอครับ
ใช้อยู่ตอนนี้ไม่มีปัญหาเลย ป้องกันโหลด ล็อคโดเมน


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: jukkree ที่ 01 กุมภาพันธ์ 2018, 04:14:14
ถ้าจะทำเว็บจำพวกคลิป หรือว่าดูหนัง มันต้องแบบนี้ครับ
freemoviethai.com ไม่ต้องง้อ Google Drive ไม่ต้อง Openload ขั้นเทพมาก

เขาใช้อะไรหรอครับ
cdn เลยครับ ยิงลิงค์ตรงๆ กันไปเลย เนื้อที่ไม่จำกัด แต่ท่านจะบริหาร แบนวิช ได้ดีแค่ไหน

เว็บท่านใช้ g drive ใช่ไหมครับเเล้วใช้ของเจ้าไหนหรอครับ proxy ราคาเเพงไหมหรอครับ
ใช้อยู่ตอนนี้ไม่มีปัญหาเลย ป้องกันโหลด ล็อคโดเมน

จะซื้อใช้ที่ไหนหรอครับ ราคาคิดยังไงหรอครับ ^^


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: jakky ที่ 01 กุมภาพันธ์ 2018, 09:54:55
ถ้าจะทำเว็บจำพวกคลิป หรือว่าดูหนัง มันต้องแบบนี้ครับ
freemoviethai.com ไม่ต้องง้อ Google Drive ไม่ต้อง Openload ขั้นเทพมาก

เขาใช้อะไรหรอครับ
cdn เลยครับ ยิงลิงค์ตรงๆ กันไปเลย เนื้อที่ไม่จำกัด แต่ท่านจะบริหาร แบนวิช ได้ดีแค่ไหน

เว็บท่านใช้ g drive ใช่ไหมครับเเล้วใช้ของเจ้าไหนหรอครับ proxy ราคาเเพงไหมหรอครับ
ใช้อยู่ตอนนี้ไม่มีปัญหาเลย ป้องกันโหลด ล็อคโดเมน

จะซื้อใช้ที่ไหนหรอครับ ราคาคิดยังไงหรอครับ ^^

ติดต่อได้ที่นี่เลยครับ ekcdn.me ระบบเทพมาก บอกเลย


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: 2DTH ที่ 01 กุมภาพันธ์ 2018, 16:34:43
ไม่รู้จะบอกอะไรเเต่ไม่เเนะนำถ้าใช้เเค่proxyplayerอย่างเดียว
นี่เป็นเว็บที่ผมคิดว่าจะเอาไว้อัพโหลดลงเว็บตัวเอง
googledrive //ก็อย่างที่รู้ๆกัน
openload //ปัจจุบันใช้อยู่ช้าเเต่ก็ยังดี
tunepk //มีให้เลือกความชัดเสียดายจำกัดขนาดไฟล์
stream.moe //ยังไม่ได้ลอง
mp4upload //ยังไม่ได้ลอง
streamango //ปัจจุบันใช้อยู่เร็วกว่าopenloadเเถมไฟล์ไม่ค่อยถูกลบ
streamcherry //ปัจจุบันใช้อยู่เร็วกว่าopenloadเเถมไฟล์ไม่ค่อยถูกลบ
rapidvideo //ปัจจุบันใช้อยู่เร็วดีเเถมมีปรับความชัดเเถมไฟล์ไม่ค่อยถูกลบ
vidoza //ปัจจุบันใช้อยู่ความเร็วกลางๆวิดีโอถูกลบบ่อยมากๆ
cloudup //ยังไม่ได้ลอง

มีเว็บอื่นอีกรึเปล่าก็ลืมไปเเย้ว--

dailymotion ไม่ชอบเท่าไรอัพโหลดจำกัดต่อวันเเถมมันถูกลบง่ายเหมือนกัน
mthai เน็ตผมเป็นของต่างประเทศเลยอัพช้าไม่ไหว555
youtube อัพได้เเต่ต้องมีเป็นหมื่นเเชเเนลเเละลงได้เฉพาะเรื่องที่ไม่ติดลิขสิท

เเค่คำเเนะนำนะครับ :wanwan017:


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: dravengsg ที่ 02 กุมภาพันธ์ 2018, 03:11:50
มาเก็บข้อมูลครับ  :wanwan017: :wanwan017: :wanwan017:


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: doodosang ที่ 02 กุมภาพันธ์ 2018, 08:49:57
ถ้าจะทำเว็บจำพวกคลิป หรือว่าดูหนัง มันต้องแบบนี้ครับ
freemoviethai.com ไม่ต้องง้อ Google Drive ไม่ต้อง Openload ขั้นเทพมาก

เขาใช้อะไรหรอครับ
cdn เลยครับ ยิงลิงค์ตรงๆ กันไปเลย เนื้อที่ไม่จำกัด แต่ท่านจะบริหาร แบนวิช ได้ดีแค่ไหน

เว็บท่านใช้ g drive ใช่ไหมครับเเล้วใช้ของเจ้าไหนหรอครับ proxy ราคาเเพงไหมหรอครับ
ใช้อยู่ตอนนี้ไม่มีปัญหาเลย ป้องกันโหลด ล็อคโดเมน

จะซื้อใช้ที่ไหนหรอครับ ราคาคิดยังไงหรอครับ ^^

ติดต่อได้ที่นี่เลยครับ ekcdn.me ระบบเทพมาก บอกเลย
ใช้อยู่แจ่มจริงๆ ใช้มานานแล้วครับ ปัญหาไม่มีเลย ไม่เชื่อดูตามเว็ปลายเซ็นต์ได้เยย


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: Siamon ที่ 02 กุมภาพันธ์ 2018, 15:49:07
freemoviethai.com เว็บนี้ เจ๋งครับ มีไม่กี่เว็บในไทยที่ทำแบบนี้ได้ ส่วนมากจะเป็นเว็บของเขาหมด รู้สึกว่า 3-4 เว็บที่เขาทำ 


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: jakkagi ที่ 02 กุมภาพันธ์ 2018, 16:03:00
ถ้าจะทำเว็บจำพวกคลิป หรือว่าดูหนัง มันต้องแบบนี้ครับ
freemoviethai.com ไม่ต้องง้อ Google Drive ไม่ต้อง Openload ขั้นเทพมาก

เขาใช้อะไรหรอครับ
cdn เลยครับ ยิงลิงค์ตรงๆ กันไปเลย เนื้อที่ไม่จำกัด แต่ท่านจะบริหาร แบนวิช ได้ดีแค่ไหน

เว็บท่านใช้ g drive ใช่ไหมครับเเล้วใช้ของเจ้าไหนหรอครับ proxy ราคาเเพงไหมหรอครับ
ใช้อยู่ตอนนี้ไม่มีปัญหาเลย ป้องกันโหลด ล็อคโดเมน

จะซื้อใช้ที่ไหนหรอครับ ราคาคิดยังไงหรอครับ ^^

อยากทราบด้วยครับ


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: iammee ที่ 02 กุมภาพันธ์ 2018, 16:09:12
freemoviethai.com เว็บนี้ เจ๋งครับ มีไม่กี่เว็บในไทยที่ทำแบบนี้ได้ ส่วนมากจะเป็นเว็บของเขาหมด รู้สึกว่า 3-4 เว็บที่เขาทำ 
(https://i.gyazo.com/657a8b092207353ec9016d98a185c677.png)
 :-X ที่ทำงาน บล็อคพอร์ตไว้ก็เรียบร้อย


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: minigoood ที่ 02 กุมภาพันธ์ 2018, 16:43:22
ถ้าจะทำเว็บจำพวกคลิป หรือว่าดูหนัง มันต้องแบบนี้ครับ
freemoviethai.com ไม่ต้องง้อ Google Drive ไม่ต้อง Openload ขั้นเทพมาก

เขาใช้อะไรหรอครับ
cdn เลยครับ ยิงลิงค์ตรงๆ กันไปเลย เนื้อที่ไม่จำกัด แต่ท่านจะบริหาร แบนวิช ได้ดีแค่ไหน

เว็บท่านใช้ g drive ใช่ไหมครับเเล้วใช้ของเจ้าไหนหรอครับ proxy ราคาเเพงไหมหรอครับ
ใช้อยู่ตอนนี้ไม่มีปัญหาเลย ป้องกันโหลด ล็อคโดเมน

จะซื้อใช้ที่ไหนหรอครับ ราคาคิดยังไงหรอครับ ^^

อยากทราบด้วยครับ
ลองมาคุยที่เพจในลายเซ็นต์ได้ครับ


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: entraining ที่ 08 กุมภาพันธ์ 2019, 15:37:15
ถ้าจะทำเว็บจำพวกคลิป หรือว่าดูหนัง มันต้องแบบนี้ครับ
freemoviethai.com ไม่ต้องง้อ Google Drive ไม่ต้อง Openload ขั้นเทพมาก

เขาใช้อะไรหรอครับ
cdn เลยครับ ยิงลิงค์ตรงๆ กันไปเลย เนื้อที่ไม่จำกัด แต่ท่านจะบริหาร แบนวิช ได้ดีแค่ไหน

เว็บท่านใช้ g drive ใช่ไหมครับเเล้วใช้ของเจ้าไหนหรอครับ proxy ราคาเเพงไหมหรอครับ
ใช้อยู่ตอนนี้ไม่มีปัญหาเลย ป้องกันโหลด ล็อคโดเมน

จะซื้อใช้ที่ไหนหรอครับ ราคาคิดยังไงหรอครับ ^^

อยากทราบด้วยครับ
ลองมาคุยที่เพจในลายเซ็นต์ได้ครับ

ถ้าเราจะเก็บไฟล์ mp4 บน Mediafire แล้วยิงมาเข้าที่ jw player นี่น่าสนใจใหมครับ


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: virussman ที่ 09 กุมภาพันธ์ 2019, 15:12:13
สคริปนี้เก่าแล้วมีแจกตามเว็บทั่วไป ถือว่าเป็นตัวครูสำหรับคนเริ่มศึกษา พวก curl,file_get_contents, เคยใช้นานแล้ว ไม่รู้เดี๋ยวนี้ จะยังใช้ได้หรือป่าวยังไม่ได้ทดสอบ ลองเอาไปศึกษาดูครับ

index.php
โค๊ด:
<?php
function curl($url)
{
$ch = @curl_init();
curl_setopt($chCURLOPT_URL$url);
$head[] = "Connection: keep-alive";
$head[] = "Keep-Alive: 300";
$head[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$head[] = "Accept-Language: en-us,en;q=0.5";
curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36');
curl_setopt($chCURLOPT_HTTPHEADER$head);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_SSL_VERIFYHOSTFALSE);
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
curl_setopt($chCURLOPT_TIMEOUT60);
curl_setopt($chCURLOPT_CONNECTTIMEOUT60);
curl_setopt($chCURLOPT_FOLLOWLOCATIONTRUE);
curl_setopt($chCURLOPT_HTTPHEADER, array('Expect:'));
$page curl_exec($ch);
curl_close($ch);
return $page;
}

if(isset(
$_GET['link'])) {
$get curl($_GET['link']);
$data explode('urlu003d'$get);
$link explode('=m'$data[1]);
$decode urldecode($link[0]);
$count count($data);
if($count == 5) {
$v1080p $decode.'=m37<br>';
$v720p $decode.'=m22<br>';
$v360p $decode.'=m18<br>';
echo $v1080p.$v720p.$v360p;
} elseif($count == 4) {
$v720p $decode.'=m22<br>';
$v360p $decode.'=m18<br>';
echo $v720p.$v360p;
} elseif($count == 3) {
$v360p $decode.'=m18<br>';
echo $v360p;
}
}
?>

-----------------------------------------------------
อีกสคริป มี2ไฟล์ Getlink Drive

index.php

โค๊ด:
<?php

error_reporting
(0);
include 
"dom.php";

function 
getlink($id)
{
$link "https://drive.google.com/uc?export=download&id=$id";
$ch curl_init();
curl_setopt ($chCURLOPT_URL$link);
curl_setopt($chCURLOPT_HEADERTRUE);
curl_setopt($chCURLOPT_SSL_VERIFYPEER,false);
curl_setopt($chCURLOPT_SSL_VERIFYHOST,false);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_COOKIEJARdirname(__FILE__) . "/google.mp3");
curl_setopt($chCURLOPT_COOKIEFILEdirname(__FILE__) . "/google.mp3");

$page curl_exec($ch);
$chuyen =  locheader($page);
if ($chuyen != ""){

} else {
$html str_get_html($page);
$link urldecode(trim($html->find('a[id=uc-download-link]',0)->href));
$tmp explode("confirm=",$link);
$tmp2 explode("&",$tmp[1]);
$confirm $tmp2[0];
$linkdowngoc "https://drive.google.com/uc?export=download&id=$id&confirm=$confirm";
curl_setopt ($chCURLOPT_URL$linkdowngoc);
curl_setopt($chCURLOPT_HEADERTRUE);
curl_setopt($chCURLOPT_SSL_VERIFYPEER,false);
curl_setopt($chCURLOPT_SSL_VERIFYHOST,false);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_COOKIEJARdirname(__FILE__) . "/google.mp3");
curl_setopt($chCURLOPT_COOKIEFILEdirname(__FILE__) . "/google.mp3");

// Getting binary data
$page curl_exec($ch);
$chuyen =  locheader($page);

}
curl_close($ch);
return 
$chuyen
}
function 
locheader($page)
{
$temp explode("rn"$page);
foreach ($temp as $item) {
$temp2 explode(": "$item);
$infoheader[$temp2[0]] = $temp2[1];
}
$location $infoheader['Location'];
return $location;
}

if(
$_POST['submit'] != "")
{
$url $_POST['url'];
$tmp explode("file/d/",$url);
$tmp2 explode("/",$tmp[1]);
$id $tmp2[0];
$linkdown trim(getlink($id));
}




?>

<html>
<head>
<title>Get link Google Drive</title>
</head>
<body>
<form action="" method="POST">

<input type="text" size="50" name="url" value="https://drive.google.com/file/d/0BxG6kVC7OXgrYW1DVVVuZTZndmM/view?usp=sharing"/>
<input type="submit" value="GET" name="submit" />
</form>
<br />
<?php echo $linkdown;?>
</body>
</html>

dom.php

แก้ไขโพสยาวเกิน dom.php อยู่เม้นด่านล่างครับ ***


หัวข้อ: Re: **อยากใส่ Script Google Drive Proxy Player ในเว็บ**
เริ่มหัวข้อโดย: virussman ที่ 09 กุมภาพันธ์ 2019, 15:14:26
dom.php
โค๊ด:
<?php

define
(&#39;HDOM_TYPE_ELEMENT&#39;, 1);
define(&#39;HDOM_TYPE_COMMENT&#39;, 2);
define(&#39;HDOM_TYPE_TEXT&#39;,    3);
define(&#39;HDOM_TYPE_ENDTAG&#39;,  4);
define(&#39;HDOM_TYPE_ROOT&#39;,    5);
define(&#39;HDOM_TYPE_UNKNOWN&#39;, 6);
define(&#39;HDOM_QUOTE_DOUBLE&#39;, 0);
define(&#39;HDOM_QUOTE_SINGLE&#39;, 1);
define(&#39;HDOM_QUOTE_NO&#39;,     3);
define(&#39;HDOM_INFO_BEGIN&#39;,   0);
define(&#39;HDOM_INFO_END&#39;,     1);
define(&#39;HDOM_INFO_QUOTE&#39;,   2);
define(&#39;HDOM_INFO_SPACE&#39;,   3);
define(&#39;HDOM_INFO_TEXT&#39;,    4);
define(&#39;HDOM_INFO_INNER&#39;,   5);
define(&#39;HDOM_INFO_OUTER&#39;,   6);
define(&#39;HDOM_INFO_ENDSPACE&#39;,7);

// helper functions
// -----------------------------------------------------------------------------
// get html dom form file


function file_get_html() {
    
$dom = new simple_html_dom;
    
$args func_get_args();
    
$dom->load(call_user_func_array(&#39;file_get_contents&#39;, $args), true);
    
return $dom;
}

// get html dom form string
function str_get_html($str$lowercase=true) {
    
$dom = new simple_html_dom;
    
$dom->load($str$lowercase);
    return 
$dom;
}

// dump html dom tree
function dump_html_tree($node$show_attr=true$deep=0) {
    
$lead str_repeat(&#39;    &#39;, $deep);
    
echo $lead.$node->tag;
    if (
$show_attr && count($node->attr)>0) {
        echo &
#39;(&#39;;
        
foreach($node->attr as $k=>$v)
            echo 
"[$k]=>"".$node->$k.&#39;", &#39;;
        
echo &#39;)&#39;;
    
}
    echo 
"n";

    foreach(
$node->nodes as $c)
        
dump_html_tree($c$show_attr$deep 1);
}

// get dom form file (deprecated)
function file_get_dom() {
    
$dom = new simple_html_dom;
    
$args func_get_args();
    
$dom->load(call_user_func_array(&#39;file_get_contents&#39;, $args), true);
    
return $dom;
}

// get dom form string (deprecated)
function str_get_dom($str$lowercase=true) {
    
$dom = new simple_html_dom;
    
$dom->load($str$lowercase);
    return 
$dom;
}

// simple html dom node
// -----------------------------------------------------------------------------
class simple_html_dom_node {
    public 
$nodetype HDOM_TYPE_TEXT;
    public 
$tag = &#39;text&#39;;
    
public $attr = array();
    public 
$children = array();
    public 
$nodes = array();
    public 
$parent null;
    public 
$_ = array();
    private 
$dom null;

    function 
__construct($dom) {
        
$this->dom $dom;
        
$dom->nodes[] = $this;
    }

    function 
__destruct() {
        
$this->clear();
    }

    function 
__toString() {
        return 
$this->outertext();
    }

    
// clean up memory due to php5 circular references memory leak...
    
function clear() {
        
$this->dom null;
        
$this->nodes null;
        
$this->parent null;
        
$this->children null;
    }
    
    
// dump node&#39;s tree
    
function dump($show_attr=true) {
        
dump_html_tree($this$show_attr);
    }

    
// returns the parent of node
    
function parent() {
        return 
$this->parent;
    }

    
// returns children of node
    
function children($idx=-1) {
        if (
$idx===-1) return $this->children;
        if (isset(
$this->children[$idx])) return $this->children[$idx];
        return 
null;
    }

    
// returns the first child of node
    
function first_child() {
        if (
count($this->children)>0) return $this->children[0];
        return 
null;
    }

    
// returns the last child of node
    
function last_child() {
        if ((
$count=count($this->children))>0) return $this->children[$count-1];
        return 
null;
    }

    
// returns the next sibling of node    
    
function next_sibling() {
        if (
$this->parent===null) return null;
        
$idx 0;
        
$count count($this->parent->children);
        while (
$idx<$count && $this!==$this->parent->children[$idx])
              
$idx;
        if (  
$idx>=$count) return null;
        return 
$this->parent->children[$idx];
    }

    
// returns the previous sibling of node
    
function prev_sibling() {
        if (
$this->parent===null) return null;
        
$idx 0;
        
$count count($this->parent->children);
        while (
$idx<$count && $this!==$this->parent->children[$idx])
              
$idx;
        if (--
$idx<0) return null;
        return 
$this->parent->children[$idx];
    }

    
// get dom node&#39;s inner html
    
function innertext() {
        if (isset(
$this->_[HDOM_INFO_INNER])) return $this->_[HDOM_INFO_INNER];
        if (isset(
$this->_[HDOM_INFO_TEXT])) return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]);

        
$ret = &#39;&#39;;
        
foreach($this->nodes as $n)
            
$ret .= $n->outertext();
        return 
$ret;
    }

    
// get dom node&#39;s outer text (with tag)
    
function outertext() {
        if (
$this->tag===&#39;root&#39;) return $this->innertext();

        // trigger callback
        
if ($this->dom->callback!==null)
            
call_user_func_array($this->dom->callback, array($this));

        if (isset(
$this->_[HDOM_INFO_OUTER])) return $this->_[HDOM_INFO_OUTER];
        if (isset(
$this->_[HDOM_INFO_TEXT])) return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]);

        
// render begin tag
        
$ret $this->dom->nodes[$this->_[HDOM_INFO_BEGIN]]->makeup();

        
// render inner text
        
if (isset($this->_[HDOM_INFO_INNER]))
            
$ret .= $this->_[HDOM_INFO_INNER];
        else {
            foreach(
$this->nodes as $n)
                
$ret .= $n->outertext();
        }

        
// render end tag
        
if(isset($this->_[HDOM_INFO_END]) && $this->_[HDOM_INFO_END]!=0)
            
$ret .= &#39;</&#39;.$this->tag.&#39;>&#39;;
        
return $ret;
    }

    
// get dom node&#39;s plain text
    
function text() {
        if (isset(
$this->_[HDOM_INFO_INNER])) return $this->_[HDOM_INFO_INNER];
        switch (
$this->nodetype) {
            case 
HDOM_TYPE_TEXT: return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]);
            case 
HDOM_TYPE_COMMENT: return &#39;&#39;;
            
case HDOM_TYPE_UNKNOWN: return &#39;&#39;;
        
}
        if (
strcasecmp($this->tag, &#39;script&#39;)===0) return &#39;&#39;;
        
if (strcasecmp($this->tag, &#39;style&#39;)===0) return &#39;&#39;;

        
$ret = &#39;&#39;;
        
foreach($this->nodes as $n)
            
$ret .= $n->text();
        return 
$ret;
    }
    
    function 
xmltext() {
        
$ret $this->innertext();
        
$ret str_ireplace(&#39;<![CDATA[&#39;, &#39;&#39;, $ret);
        
$ret str_replace(&#39;]]>&#39;, &#39;&#39;, $ret);
        
return $ret;
    }

    
// build node&#39;s text with tag
    
function makeup() {
        
// text, comment, unknown
        
if (isset($this->_[HDOM_INFO_TEXT])) return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]);

        
$ret = &#39;<&#39;.$this->tag;
        
$i = -1;

        foreach(
$this->attr as $key=>$val) {
              
$i;

            
// skip removed attribute
            
if ($val===null || $val===false)
                continue;

            
$ret .= $this->_[HDOM_INFO_SPACE][$i][0];
            
//no value attr: nowrap, checked selected...
            
if ($val===true)
                
$ret .= $key;
            else {
                switch(
$this->_[HDOM_INFO_QUOTE][$i]) {
                    case 
HDOM_QUOTE_DOUBLE$quote = &#39;"&#39;; break;
                    
case HDOM_QUOTE_SINGLE$quote = &#39;&#39;&#39;; break;
                    
default: $quote = &#39;&#39;;
                
}
                
$ret .= $key.$this->_[HDOM_INFO_SPACE][$i][1].&#39;=&#39;.$this->_[HDOM_INFO_SPACE][$i][2].$quote.$val.$quote;
            
}
        }
        
$ret $this->dom->restore_noise($ret);
        return 
$ret $this->_[HDOM_INFO_ENDSPACE] . &#39;>&#39;;
    
}

    
// find elements by css selector
    
function find($selector$idx=null) {
        
$selectors $this->parse_selector($selector);
        if ((
$count=count($selectors))===0) return array();
        
$found_keys = array();

        
// find each selector
        
for ($c=0$c<$count;   $c) {
            if ((
$levle=count($selectors[0]))===0) return array();
            if (!isset(
$this->_[HDOM_INFO_BEGIN])) return array();

            
$head = array($this->_[HDOM_INFO_BEGIN]=>1);

            
// handle descendant selectors, no recursive!
            
for ($l=0$l<$levle;   $l) {
                
$ret = array();
                foreach(
$head as $k=>$v) {
                    
$n = ($k===-1) ? $this->dom->root $this->dom->nodes[$k];
                    
$n->seek($selectors[$c][$l], $ret);
                }
                
$head $ret;
            }

            foreach(
$head as $k=>$v) {
                if (!isset(
$found_keys[$k]))
                    
$found_keys[$k] = 1;
            }
        }

        
// sort keys
        
ksort($found_keys);

        
$found = array();
        foreach(
$found_keys as $k=>$v)
            
$found[] = $this->dom->nodes[$k];

        
// return nth-element or array
        
if (is_null($idx)) return $found;
else if ($idx<0$idx count($found)   $idx;
        return (isset(
$found[$idx])) ? $found[$idx] : null;
    }

    
// seek for given conditions
    
protected function seek($selector, &$ret) {
        list(
$tag$key$val$exp$no_key) = $selector;

        
// xpath index
        
if ($tag && $key && is_numeric($key)) {
            
$count 0;
            foreach (
$this->children as $c) {
                if (
$tag===&#39;*&#39; || $tag===$c->tag) {
                    
if (  $count==$key) {
                        
$ret[$c->_[HDOM_INFO_BEGIN]] = 1;
                        return;
                    }
                }
            } 
            return;
        }

        
$end = (!empty($this->_[HDOM_INFO_END])) ? $this->_[HDOM_INFO_END] : 0;
        if (
$end==0) {
            
$parent $this->parent;
            while (!isset(
$parent->_[HDOM_INFO_END]) && $parent!==null) {
                
$end -= 1;
                
$parent $parent->parent;
            }
            
$end  $parent->_[HDOM_INFO_END];
        }

        for(
$i=$this->_[HDOM_INFO_BEGIN1$i<$end;   $i) {
            
$node $this->dom->nodes[$i];
            
$pass true;

            if (
$tag===&#39;*&#39; && !$key) {
                
if (in_array($node$this->childrentrue))
                    
$ret[$i] = 1;
                continue;
            }

            
// compare tag
            
if ($tag && $tag!=$node->tag && $tag!==&#39;*&#39;) {$pass=false;}
            // compare key
            
if ($pass && $key) {
                if (
$no_key) {
                    if (isset(
$node->attr[$key])) $pass=false;
                }
                else if (!isset(
$node->attr[$key])) $pass=false;
            }
            
// compare value
            
if ($pass && $key && $val  && $val!==&#39;*&#39;) {
                
$check $this->match($exp$val$node->attr[$key]);
                
// handle multiple class
                
if (!$check && strcasecmp($key, &#39;class&#39;)===0) {
                    
foreach(explode(&#39; &#39;,$node->attr[$key]) as $k) {
                        
$check $this->match($exp$val$k);
                        if (
$check) break;
                    }
                }
                if (!
$check$pass false;
            }
            if (
$pass$ret[$i] = 1;
            unset(
$node);
        }
    }

    protected function 
match($exp$pattern$value) {
        switch (
$exp) {
            case &
#39;=&#39;:
                
return ($value===$pattern);
            case &
#39;!=&#39;:
                
return ($value!==$pattern);
            case &
#39;^=&#39;:
                
return preg_match("/^".preg_quote($pattern,&#39;/&#39;)."/", $value);
            
case &#39;$=&#39;:
                
return preg_match("/".preg_quote($pattern,&#39;/&#39;)."$/", $value);
            
case &#39;*=&#39;:
                
if ($pattern[0]==&#39;/&#39;)
                    
return preg_match($pattern$value);
                return 
preg_match("/".$pattern."/i"$value);
        }
        return 
false;
    }

    protected function 
parse_selector($selector_string) {
        
// pattern of CSS selectors, modified from mootools
        
$pattern "/([w-:*]*)(?:#([w-] )|.([w-] ))?(?:[@?(!?[w-] )(?:([!*^$]?=)["&#39;]?(.*?)["&#39;]?)?])?([/, ] )/is";
        
preg_match_all($patterntrim($selector_string).&#39; &#39;, $matches, PREG_SET_ORDER);
        
$selectors = array();
        
$result = array();
        
//print_r($matches);

        
foreach ($matches as $m) {
            
$m[0] = trim($m[0]);
            if (
$m[0]===&#39;&#39; || $m[0]===&#39;/&#39; || $m[0]===&#39;//&#39;) continue;
            // for borwser grnreated xpath
            
if ($m[1]===&#39;tbody&#39;) continue;

            
list($tag$key$val$exp$no_key) = array($m[1], nullnull, &#39;=&#39;, false);
            
if(!empty($m[2])) {$key=&#39;id&#39;; $val=$m[2];}
            
if(!empty($m[3])) {$key=&#39;class&#39;; $val=$m[3];}
            
if(!empty($m[4])) {$key=$m[4];}
            if(!empty(
$m[5])) {$exp=$m[5];}
            if(!empty(
$m[6])) {$val=$m[6];}

            
// convert to lowercase
            
if ($this->dom->lowercase) {$tag=strtolower($tag); $key=strtolower($key);}
            
//elements that do NOT have the specified attribute
            
if (isset($key[0]) && $key[0]===&#39;!&#39;) {$key=substr($key, 1); $no_key=true;}

            
$result[] = array($tag$key$val$exp$no_key);
            if (
trim($m[7])===&#39;,&#39;) {
                
$selectors[] = $result;
                
$result = array();
            }
        }
        if (
count($result)>0)
            
$selectors[] = $result;
        return 
$selectors;
    }

    function 
__get($name) {
        if (isset(
$this->attr[$name])) return $this->attr[$name];
        switch(
$name) {
            case &
#39;outertext&#39;: return $this->outertext();
            
case &#39;innertext&#39;: return $this->innertext();
            
case &#39;plaintext&#39;: return $this->text();
            
case &#39;xmltext&#39;: return $this->xmltext();
            
default: return array_key_exists($name$this->attr);
        }
    }

    function 
__set($name$value) {
        switch(
$name) {
            case &
#39;outertext&#39;: return $this->_[HDOM_INFO_OUTER] = $value;
            
case &#39;innertext&#39;:
                
if (isset($this->_[HDOM_INFO_TEXT])) return $this->_[HDOM_INFO_TEXT] = $value;
                return 
$this->_[HDOM_INFO_INNER] = $value;
        }
        if (!isset(
$this->attr[$name])) {
            
$this->_[HDOM_INFO_SPACE][] = array(&#39; &#39;, &#39;&#39;, &#39;&#39;); 
            
$this->_[HDOM_INFO_QUOTE][] = HDOM_QUOTE_DOUBLE;
        }
        
$this->attr[$name] = $value;
    }

    function 
__isset($name) {
        switch(
$name) {
            case &
#39;outertext&#39;: return true;
            
case &#39;innertext&#39;: return true;
            
case &#39;plaintext&#39;: return true;
        
}
        
//no value attr: nowrap, checked selected...
        
return (array_key_exists($name$this->attr)) ? true : isset($this->attr[$name]);
    }

    function 
__unset($name) {
        if (isset(
$this->attr[$name]))
            unset(
$this->attr[$name]);
    }

    
// camel naming conventions
    
function getAllAttributes() {return $this->attr;}
    function 
getAttribute($name) {return $this->__get($name);}
    function 
setAttribute($name$value) {$this->__set($name$value);}
    function 
hasAttribute($name) {return $this->__isset($name);}
    function 
removeAttribute($name) {$this->__set($namenull);}
    function 
getElementById($id) {return $this->find("#$id"0);}
    function 
getElementsById($id$idx=null) {return $this->find("#$id"$idx);}
    function 
getElementByTagName($name) {return $this->find($name0);}
    function 
getElementsByTagName($name$idx=null) {return $this->find($name$idx);}
    function 
parentNode() {return $this->parent();}
    function 
childNodes($idx=-1) {return $this->children($idx);}
    function 
firstChild() {return $this->first_child();}
    function 
lastChild() {return $this->last_child();}
    function 
nextSibling() {return $this->next_sibling();}
    function 
previousSibling() {return $this->prev_sibling();}
}

// simple html dom parser
// -----------------------------------------------------------------------------
class simple_html_dom {
    public 
$root null;
    public 
$nodes = array();
    public 
$callback null;
    public 
$lowercase false;
    protected 
$pos;
    protected 
$doc;
    protected 
$char;
    protected 
$size;
    protected 
$cursor;
    protected 
$parent;
    protected 
$noise = array();
    protected 
$token_blank " trn";
    protected 
$token_equal = &#39; =/>&#39;;
    
protected $token_slash " />rnt";
    protected 
$token_attr = &#39; >&#39;;
    // use isset instead of in_array, performance boost about 30%...
    
protected $self_closing_tags = array(&#39;img&#39;=>1, &#39;br&#39;=>1, &#39;input&#39;=>1, &#39;meta&#39;=>1, &#39;link&#39;=>1, &#39;hr&#39;=>1, &#39;base&#39;=>1, &#39;embed&#39;=>1, &#39;spacer&#39;=>1);
    
protected $block_tags = array(&#39;root&#39;=>1, &#39;body&#39;=>1, &#39;form&#39;=>1, &#39;div&#39;=>1, &#39;span&#39;=>1, &#39;table&#39;=>1);
    
protected $optional_closing_tags = array(
        &
#39;tr&#39;=>array(&#39;tr&#39;=>1, &#39;td&#39;=>1, &#39;th&#39;=>1),
        
&#39;th&#39;=>array(&#39;th&#39;=>1),
        
&#39;td&#39;=>array(&#39;td&#39;=>1),
        
&#39;li&#39;=>array(&#39;li&#39;=>1),
        
&#39;dt&#39;=>array(&#39;dt&#39;=>1, &#39;dd&#39;=>1),
        
&#39;dd&#39;=>array(&#39;dd&#39;=>1, &#39;dt&#39;=>1),
        
&#39;dl&#39;=>array(&#39;dd&#39;=>1, &#39;dt&#39;=>1),
        
&#39;p&#39;=>array(&#39;p&#39;=>1),
        
&#39;nobr&#39;=>array(&#39;nobr&#39;=>1),
    
);

    function 
__construct($str=null) {
        if (
$str) {
            if (
preg_match("/^http:///i",$str) || is_file($str)) 
                
$this->load_file($str); 
            else
                
$this->load($str);
        }
    }

    function 
__destruct() {
        
$this->clear();
    }

    
// load html from string
    
function load($str$lowercase=true) {
        
// prepare
        
$this->prepare($str$lowercase);
        
// strip out comments
        
$this->remove_noise("&#39;<!--(.*?)-->&#39;is");
        
// strip out cdata
        
$this->remove_noise("&#39;<![CDATA[(.*?)]]>&#39;is"true);
        
// strip out <style> tags
        
$this->remove_noise("&#39;<s*style[^>]*[^/]>(.*?)<s*/s*styles*>&#39;is");
        
$this->remove_noise("&#39;<s*styles*>(.*?)<s*/s*styles*>&#39;is");
        
// strip out <script> tags
        
$this->remove_noise("&#39;<s*script[^>]*[^/]>(.*?)<s*/s*scripts*>&#39;is");
        
$this->remove_noise("&#39;<s*scripts*>(.*?)<s*/s*scripts*>&#39;is");
        
// strip out preformatted tags
        
$this->remove_noise("&#39;<s*(?:code)[^>]*>(.*?)<s*/s*(?:code)s*>&#39;is");
        
// strip out server side scripts
        
$this->remove_noise("&#39;(<?)(.*?)(?>
)'s", true);
        // strip smarty scripts
        $this->remove_noise("'({w)(.*?)(})'s", true);

        // parsing
        while ($this->parse());
        // end
        $this->root->_[HDOM_INFO_END] = $this->cursor;
    }

    // load html from file
    function load_file() {
        $args = func_get_args();
        $this->load(call_user_func_array('file_get_contents', $args), true);
    }

    // set callback function
    function set_callback($function_name) {
        $this->callback = $function_name;
    }

    // remove callback function
    function remove_callback() {
        $this->callback = null;
    }

    // save dom as string
    function save($filepath='') {
        $ret = $this->root->innertext();
        if ($filepath!=='') file_put_contents($filepath, $ret);
        return $ret;
    }

    // find dom node by css selector
    function find($selector, $idx=null) {
        return $this->root->find($selector, $idx);
    }

    // clean up memory due to php5 circular references memory leak...
    function clear() {
        foreach($this->nodes as $n) {$n->clear(); $n = null;}
        if (isset($this->parent)) {$this->parent->clear(); unset($this->parent);}
        if (isset($this->root)) {$this->root->clear(); unset($this->root);}
        unset($this->doc);
        unset($this->noise);
    }
   
    function dump($show_attr=true) {
        $this->root->dump($show_attr);
    }

    // prepare HTML data and init everything
    protected function prepare($str, $lowercase=true) {
        $this->clear();
        $this->doc = $str;
        $this->pos = 0;
        $this->cursor = 1;
        $this->noise = array();
        $this->nodes = array();
        $this->lowercase = $lowercase;
        $this->root = new simple_html_dom_node($this);
        $this->root->tag = 'root';
        $this->root->_[HDOM_INFO_BEGIN] = -1;
        $this->root->nodetype = HDOM_TYPE_ROOT;
        $this->parent = $this->root;
        // set the length of content
        $this->size = strlen($str);
        if ($this->size>0) $this->char = $this->doc[0];
    }

    // parse html content
    protected function parse() {
        if (($s = $this->copy_until_char('<'))==='')
            return $this->read_tag();

        // text
        $node = new simple_html_dom_node($this);
          $this->cursor;
        $node->_[HDOM_INFO_TEXT] = $s;
        $this->link_nodes($node, false);
        return true;
    }

    // read tag info
    protected function read_tag() {
        if ($this->char!=='<') {
            $this->root->_[HDOM_INFO_END] = $this->cursor;
            return false;
        }
        $begin_tag_pos = $this->pos;
        $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next

        // end tag
        if ($this->char==='/') {
            $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
            $this->skip($this->token_blank_t);
            $tag = $this->copy_until_char('>');

            // skip attributes in end tag
            if (($pos = strpos($tag, ' '))!==false)
                $tag = substr($tag, 0, $pos);

            $parent_lower = strtolower($this->parent->tag);
            $tag_lower = strtolower($tag);

            if ($parent_lower!==$tag_lower) {
                if (isset($this->optional_closing_tags[$parent_lower]) && isset($this->block_tags[$tag_lower])) {
                    $this->parent->_[HDOM_INFO_END] = 0;
                    $org_parent = $this->parent;

                    while (($this->parent->parent) && strtolower($this->parent->tag)!==$tag_lower)
                        $this->parent = $this->parent->parent;

                    if (strtolower($this->parent->tag)!==$tag_lower) {
                        $this->parent = $org_parent; // restore origonal parent
                        if ($this->parent->parent) $this->parent = $this->parent->parent;
                        $this->parent->_[HDOM_INFO_END] = $this->cursor;
                        return $this->as_text_node($tag);
                    }
                }
                else if (($this->parent->parent) && isset($this->block_tags[$tag_lower])) {
                    $this->parent->_[HDOM_INFO_END] = 0;
                    $org_parent = $this->parent;

                    while (($this->parent->parent) && strtolower($this->parent->tag)!==$tag_lower)
                        $this->parent = $this->parent->parent;

                    if (strtolower($this->parent->tag)!==$tag_lower) {
                        $this->parent = $org_parent; // restore origonal parent
                        $this->parent->_[HDOM_INFO_END] = $this->cursor;
                        return $this->as_text_node($tag);
                    }
                }
                else if (($this->parent->parent) && strtolower($this->parent->parent->tag)===$tag_lower) {
                    $this->parent->_[HDOM_INFO_END] = 0;
                    $this->parent = $this->parent->parent;
                }
                else
                    return $this->as_text_node($tag);
            }

            $this->parent->_[HDOM_INFO_END] = $this->cursor;
            if ($this->parent->parent) $this->parent = $this->parent->parent;

            $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
            return true;
        }

        $node = new simple_html_dom_node($this);
        $node->_[HDOM_INFO_BEGIN] = $this->cursor;
          $this->cursor;
        $tag = $this->copy_until($this->token_slash);

        // doctype, cdata & comments...
        if (isset($tag[0]) && $tag[0]==='!') {
            $node->_[HDOM_INFO_TEXT] = '<' . $tag . $this->copy_until_char('>');

            if (isset($tag[2]) && $tag[1]==='-' && $tag[2]==='-') {
                $node->nodetype = HDOM_TYPE_COMMENT;
                $node->tag = 'comment';
            } else {
                $node->nodetype = HDOM_TYPE_UNKNOWN;
                $node->tag = 'unknown';
            }

            if ($this->char==='>') $node->_[HDOM_INFO_TEXT].='>';
            $this->link_nodes($node, true);
            $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
            return true;
        }

        // text
        if ($pos=strpos($tag, '<')!==false) {
            $tag = '<' . substr($tag, 0, -1);
            $node->_[HDOM_INFO_TEXT] = $tag;
            $this->link_nodes($node, false);
            $this->char = $this->doc[--$this->pos]; // prev
            return true;
        }

        if (!preg_match("/^[w-:] $/", $tag)) {
            $node->_[HDOM_INFO_TEXT] = '<' . $tag . $this->copy_until('<>');
            if ($this->char==='<') {
                $this->link_nodes($node, false);
                return true;
            }

            if ($this->char==='>') $node->_[HDOM_INFO_TEXT].='>';
            $this->link_nodes($node, false);
            $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
            return true;
        }

        // begin tag
        $node->nodetype = HDOM_TYPE_ELEMENT;
        $tag_lower = strtolower($tag);
        $node->tag = ($this->lowercase) ? $tag_lower : $tag;

        // handle optional closing tags
        if (isset($this->optional_closing_tags[$tag_lower]) ) {
            while (isset($this->optional_closing_tags[$tag_lower][strtolower($this->parent->tag)])) {
                $this->parent->_[HDOM_INFO_END] = 0;
                $this->parent = $this->parent->parent;
            }
            $node->parent = $this->parent;
        }

        $guard = 0; // prevent infinity loop
        $space = array($this->copy_skip($this->token_blank), '', '');

        // attributes
        do {
            if ($this->char!==null && $space[0]==='') break;
            $name = $this->copy_until($this->token_equal);
            if($guard===$this->pos) {
                $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
                continue;
            }
            $guard = $this->pos;

            // handle endless '<'
            if($this->pos>=$this->size-1 && $this->char!=='>') {
                $node->nodetype = HDOM_TYPE_TEXT;
                $node->_[HDOM_INFO_END] = 0;
                $node->_[HDOM_INFO_TEXT] = '<'.$tag . $space[0] . $name;
                $node->tag = 'text';
                $this->link_nodes($node, false);
                return true;
            }

            // handle mismatch '<'
            if($this->doc[$this->pos-1]=='<') {
                $node->nodetype = HDOM_TYPE_TEXT;
                $node->tag = 'text';
                $node->attr = array();
                $node->_[HDOM_INFO_END] = 0;
                $node->_[HDOM_INFO_TEXT] = substr($this->doc, $begin_tag_pos, $this->pos-$begin_tag_pos-1);
                $this->pos -= 2;
                $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
                $this->link_nodes($node, false);
                return true;
            }

            if ($name!=='/' && $name!=='') {
                $space[1] = $this->copy_skip($this->token_blank);
                $name = $this->restore_noise($name);
                if ($this->lowercase) $name = strtolower($name);
                if ($this->char==='=') {
                    $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
                    $this->parse_attr($node, $name, $space);
                }
                else {
                    //no value attr: nowrap, checked selected...
                    $node->_[HDOM_INFO_QUOTE][] = HDOM_QUOTE_NO;
                    $node->attr[$name] = true;
                    if ($this->char!='>') $this->char = $this->doc[--$this->pos]; // prev
                }
                $node->_[HDOM_INFO_SPACE][] = $space;
                $space = array($this->copy_skip($this->token_blank), '', '');
            }
            else
                break;
        } while($this->char!=='>' && $this->char!=='/');

        $this->link_nodes($node, true);
        $node->_[HDOM_INFO_ENDSPACE] = $space[0];

        // check self closing
        if ($this->copy_until_char_escape('>')==='/') {
            $node->_[HDOM_INFO_ENDSPACE] .= '/';
            $node->_[HDOM_INFO_END] = 0;
        }
        else {
            // reset parent
            if (!isset($this->self_closing_tags[strtolower($node->tag)])) $this->parent = $node;
        }
        $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
        return true;
    }

    // parse attributes
    protected function parse_attr($node, $name, &$space) {
        $space[2] = $this->copy_skip($this->token_blank);
        switch($this->char) {
            case '"':
                $node->_[HDOM_INFO_QUOTE][] = HDOM_QUOTE_DOUBLE;
                $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
                $node->attr[$name] = $this->restore_noise($this->copy_until_char_escape('"'));
                $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
                break;
            case ''':
                $node->_[HDOM_INFO_QUOTE][] = HDOM_QUOTE_SINGLE;
                $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
                $node->attr[$name] = $this->restore_noise($this->copy_until_char_escape('''));
                $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
                break;
            default:
                $node->_[HDOM_INFO_QUOTE][] = HDOM_QUOTE_NO;
                $node->attr[$name] = $this->restore_noise($this->copy_until($this->token_attr));
        }
    }

    // link node's parent
    protected function link_nodes(&$node, $is_child) {
        $node->parent = $this->parent;
        $this->parent->nodes[] = $node;
        if ($is_child)
            $this->parent->children[] = $node;
    }

    // as a text node
    protected function as_text_node($tag) {
        $node = new simple_html_dom_node($this);
          $this->cursor;
        $node->_[HDOM_INFO_TEXT] = '</' . $tag . '>';
        $this->link_nodes($node, false);
        $this->char = (  $this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
        return true;
    }

    protected function skip($chars) {
        $this->pos  = strspn($this->doc, $chars, $this->pos);
        $this->char = ($this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
    }

    protected function copy_skip($chars) {
        $pos = $this->pos;
        $len = strspn($this->doc, $chars, $pos);
        $this->pos  = $len;
        $this->char = ($this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
        if ($len===0) return '';
        return substr($this->doc, $pos, $len);
    }

    protected function copy_until($chars) {
        $pos = $this->pos;
        $len = strcspn($this->doc, $chars, $pos);
        $this->pos  = $len;
        $this->char = ($this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
        return substr($this->doc, $pos, $len);
    }

    protected function copy_until_char($char) {
        if ($this->char===null) return '';

        if (($pos = strpos($this->doc, $char, $this->pos))===false) {
            $ret = substr($this->doc, $this->pos, $this->size-$this->pos);
            $this->char = null;
            $this->pos = $this->size;
            return $ret;
        }

        if ($pos===$this->pos) return '';
        $pos_old = $this->pos;
        $this->char = $this->doc[$pos];
        $this->pos = $pos;
        return substr($this->doc, $pos_old, $pos-$pos_old);
    }

    protected function copy_until_char_escape($char) {
        if ($this->char===null) return '';

        $start = $this->pos;
        while(1) {
            if (($pos = strpos($this->doc, $char, $start))===false) {
                $ret = substr($this->doc, $this->pos, $this->size-$this->pos);
                $this->char = null;
                $this->pos = $this->size;
                return $ret;
            }

            if ($pos===$this->pos) return '';

            if ($this->doc[$pos-1]==='') {
                $start = $pos 1;
                continue;
            }

            $pos_old = $this->pos;
            $this->char = $this->doc[$pos];
            $this->pos = $pos;
            return substr($this->doc, $pos_old, $pos-$pos_old);
        }
    }

    // remove noise from html content
    protected function remove_noise($pattern, $remove_tag=false) {
        $count = preg_match_all($pattern, $this->doc, $matches, PREG_SET_ORDER|PREG_OFFSET_CAPTURE);

        for ($i=$count-1; $i>-1; --$i) {
            $key = '___noise___'.sprintf('% 3d', count($this->noise) 100);
            $idx = ($remove_tag) ? 0 : 1;
            $this->noise[$key] = $matches[$i][$idx][0];
            $this->doc = substr_replace($this->doc, $key, $matches[$i][$idx][1], strlen($matches[$i][$idx][0]));
        }

        // reset the length of content
        $this->size = strlen($this->doc);
        if ($this->size>0) $this->char = $this->doc[0];
    }

    // restore noise to html content
    function restore_noise($text) {
        while(($pos=strpos($text, '___noise___'))!==false) {
            $key = '___noise___'.$text[$pos 11].$text[$pos 12].$text[$pos 13];
            if (isset($this->noise[$key]))
                $text = substr($text, 0, $pos).$this->noise[$key].substr($text, $pos 14);
        }
        return $text;
    }

    function __toString() {
        return $this->root->innertext();
    }

    function __get($name) {
        switch($name) {
            case 'outertext': return $this->root->innertext();
            case 'innertext': return $this->root->innertext();
            case 'plaintext': return $this->root->text();
        }
    }

    // camel naming conventions
    function childNodes($idx=-1) {return $this->root->childNodes($idx);}
    function firstChild() {return $this->root->first_child();}
    function lastChild() {return $this->root->last_child();}
    function getElementById($id) {return $this->find("#$id", 0);}
    function getElementsById($id, $idx=null) {return $this->find("#$id", $idx);}
    function getElementByTagName($name) {return $this->find($name, 0);}
    function getElementsByTagName($name, $idx=-1) {return $this->find($name, $idx);}
    function loadFile() {$args = func_get_args();$this->load(call_user_func_array('file_get_contents', $args), true);}
}
?>