YouTube Data API ช่วยให้แอปพลิเคชันไคลเอ็นต์ดึงข้อมูลและอัปเดตเนื้อหา YouTube ในรูปแบบฟีด Google Data API ได้ แอปพลิเคชันไคลเอ็นต์สามารถใช้ฟีด YouTube Data API เพื่อดึงข้อมูล ค้นหา และอัปเดตวิดีโอ ความคิดเห็น การตอบกลับ เพลย์ลิสต์ โปรไฟล์ผู้ใช้ และรายชื่อติดต่อของผู้ใช้ รวมถึงค้นหาวิดีโอที่ตรงกับเกณฑ์ที่กำหนด
นอกจากจะให้ข้อมูลเบื้องต้นเกี่ยวกับความสามารถของ YouTube Data API แล้ว เอกสารนี้ยังมีตัวอย่างการโต้ตอบกับ API โดยใช้ไลบรารีของไคลเอ็นต์ Python ด้วย หากต้องการใช้ไลบรารีของไคลเอ็นต์ Python คุณจะต้องมี Python 2.0 ขึ้นไปและโมดูล Element Tree, httplib และ urllib ดูรายละเอียดเพิ่มเติมได้ที่โมดูล Dependency
หากต้องการความช่วยเหลือในการตั้งค่าไลบรารีไคลเอ็นต์ Python โปรดดูคู่มือการเริ่มต้นใช้งาน หากต้องการทำความเข้าใจเพิ่มเติมเกี่ยวกับโปรโตคอลพื้นฐานที่ไลบรารีไคลเอ็นต์ Python ใช้เพื่อโต้ตอบกับ YouTube โปรดดูหน้าโปรโตคอลในคู่มือสำหรับนักพัฒนาซอฟต์แวร์
เกี่ยวกับเอกสารนี้
ผู้ชม
เอกสารนี้มีไว้สำหรับโปรแกรมเมอร์ที่ต้องการเขียนแอปพลิเคชันไคลเอ็นต์ที่โต้ตอบกับ YouTube ได้โดยใช้ไลบรารีไคลเอ็นต์ Python ซึ่งแสดงชุดตัวอย่างการโต้ตอบพื้นฐานของ Data API
ดูข้อมูลอ้างอิงเกี่ยวกับ YouTube Data API ได้ที่คู่มืออ้างอิง
เอกสารนี้ถือว่าคุณเข้าใจแนวคิดทั่วไปที่อยู่เบื้องหลังโปรโตคอล Google Data API และคุณทราบวิธีเขียนโปรแกรมใน Python
ดูข้อมูลอ้างอิงเกี่ยวกับคลาสและเมธอด Python ได้ที่ pyDocs (สําหรับคลาสบริการและคลาสข้อมูล) ที่รวมอยู่ในซอร์สโค้ด
โครงสร้างเอกสาร
เอกสารนี้ประกอบด้วยส่วนต่อไปนี้
-
ส่วนการตรวจสอบสิทธิ์จะอธิบายวิธีการตรวจสอบสิทธิ์ 2 วิธีที่แตกต่างกันสำหรับเชื่อมโยงการดำเนินการของ API กับบัญชีผู้ใช้ที่เฉพาะเจาะจง ส่วนนี้ยังอธิบายความแตกต่างระหว่างการตรวจสอบสิทธิ์สําหรับ YouTube Data API กับ Google Data API อื่นๆ ด้วย ตลอดทั้งเอกสารนี้ คำอธิบายฟังก์ชัน API ที่เฉพาะเจาะจงจะระบุอย่างชัดเจนว่าฟังก์ชันดังกล่าวกำหนดให้ต้องตรวจสอบสิทธิ์ผู้ใช้หรือไม่ โดยทั่วไปแล้ว คำขอทั้งหมดที่แก้ไขข้อมูลวิดีโอหรือฟีดจะต้องได้รับการตรวจสอบสิทธิ์ คำขอแบบอ่านอย่างเดียวสำหรับวิดีโอสาธารณะไม่จำเป็นต้องมีการตรวจสอบสิทธิ์
-
ส่วนการทำความเข้าใจฟีดและรายการวิดีโอมีตัวอย่างการตอบกลับของ API และอธิบายวิธีดึงข้อมูลเกี่ยวกับวิดีโอรายการเดียวจากรายการวิดีโอหรือชุดผลการค้นหา ส่วนนี้ยังอธิบายวิธีเข้าถึงข้อมูลเมตาเกี่ยวกับรายการวิดีโอที่เฉพาะเจาะจงด้วย สุดท้าย ส่วนนี้จะอธิบายกลไกการอัปเดตรายการวิดีโอแต่ละรายการ
-
ส่วนการดึงข้อมูลและการค้นหาวิดีโอจะอธิบายวิธีดึงข้อมูลรายการวิดีโอที่เฉพาะเจาะจง เช่น ฟีดมาตรฐานของวิดีโอยอดนิยมบน YouTube รายการวิดีโออื่นๆ ได้แก่ วิดีโอที่อัปโหลดโดยผู้ใช้ที่เฉพาะเจาะจงและรายการวิดีโอที่เกี่ยวข้องกับวิดีโอหนึ่งๆ ส่วนนี้ยังอธิบายวิธีใช้ API เพื่ออนุญาตให้ผู้ใช้ค้นหาคลังวิดีโอของ YouTube ตามข้อความค้นหาหรือหมวดหมู่ที่เฉพาะเจาะจง
-
ส่วนการอัปโหลดวิดีโอจะอธิบายสั้นๆ 2 วิธีที่คุณอนุญาตให้ผู้ใช้อัปโหลดวิดีโอไปยัง YouTube จากแอปพลิเคชันได้ นอกจากนี้ ส่วนนี้ยังอธิบายวิธีอัปโหลดวิดีโอเพื่อตอบกลับวิดีโออื่นๆ ด้วย
-
ส่วนการอัปเดตและการลบวิดีโอจะอธิบายวิธีใช้ API เพื่ออัปเดตข้อมูลเกี่ยวกับวิดีโอ YouTube รวมถึงอธิบายวิธีนำวิดีโอออกโดยใช้ API ด้วย
-
ส่วนการใช้ฟีเจอร์ชุมชนจะอธิบายฟังก์ชัน API ที่ช่วยให้ผู้ใช้โต้ตอบกับวิดีโอ YouTube ได้ ฟังก์ชันเหล่านี้อธิบายคำขอโพสต์การให้คะแนน ความคิดเห็น หรือการร้องเรียนในวิดีโอที่มีอยู่ นอกจากนี้ คุณยังใช้ API เพื่อดึงข้อมูลรายการความคิดเห็นของวิดีโอได้ด้วย
-
ส่วนการบันทึกและรวบรวมวิดีโอจะอธิบายวิธีใช้ API เพื่อเข้าถึง สร้าง และอัปเดตวิดีโอที่ชอบ เพลย์ลิสต์วิดีโอ และการติดตามช่อง YouTube รวมถึงแสดงวิธีแก้ไขเพลย์ลิสต์และรายการโปรดของวิดีโอด้วยการเพิ่มและนำวิดีโอออก
-
ส่วนการเปิดใช้การโต้ตอบของผู้ใช้จะอธิบายวิธีใช้ API เพื่อเรียกข้อมูลและอัปเดตโปรไฟล์ผู้ใช้ ส่วนนี้ยังอธิบายวิธีเรียกข้อมูล เพิ่ม อัปเดต และลบรายชื่อติดต่อของผู้ใช้ด้วย
เริ่มต้นใช้งาน
ข้อกำหนด
แอปพลิเคชันไคลเอ็นต์สามารถใช้ฟีด YouTube Data API เพื่อค้นหา เรียกข้อมูล และอัปเดตวิดีโอ ความคิดเห็น การตอบกลับ เพลย์ลิสต์ การติดตาม โปรไฟล์ผู้ใช้ และอื่นๆนอกจากจะให้ข้อมูลเบื้องต้นเกี่ยวกับความสามารถของ YouTube Data API แล้ว เอกสารนี้ยังมีตัวอย่างการโต้ตอบกับ API โดยใช้ไลบรารีของไคลเอ็นต์ Python ด้วย หากต้องการใช้ไลบรารีของไคลเอ็นต์ Python คุณจะต้องมี Python 2.2 ขึ้นไปและโมดูล Element Tree, httplib และ urllib ดูรายละเอียดเพิ่มเติมได้ที่โมดูล Dependency
ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าสภาพแวดล้อมได้ในคู่มือเริ่มต้นใช้งาน หากต้องการทำความเข้าใจเพิ่มเติมเกี่ยวกับโปรโตคอลพื้นฐานที่ไลบรารีไคลเอ็นต์ Python ใช้เพื่อโต้ตอบกับ YouTube โปรดดูหน้าโปรโตคอลในคู่มือสำหรับนักพัฒนาซอฟต์แวร์
คุณคัดลอก/วางข้อมูลโค้ดตัวอย่างด้านล่างลงในโค้ดและแก้ไขให้เหมาะกับความต้องการของคุณได้
คุณต้องเริ่มต้นการทำงานของ gdata.youtube.service.YouTubeService
ออบเจ็กต์ ดังที่แสดงด้านล่างก่อนจึงจะดำเนินการใดๆ กับ YouTube Data API ได้ คำสั่ง import
ที่แสดงด้านล่างจะทำการนำเข้าเพิ่มเติมจากโมดูล gdata.media
และ gdata.geo
โดยอัตโนมัติ โปรดทราบว่าการดำเนินการทั้งหมดนอกเหนือจากการเรียกข้อมูลเนื้อหาสาธารณะจะต้องตรวจสอบสิทธิ์
import gdata.youtube import gdata.youtube.service yt_service = gdata.youtube.service.YouTubeService() # Turn on HTTPS/SSL access. # Note: SSL is not available at this time for uploads. yt_service.ssl = True
ตัวอย่างเมธอดส่วนใหญ่ในคู่มือนี้จะทํางานกับอินสแตนซ์ของ gdata.youtube.service.YouTubeService
การทดสอบคําขอที่ไม่มีการรับรองจากโปรแกรมแปลภาษาไพธอนแบบอินเทอร์แอกทีฟอาจมีประโยชน์
หมายเหตุ: คุณต้องเพิ่มไลบรารีไคลเอ็นต์ Python ในเส้นทางอย่างถูกต้อง โปรดตรวจสอบว่าคุณได้ติดตั้งโดยเรียกใช้สคริปต์ setup.py
ที่ให้มา โปรดดูข้อมูลเพิ่มเติมในคู่มือการเริ่มต้นใช้งาน
การตรวจสอบสิทธิ์
ไลบรารีไคลเอ็นต์ Python สามารถใช้กับฟีดสาธารณะหรือส่วนตัวก็ได้ ฟีดสาธารณะเป็นแบบอ่านอย่างเดียวและไม่ต้องการตรวจสอบสิทธิ์ ฟีดส่วนตัวกำหนดให้คุณต้องตรวจสอบสิทธิ์กับเซิร์ฟเวอร์ YouTube
การตรวจสอบสิทธิ์ทำได้ผ่านการตรวจสอบสิทธิ์ ClientLogin (สําหรับแอปบนเดสก์ท็อป) หรือผ่านการตรวจสอบสิทธิ์ AuthSub (สําหรับเว็บแอปพลิเคชัน)
การตั้งค่าคีย์นักพัฒนาแอปและรหัสไคลเอ็นต์
คีย์นักพัฒนาแอปจะระบุนักพัฒนาแอป YouTube ที่ส่งคําขอ API รหัสไคลเอ็นต์จะระบุแอปพลิเคชันของคุณเพื่อวัตถุประสงค์ในการบันทึกและการแก้ไขข้อบกพร่อง
เมื่อคุณส่งคําขอ API โดยใช้ไลบรารีไคลเอ็นต์ Python ระบบจะใช้ส่วนหัวคําขอ X-GData-Key
เพื่อระบุคีย์นักพัฒนาแอป ส่วนหัว X-GData-Client
จะใช้เพื่อระบุรหัสไคลเอ็นต์ คุณตั้งค่าคีย์นักพัฒนาแอปและรหัสไคลเอ็นต์ได้ในออบเจ็กต์ YouTubeService
โดยแยกจากรูปแบบการตรวจสอบสิทธิ์ที่ใช้อยู่
yt_service.developer_key = 'ABCxyz123...' yt_service.client_id = 'My-Client_id'
คุณจะต้องลงชื่อสมัครใช้คีย์นักพัฒนาแอป YouTube
การตรวจสอบสิทธิ์ AuthSub สําหรับเว็บแอปพลิเคชัน
เว็บแอปพลิเคชันซึ่งต้องตรวจสอบสิทธิ์ผู้ใช้กับบัญชี YouTube/Google จะใช้การตรวจสอบสิทธิ์พร็อกซี AuthSub ผู้ดำเนินการไม่จำเป็นต้องเข้าถึงชื่อผู้ใช้และรหัสผ่านของผู้ใช้ YouTube เพียงแค่ต้องมีโทเค็น AuthSub พิเศษเท่านั้น
เมื่อผู้ใช้เข้าชมแอปพลิเคชันเป็นครั้งแรก ผู้ใช้จะยังไม่ได้รับการตรวจสอบสิทธิ์กับบริการของ Google ในกรณีนี้ คุณต้องให้ลิงก์ที่นําผู้ใช้ไปยัง Google เพื่ออนุญาตให้คําขอเข้าถึงบัญชี YouTube ของแอปพลิเคชันของคุณ ไลบรารีไคลเอ็นต์ Python มีฟังก์ชันสำหรับสร้าง URL นี้ โค้ดด้านล่างจะตั้งค่าลิงก์ไปยังหน้า AuthSubRequest
def GetAuthSubUrl(): next = 'http://www.example.com/video_upload.pyc' scope = 'http://gdata.youtube.com' secure = False session = True yt_service = gdata.youtube.service.YouTubeService() return yt_service.GenerateAuthSubURL(next, scope, secure, session) authSubUrl = GetAuthSubUrl() print '<a href="%s">Login to your Google account</a>' % authSubUrl
โปรดสังเกตพารามิเตอร์ที่ส่งไปยังเมธอด GenerateAuthSubURL
ของออบเจ็กต์บริการ
- next — URL ของหน้าเว็บที่ YouTube ควรเปลี่ยนเส้นทางผู้ใช้ไปหลังจากผู้ใช้ให้สิทธิ์แอปพลิเคชันของคุณเข้าถึงบัญชีแล้ว
- scope - ระบุว่าแอปพลิเคชันจะเข้าถึงเฉพาะฟีด YouTube API
- secure — ระบุว่าโทเค็นที่แสดงผลจะไม่ได้เป็นโทเค็นที่ปลอดภัย
- session — บ่งบอกว่าโทเค็นนี้สามารถแลกเป็นโทเค็น (เซสชัน) ที่ใช้ซ้ำได้
URL ที่แสดงผลจะมีลักษณะดังนี้
https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fgdata.youtube.com&session=1&secure=0&next=http%3A%2F%2Fwww.example.com%2Fvideo_upload.pyc
จากนั้นผู้ใช้จะไปยังลิงก์เพื่อเข้าสู่ระบบบัญชี YouTube ได้ หลังจากผู้ใช้ให้สิทธิ์แอปพลิเคชันของคุณเข้าถึงบัญชีแล้ว ระบบจะเปลี่ยนเส้นทางผู้ใช้กลับไปที่ URL next
URL จะมีค่าโทเค็นแบบใช้ครั้งเดียวต่อท้ายเป็นพารามิเตอร์การค้นหา URL จะมีลักษณะดังนี้
http://www.example.com/video_upload.pyc?token=Abc123...
ส่วนถัดไปจะแสดงวิธีอัปเกรดโทเค็นนี้ ข้อมูลโค้ดด้านล่างแสดงวิธีดึงข้อมูลโทเค็นนี้จาก URL
import cgi parameters = cgi.FieldStorage() authsub_token = parameters[[]'token' ]
การอัปเกรดเป็นโทเค็นเซสชัน
โทเค็นนี้เป็นแบบใช้ครั้งเดียวเท่านั้นเพื่อความปลอดภัย คุณจึงต้องแลกเปลี่ยนโทเค็นแบบใช้ครั้งเดียวนี้เพื่อรับโทเค็นเซสชัน กระบวนการนี้มีอธิบายอยู่ในเอกสารประกอบเกี่ยวกับ AuthSub ข้อมูลโค้ดต่อไปนี้แสดงวิธีอัปเกรดโทเค็น
yt_service = gdata.youtube.service.YouTubeService() yt_service.SetAuthSubToken(authsub_token) yt_service.UpgradeToSessionToken()
ค่าโทเค็นนี้แสดงถึงโทเค็น AuthSub แบบใช้ครั้งเดียว เนื่องจากมีการระบุ session = True
ไว้ข้างต้น โทเค็นนี้จึงแลกเปลี่ยนเป็นโทเค็นเซสชัน AuthSub ได้โดยใช้เมธอด UpgradeToSessionToken
ซึ่งเรียกบริการ AuthSubSessionToken
ตอนนี้ออบเจ็กต์ YouTubeService
ได้รับการตรวจสอบสิทธิ์โดยสมบูรณ์แล้ว และสามารถใช้เพื่อส่งคำขอเพิ่มเติมทั้งหมดด้วย YouTube API โทเค็นเซสชัน AuthSub จะไม่มีวันหมดอายุ เว้นแต่คุณจะส่งคำขอเพิกถอนโทเค็นดังกล่าวโดยเฉพาะ หรือผู้ใช้ตัดสินใจเพิกถอนสิทธิ์เข้าถึงโดยไปที่หน้าเว็บไซต์ที่ได้รับอนุญาตในบัญชี YouTube ของตน
การตรวจสอบสิทธิ์ ClientLogin สําหรับแอปพลิเคชันที่ติดตั้ง
การตรวจสอบสิทธิ์ ClientLogin ใช้ในแอปพลิเคชันที่ติดตั้งไว้ซึ่งสามารถจัดเก็บหรือค้นหาชื่อผู้ใช้และรหัสผ่านของผู้ใช้ หากต้องการใช้การตรวจสอบสิทธิ์รูปแบบนี้ ให้เรียกใช้เมธอด ProgrammaticLogin
ของ YouTubeService
ที่รับค่ามาจากคลาส gdata.service.GDataService
โดยระบุรหัสและรหัสผ่านของผู้ใช้ที่ลูกค้าส่งคําขอตรวจสอบสิทธิ์ในนาม
yt_service = gdata.youtube.service.YouTubeService() yt_service.email = 'jo@gmail.com' yt_service.password = 'mypassword' yt_service.source = 'my-example-application' yt_service.ProgrammaticLogin()
เมื่อตั้งค่าข้อมูลเข้าสู่ระบบแล้ว คุณจะใช้ออบเจ็กต์ YouTubeService
เพื่อจัดการคำขอเพิ่มเติมทั้งหมดได้ หากต้องการอัปโหลดและส่งคําขอ "เขียน" ทุกประเภท (การเพิ่มความคิดเห็น ฯลฯ) ไปยัง YouTube API โปรดตรวจสอบว่าคุณได้ส่งคีย์นักพัฒนาแอปและรหัสไคลเอ็นต์ไปยังออบเจ็กต์ yt_service
เมื่อทำการตรวจสอบสิทธิ์ด้วย
# A complete client login request yt_service.email = 'jo@gmail.com' yt_service.password = 'mypassword' yt_service.source = 'my-example-application' yt_service.developer_key = 'ABC123...' yt_service.client_id = 'my-example-application' yt_service.ProgrammaticLogin()
ออบเจ็กต์ YouTubeService
จะตั้งค่าส่วนหัว X-GData-Key
และ X-GData-Client
ที่ถูกต้องโดยอัตโนมัติเมื่อมีการตั้งค่าแอตทริบิวต์ developer_key
และ client_id
หมายเหตุ: โปรดดูข้อมูลโดยละเอียดเกี่ยวกับทั้งกลไก AuthSub และ ClientLogin ในเอกสารประกอบการตรวจสอบสิทธิ์ของ Google Data API
ทำความเข้าใจฟีดและรายการวิดีโอ
YouTube Data API มีฟีดวิดีโอหลายรายการที่แสดงรายการวิดีโอ เช่น ฟีดมาตรฐาน การอัปโหลด การติดตาม และรายการโปรด URL ของฟีดแต่ละรายการจะแสดงอยู่ในคู่มืออ้างอิง
การแสดงฟีดวิดีโอ
ฟีดจำนวนมากใน YouTube API ประกอบด้วยรายการวิดีโอ ฟีดเหล่านี้สามารถจำลองเป็นออบเจ็กต์ gdata.youtube.YouTubeVideoFeed
ได้โดยง่าย โดยแต่ละรายการจะมีออบเจ็กต์ gdata.youtube.YouTubeVideoEntry
อยู่จำนวนหนึ่ง รายการวิดีโอแต่ละรายการจะสอดคล้องกับวิดีโอบน YouTube เพียงรายการเดียวและมีข้อมูลเกี่ยวกับวิดีโอนั้น
โครงสร้างพื้นฐานของการดึงข้อมูลรายการวิดีโอคือการสร้าง URL ไปยังฟีดวิดีโอ จากนั้นประมวลผลรายการทีละรายการ ซึ่งคล้ายกับโค้ดต่อไปนี้
def GetAndPrintVideoFeed(uri): yt_service = gdata.youtube.service.YouTubeService() feed = yt_service.GetYouTubeVideoFeed(uri) for entry in feed.entry: PrintEntryDetails(entry) # full documentation for this function
ส่วนการดึงข้อมูลและค้นหาวิดีโอจะแสดงรายละเอียด URL ของฟีดทั่วไปหลายรายการและวิธีดึงข้อมูลฟีดวิดีโอต่างๆ
การดึงข้อมูลรายการวิดีโอที่เฉพาะเจาะจง
คุณสามารถดึงข้อมูลเฉพาะของรายการวิดีโอได้หากทราบรหัสวิดีโอ URL ของรายการจะอิงตามรหัสวิดีโอ
http://gdata.youtube.com/feeds/api/videos/videoID
โค้ดต่อไปนี้จะดึงข้อมูล gdata.youtube.YouTubeVideoEntry
ที่สอดคล้องกับวิดีโอบน YouTube
entry = yt_service.GetYouTubeVideoEntry(video_id='the0KZLEacs')
เนื้อหาของวิดีโอที่ส่งเข้ามา
ข้อมูลเมตาจำนวนมากที่สามารถดึงมาจากออบเจ็กต์ gdata.youtube.YouTubeVideoEntry
เช่น ภาพปก, URL ของเพลเยอร์ และระยะเวลาของวิดีโอ โค้ดต่อไปนี้แสดงวิธีเข้าถึงข้อมูลบางส่วนนี้ ไลบรารีไคลเอ็นต์ Python จะแยกฟังก์ชันการทํางานส่วนใหญ่นี้ออกโดยการแมปองค์ประกอบ XML ไปยังคลาส ข้อมูลสําคัญส่วนใหญ่เกี่ยวกับรายการ YouTubeVideoEntry
มาจากรายการย่อยของแอตทริบิวต์ media
(ซึ่งมีออบเจ็กต์ gdata.media.Group
) ภายในรายการ (แสดงถึงองค์ประกอบ media:group
XML) ด้านล่างนี้คือตัวอย่างวิธีเรียกข้อมูลเมตาของวิดีโอ
def PrintEntryDetails(entry): print 'Video title: %s' % entry.media.title.text print 'Video published on: %s ' % entry.published.text print 'Video description: %s' % entry.media.description.text print 'Video category: %s' % entry.media.category[[]0].text print 'Video tags: %s' % entry.media.keywords.text print 'Video watch page: %s' % entry.media.player.url print 'Video flash player URL: %s' % entry.GetSwfUrl() print 'Video duration: %s' % entry.media.duration.seconds # non entry.media attributes print 'Video geo location: %s' % entry.geo.location() print 'Video view count: %s' % entry.statistics.view_count print 'Video rating: %s' % entry.rating.average # show alternate formats for alternate_format in entry.media.content: if 'isDefault' not in alternate_format.extension_attributes: print 'Alternate format: %s | url: %s ' % (alternate_format.type, alternate_format.url) # show thumbnails for thumbnail in entry.media.thumbnail: print 'Thumbnail url: %s' % thumbnail.url
หมายเหตุ: ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างข้อมูลที่จําเป็นสําหรับการฝังวิดีโอที่มีโปรแกรมเล่นในหน้าเว็บได้ที่คู่มือโปรโตคอล
การดึงข้อมูลและการค้นหาวิดีโอ
การดึงข้อมูลฟีดมาตรฐาน
YouTube Data API มีฟีดมาตรฐานของวิดีโอยอดนิยมบน YouTube ก่อนหน้านี้ API รองรับฟีดมาตรฐานอื่นๆ ซึ่งเลิกใช้งานไปแล้ว ดูข้อมูลเพิ่มเติมได้ที่คู่มือนักพัฒนาแอป
URL สำหรับฟีดวิดีโอยอดนิยมของ YouTube มีรูปแบบดังนี้
http://gdata.youtube.com/feeds/api/standardfeeds/most_popular
หมายเหตุ: คุณยังเรียกข้อมูลฟีดมาตรฐานสำหรับแต่ละภาษาได้โดยระบุ localeID ในรูปแบบ http://gdata.youtube.com/feeds/api/standardfeeds/localeID/feedID
เช่น วิดีโอยอดนิยมในญี่ปุ่นคือ http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular
โปรดดูรายการรหัสภาษาที่เป็นไปได้ทั้งหมดในคู่มืออ้างอิง
def PrintVideoFeed(feed): for entry in feed.entry: PrintEntryDetails(entry) def GetAndPrintFeedByUrl: yt_service = gdata.youtube.service.YouTubeService() # You can retrieve a YouTubeVideoFeed by passing in the URI uri = 'http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular' PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))
การดึงข้อมูลวิดีโอที่ผู้ใช้ที่เฉพาะเจาะจงอัปโหลด
ผู้ใช้ YouTube แต่ละรายจะมีฟีดวิดีโอที่เชื่อมโยงกับวิดีโอที่อัปโหลดไว้ที่ http://gdata.youtube.com/feeds/api/users/username/uploads
โค้ดต่อไปนี้แสดงวิธีดึงข้อมูลและแสดงฟีดที่ผู้ใช้อัปโหลด
def GetAndPrintUserUploads(username): yt_service = gdata.youtube.service.YouTubeService() uri = 'http://gdata.youtube.com/feeds/api/users/%s/uploads' % username PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))
หมายเหตุ: คุณสามารถใช้สตริง "default" แทน username
เพื่อเรียกข้อมูลวิดีโอของผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์ในปัจจุบันได้
ดึงข้อมูลวิดีโอที่เกี่ยวข้อง
หากต้องการเรียกข้อมูลวิดีโอที่เกี่ยวข้อง ให้ส่งรหัสวิดีโอของออบเจ็กต์ gdata.youtube.YouTubeVideoEntry
ไปยังเมธอด GetYouTubeRelatedVideoFeed
ของออบเจ็กต์ gdata.youtube.service.YouTubeService
ซึ่งจะดึงข้อมูลออบเจ็กต์ YouTubeVideoFeed
ที่มีรายการที่เกี่ยวข้อง
related_feed = yt_service.GetYouTubeRelatedVideoFeed(video_id='abc123')
การค้นหาวิดีโอ
YouTube Data API ช่วยให้คุณขอชุดรายการที่ตรงกับเกณฑ์ที่ระบุได้ เช่น การขอรายการวิดีโอที่เผยแพร่โดยผู้แต่งที่เฉพาะเจาะจง ตามรูปแบบวิดีโอ หรือมีคีย์เวิร์ดที่ต้องการ โดยสร้างออบเจ็กต์ gdata.service.YouTubeVideoQuery
ที่มีเกณฑ์การค้นหาที่ต้องการ แล้วส่งไปยังเมธอด YouTubeQuery
ของ gdata.youtube.service.YouTubeService
ตัวอย่างด้านล่างแสดงวิธีดำเนินการค้นหาโดยจัดเรียงผลการค้นหาตามยอดดู ซึ่งรวมถึงวิดีโอที่ถูกจำกัด (API เรียกว่า "โจ่งแจ้ง")
def SearchAndPrint(search_terms): yt_service = gdata.youtube.service.YouTubeService() query = gdata.youtube.service.YouTubeVideoQuery() query.vq = search_terms query.orderby = 'viewCount' query.racy = 'include' feed = yt_service.YouTubeQuery(query) PrintVideoFeed(feed)
คลาส gdata.service.Query
และคลาสย่อย เช่น YouTubeVideoQuery
มีหน้าที่สร้าง URL ของฟีด โดย VideoQuery
ที่แสดงด้านบนจะสร้าง URL ที่เทียบเท่ากับ URL ต่อไปนี้
http://gdata.youtube.com/feeds/api/videos?vq=<searchTerms>&racy=include&orderby=viewCount
ต่อไปนี้คือตัวอย่างคุณสมบัติ YouTubeVideoQuery ที่ใช้กันมากที่สุดในการตั้งค่าพารามิเตอร์การค้นหา
author
- ตั้งค่าผู้เขียนของรายการ ผู้แต่งมีความหมายเหมือนกับชื่อผู้ใช้ YouTube
format
- ระบุรูปแบบวิดีโอ ยอมรับพารามิเตอร์ตัวเลขเพื่อระบุ URL สตรีมมิง RTSP ประเภทใดประเภทหนึ่งสำหรับการเล่นวิดีโอบนอุปกรณ์เคลื่อนที่ หรือ HTTP URL ไปยังโปรแกรมเล่น Flash ที่ฝังได้
racy
- บ่งชี้ว่าควรรวมเนื้อหาที่ถูกจํากัดไว้ในผลการค้นหาหรือไม่ ยอมรับพารามิเตอร์เพียง 2 รายการ ได้แก่ "include" หรือ "exclude"
max_results
- ตั้งค่าจํานวนรายการสูงสุดที่จะแสดงพร้อมกัน
start_index
- ตั้งค่าดัชนีฐาน 1 ของผลการค้นหารายการแรกที่จะดึงข้อมูล (สำหรับการแบ่งหน้า)
orderby
- ตั้งค่าลําดับในการแสดงรายการ เช่น ตาม
relevance
,viewCount
,published
หรือrating
time
- ตั้งค่าระยะเวลาเพื่อจำกัดผลการค้นหาของฟีดมาตรฐานเป็น
today
,this_week
,this_month
หรือall_time
vq
- ตั้งค่าข้อความค้นหา ค้นหาสตริงที่ระบุในข้อมูลเมตาทั้งหมดของวิดีโอ เช่น ชื่อ แท็ก และคำอธิบาย
หมายเหตุ: ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์การค้นหาได้ที่คู่มืออ้างอิง YouTube Data API และคู่มืออ้างอิง Google Data API
การค้นหาด้วยหมวดหมู่และคีย์เวิร์ด
คุณจำกัดผลการค้นหาให้แสดงเฉพาะวิดีโอที่ตรงกับหมวดหมู่และคีย์เวิร์ดชุดหนึ่งๆ ได้ คู่มืออ้างอิงจะอธิบายวิธีระบุทั้งหมวดหมู่ YouTube ที่กําหนดไว้ล่วงหน้า (เช่น เพลง คนและบล็อก ฯลฯ) และคีย์เวิร์ด (แท็ก) ที่ผู้ใช้กําหนด
โค้ดต่อไปนี้แสดงวิธีค้นหาโดยใช้คีย์เวิร์ด (แท็ก) โดยเปลี่ยนข้อความค้นหาเป็นตัวพิมพ์เล็ก หมายเหตุ: เนื่องจากคำบางคำ (เช่น "ตลก") อาจเป็นได้ทั้งหมวดหมู่ YouTube และคีย์เวิร์ด การค้นหาหมวดหมู่และคีย์เวิร์ดจึงใช้รูปแบบที่คำตัวพิมพ์ใหญ่ ("ตลก") หมายถึงหมวดหมู่ YouTube ส่วนคำตัวพิมพ์เล็ก ("ตลก") หมายถึงคีย์เวิร์ด
def SearchAndPrintVideosByKeywords(list_of_search_terms): yt_service = gdata.youtube.service.YouTubeService() query = gdata.youtube.service.YouTubeVideoQuery() query.orderby = 'viewCount' query.racy = 'include' for search_term in list_of_search_terms: new_term = search_term.lower() query.categories.append('/%s' % new_term) feed = yt_service.YouTubeQuery(query) PrintVideoFeed(feed)
การค้นหาตามแท็กของนักพัฒนาแอป
แท็กของนักพัฒนาแอปคือคีย์เวิร์ดที่ซ่อนอยู่เพิ่มเติมซึ่งนักพัฒนาแอปอาจใช้เพื่อติดแท็กเนื้อหาที่ผู้ใช้ปลายทางอัปโหลดผ่านแอปพลิเคชัน ระบบจะจับคู่แท็กนักพัฒนาแอปกับคีย์นักพัฒนาแอปที่ตั้งค่าไว้ในส่วนหัวระหว่างการอัปโหลด คีย์เวิร์ดเหล่านี้จะไม่ปรากฏต่อสาธารณะและอาจใช้เพื่อดึงข้อมูลวิดีโอ หากต้องการค้นหาวิดีโอตามแท็กของนักพัฒนาแอปที่เฉพาะเจาะจง ให้ส่งคำขอการค้นหา YouTube Data API ทั่วไปโดยใช้คีย์นักพัฒนาแอป อย่าลืมระบุรูปแบบหมวดหมู่และแท็กนักพัฒนาแอปที่วิดีโอต้องตรงกัน คุณสามารถเรียกข้อมูลฟีดวิดีโอที่ตรงกับแท็กนักพัฒนาแอปของคุณ ("your_tag_here" ในตัวอย่างของเรา) ได้จาก URL ด้านล่าง
developer_tag_uri = 'http://gdata.youtube.com/feeds/videos/-/%7Bhttp%3A%2F%2Fgdata.youtube.com%2Fschemas%2F2007%2Fdevelopertags.cat%7Dyour_tag_here' yt_service = gdata.youtube.service.YouTubeService() PrintVideoFeed(yt_service.GetYouTubeVideoFeed(developer_tag_uri))
การอัปโหลดวิดีโอ
โปรดดูภาพแผนภาพในคู่มือโปรโตคอลเพื่อดูภาพรวมระดับสูงของกระบวนการอัปโหลด คุณอัปโหลดวิดีโอได้ 2 วิธีดังนี้
- โดยการอัปโหลดวิดีโอจากเซิร์ฟเวอร์โดยตรงผ่านวิธีการอัปโหลดโดยตรง
- หรือส่งข้อมูลเมตาก่อน แล้วให้ผู้ใช้อัปโหลดวิดีโอไปยัง YouTube โดยตรงผ่านวิธีการอัปโหลดในเบราว์เซอร์
อัปโหลดโดยตรง
หากต้องการอัปโหลดวิดีโอ คุณต้องสร้างออบเจ็กต์ gdata.youtube.YouTubeVideoEntry
ใหม่ก่อน โดยส่งออบเจ็กต์ gdata.media.Group
ที่มีข้อมูลเมตาที่จำเป็น ตัวอย่างต่อไปนี้แสดงการอัปโหลดวิดีโอ Quicktime "mytestmovie.mov" ไปยัง YouTube ด้วยพร็อพเพอร์ตี้ต่อไปนี้
พร็อพเพอร์ตี้ | ค่า |
---|---|
ชื่อ | My Test Movie |
หมวดหมู่ | ยานยนต์ |
คีย์เวิร์ด | รถยนต์ ตลก |
คำอธิบาย | คำอธิบายของฉัน |
ชื่อไฟล์ | mytestmovie.mov |
ประเภท MIME ของไฟล์ | video/quicktime |
วิดีโอเป็นแบบส่วนตัวใช่ไหม | เท็จ |
สถานที่ของวิดีโอ | 37,-122 (lat,long) |
แท็กสำหรับนักพัฒนาแอป | mydevelopertag, anotherdevelopertag |
โค้ดด้านล่างสร้าง YouTubeVideoEntry
ว่างเปล่าที่จะอัปโหลด เมธอด InsertVideoEntry
ใน YouTubeService
ต้องใช้พารามิเตอร์ต่อไปนี้
video_entry
— ออบเจ็กต์gdata.youtube.VideoEntry
ที่มีข้อมูลเมตาfilename_or_handle
— ออบเจ็กต์ที่มีลักษณะคล้ายไฟล์หรือชื่อไฟล์ที่จะอ่านวิดีโอyoutube_username
— สตริงที่ไม่บังคับซึ่งระบุชื่อผู้ใช้ของบัญชีที่จะอัปโหลดวิดีโอนี้ แน่นอนว่าบัญชีจะต้องมีสิทธิ์ที่เหมาะสม โดยค่าเริ่มต้นจะเป็นบัญชีของผู้ใช้ที่ตรวจสอบสิทธิ์แล้วในปัจจุบันcontent_type
— สตริงที่ไม่บังคับซึ่งระบุประเภท MIME ของวิดีโอที่จะอัปโหลด
yt_service
อ้างอิงออบเจ็กต์ YouTubeService
ที่ตรวจสอบสิทธิ์โดยสมบูรณ์
# prepare a media group object to hold our video's meta-data my_media_group = gdata.media.Group( title=gdata.media.Title(text='My Test Movie'), description=gdata.media.Description(description_type='plain', text='My description'), keywords=gdata.media.Keywords(text='cars, funny'), category=[[]gdata.media.Category( text='Autos', scheme='http://gdata.youtube.com/schemas/2007/categories.cat', label='Autos')], player=None ) # prepare a geo.where object to hold the geographical location # of where the video was recorded where = gdata.geo.Where() where.set_location((37.0,-122.0)) # create the gdata.youtube.YouTubeVideoEntry to be uploaded video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group, geo=where) # set the path for the video file binary video_file_location = '/path/to/my/file.mov' new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)
หากต้องการติดแท็กวิดีโอด้วยแท็กสำหรับนักพัฒนาแอปที่ไม่บังคับ (ดูรายละเอียดเพิ่มเติมได้ที่การค้นหาด้วยแท็กสำหรับนักพัฒนาแอป) เราอาจใช้เมธอด AddDeveloperTags
ก่อนเรียกใช้ InsertVideoEntry
developer_tags = [[]'some_tag_01', 'another_tag'] video_entry.AddDeveloperTags(developer_tags)
หมายเหตุ: หากต้องการอัปโหลดวิดีโอแบบส่วนตัว คุณต้องส่งแอตทริบิวต์ "ส่วนตัว" ไปยัง gdata.media.Group
ดังนี้
my_media_group = gdata.media.Group( title=gdata.media.Title(text='My Test Movie'), description=gdata.media.Description(description_type='plain', text='My description'), keywords=gdata.media.Keywords(text='cars, funny'), category=[[]gdata.media.Category( text='Autos', scheme='http://gdata.youtube.com/schemas/2007/categories.cat', label='Autos')], player=None, private=gdata.media.Private() ) video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group) # assuming that video_file_location points to a valid path new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)
การอัปโหลดบนเบราว์เซอร์
การอัปโหลดในเบราว์เซอร์จะทำงานเกือบเหมือนกับการอัปโหลดโดยตรง ยกเว้นว่าคุณจะไม่อัปโหลดไฟล์ไบนารีในคำขอเดียวกับที่คุณใช้ส่งข้อมูลเมตาของวิดีโอ แต่เพียงสร้าง YouTubeVideoEntry
ที่มีข้อมูลเมตาเท่านั้น จากนั้นระบบจะโพสต์รายการวิดีโอนี้ไปยังลิงก์พิเศษบนเซิร์ฟเวอร์ YouTube API การตอบกลับ XML มี token
และ url
ซึ่งจะใช้เพื่ออัปโหลดไฟล์ไบนารีได้โดยใช้แบบฟอร์ม HTML มาตรฐาน
# create media group as usual my_media_group = gdata.media.Group( title=gdata.media.Title(text='My Test Movie'), description=gdata.media.Description(description_type='plain', text='My description'), keywords=gdata.media.Keywords(text='cars, funny'), category=[[]gdata.media.Category( text='Autos', scheme='http://gdata.youtube.com/schemas/2007/categories.cat', label='Autos')], player=None ) # create video entry as usual video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group) # upload meta data only response = yt_service.GetFormUploadToken(video_entry) # parse response tuple and use the variables to build a form (see next code snippet) post_url = response[[]0] youtube_token = response[[]1]
โค้ดด้านบนจะพิมพ์ลิงก์และโทเค็นที่ใช้สร้างแบบฟอร์ม HTML เพื่อแสดงในเบราว์เซอร์ของผู้ใช้ ตัวอย่างแบบฟอร์มง่ายๆ แสดงอยู่ด้านล่าง โดย youtube_token
แสดงถึงเนื้อหาขององค์ประกอบโทเค็นที่แสดงผล ดังที่แสดงในการดึงข้อมูลจาก YouTubeVideoEntry
ด้านบน โปรดเพิ่มพารามิเตอร์ next
ต่อท้าย post_url
(ดังที่แสดงด้านล่าง) เพื่อให้ระบบเปลี่ยนเส้นทางผู้ใช้ไปยังเว็บไซต์ของคุณหลังจากส่งแบบฟอร์มแล้ว ซึ่งจะทํางานในลักษณะเดียวกับพารามิเตอร์ next
ของลิงก์ AuthSub ความแตกต่างเพียงอย่างเดียวคือ ระบบจะแสดงผลตัวแปร status
และ id
เป็นพารามิเตอร์ URL แทนโทเค็นแบบใช้ครั้งเดียว
next = 'http://example.com/post_video_upload.pyc' form = """<form action="%s?nexturl=%s" method="post" enctype="multipart/form-data"> <input name="file" type="file"/> <input name="token" type="hidden" value="%s"/> <input value="Upload Video File" type="submit" /> </form>""" % (post_url, next, youtube_token)
การตอบกลับสำหรับการอัปโหลดที่สำเร็จจะมีลักษณะดังนี้
http://example.com/post_video_upload.pyc?status=200&id=ABC123
พารามิเตอร์ status
จะแสดงสถานะธุรกรรม HTTP ของธุรกรรมการอัปโหลด พารามิเตอร์ id
จะแสดงผลรหัสวิดีโอ YouTube ที่กำหนดให้กับวิดีโอที่อัปโหลด
กำลังตรวจสอบสถานะการอัปโหลด
หลังจากอัปโหลดวิดีโอแล้ว วิดีโอจะปรากฏในฟีดการอัปโหลดของผู้ใช้ที่ตรวจสอบสิทธิ์ทันที อย่างไรก็ตาม วิดีโอจะไม่แสดงแบบสาธารณะในเว็บไซต์จนกว่าจะได้รับการประมวลผล วิดีโอที่ถูกปฏิเสธหรืออัปโหลดไม่สำเร็จจะอยู่ในฟีดการอัปโหลดของผู้ใช้ที่ตรวจสอบสิทธิ์เท่านั้น โค้ดต่อไปนี้จะตรวจสอบสถานะของ YouTubeVideoEntry
เพื่อดูว่ายังไม่เผยแพร่หรือถูกปฏิเสธ
upload_status = yt_service.CheckUploadStatus(new_entry) if upload_status is not None: video_upload_state = upload_status[[]0] detailed_message = upload_status[[]1]
การอัปเดตและลบวิดีโอ
การอัปเดตข้อมูลวิดีโอ
หากต้องการอัปเดตข้อมูลเมตาของวิดีโอ ให้อัปเดตออบเจ็กต์ YouTubeVideoEntry
แล้วใช้เมธอด UpdateVideoEntry
ของออบเจ็กต์ YouTubeService
เมธอดนี้ใช้YouTubeVideoEntry
ที่มีข้อมูลเมตาที่อัปเดตเป็นพารามิเตอร์
# assuming we have a video entry that was just posted in our 'new_entry' variable new_entry.media.title.text = 'My Updated Video Title' new_entry.media.description.text = 'Just updated' updated_entry = yt_service.UpdateVideoEntry(new_entry)
การลบวิดีโอ
การลบวิดีโอนั้นง่ายมาก เพียงเรียกใช้ DeleteVideoEntry
ของออบเจ็กต์ YouTubeService
response = yt_service.DeleteVideoEntry(entry_to_be_deleted) if response: print 'Video successfully deleted!'
การใช้ฟีเจอร์ชุมชน
การเพิ่มคะแนน
หากต้องการให้คะแนนวิดีโอ ให้ใช้เมธอด AddRating
ของออบเจ็กต์ YouTubeService
โปรดทราบว่าคุณไม่สามารถให้คะแนนวิดีโอของคุณเอง และคะแนนต้องอยู่ในช่วง 1 ถึง 5 (รวม)
video_id_to_rate = 'Ncakifd_16k' video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id_to_rate) response = yt_service.AddRating(3, video_entry)
ความคิดเห็น
การดึงข้อมูลความคิดเห็นของวิดีโอ
เมื่อระบุออบเจ็กต์ YouTubeVideoEntry
หรือรหัสวิดีโอแบบง่าย คุณจะดึงข้อมูลและพิมพ์ฟีดที่มีความคิดเห็นสำหรับวิดีโอได้โดยใช้เมธอด GetYouTubeVideoCommentFeed
ของออบเจ็กต์ YouTubeService
ฟีดที่ได้จะเป็น gdata.youtube.YouTubeCommentFeed
ซึ่งประกอบด้วยออบเจ็กต์ gdata.youtube.YouTubeCommentEntry
ฟีดจะแยกวิเคราะห์ได้เช่นเดียวกับฟีดอื่นๆ ดังนี้
video_id = 'ABC123...' comment_feed = yt_service.GetYouTubeVideoCommentFeed(video_id=video_id) for comment_entry in comment_feed.entry: print comment_entry.ToString()
กำลังเพิ่มความคิดเห็น
หากต้องการเพิ่มความคิดเห็นใหม่ ให้ใช้เมธอด AddComment
ของออบเจ็กต์ YouTubeService
เมธอดนี้ต้องใช้ออบเจ็กต์ YouTubeVideoEntry
แบบเต็มที่จะแสดงความคิดเห็น รวมถึงสตริงที่แสดงความคิดเห็น
my_comment = 'what a boring test video' video_id = '9g6buYJTt_g' video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id) yt_service.AddComment(comment_text=my_comment, video_entry=video_entry)
วิดีโอตอบกลับ
การตอบกลับวิดีโอ YouTube คือวิดีโอที่เชื่อมโยงกับวิดีโอที่ 2 เป็นการตอบกลับ เราเลิกใช้งานฟีเจอร์การตอบกลับด้วยวิดีโอแล้วตามที่อธิบายไว้ในประกาศนี้ แม้ว่าวิดีโอตอบที่มีอยู่จะยังคงใช้งานได้ แต่ YouTube ไม่รองรับการเรียกข้อมูลรายการวิดีโอตอบของวิดีโอหนึ่งๆ, การอัปโหลดวิดีโอตอบใหม่ หรือลบวิดีโอตอบแล้ว แต่คุณจะลบวิดีโอที่ใช้ในวิดีโอตอบได้ ดังนั้น API จึงไม่รองรับฟังก์ชันเหล่านี้อีกต่อไป
ตอนนี้คำขอ API สำหรับการดำเนินการตอบกลับวิดีโอจะแสดงผลลัพธ์ต่อไปนี้
- คำขอดึงข้อมูลวิดีโอตอบกลับสำหรับวิดีโอแสดงผลเป็นรายการว่าง
- คำขอเพิ่มคำตอบที่เป็นวิดีโอแสดงรหัสการตอบกลับ HTTP 403
- คำขอให้ลบคำตอบที่เป็นวิดีโอจะแสดงรหัสการตอบกลับ HTTP 403
การแจ้งว่าวิดีโอไม่เหมาะสม
การเพิ่มการร้องเรียนเกี่ยวกับวิดีโอจะทําด้วยเมธอด AddComplaint
ในออบเจ็กต์ YouTubeService
หมวดหมู่การร้องเรียนต้องเป็นหมวดหมู่ที่ถูกต้อง โปรดดูข้อมูลเพิ่มเติมในส่วนการเพิ่มการร้องเรียนในคู่มือโปรโตคอล
video_id_to_flag = 'Ncakifd_16k' complaint_term = 'VIOLENCE' complaint_text = ('Please ignore this complaint. ' 'I\'m testing a YouTube API and needed to issue ' 'a complaint to test the add complaint function. ') response = yt_service.AddComplaint(complaint_text, complaint_term, video_id_to_flag)
การบันทึกและรวบรวมวิดีโอ
วิดีโอโปรด
การดึงข้อมูลวิดีโอโปรดของผู้ใช้
ผู้ใช้ YouTube สามารถเลือกทำเครื่องหมายวิดีโอที่ดูให้เป็นรายการโปรดได้ ตำแหน่งทั่วไปของฟีดโปรดของผู้ใช้คือ URL ต่อไปนี้
http://gdata.youtube.com/feeds/api/users/username/favorites
หากต้องการเรียกข้อมูลวิดีโอโปรดของผู้ใช้ ให้ใช้เมธอด GetUserFavoritesFeed
ของออบเจ็กต์ YouTubeService
โดยเมธอดนี้จะรับสตริงที่ไม่บังคับเป็นพารามิเตอร์ซึ่งแสดงถึงชื่อผู้ใช้ YouTube ของผู้ใช้ที่จะดึงข้อมูลฟีดรายการโปรด
favorite_feed = yt_service.GetUserFavoritesFeed(username='gdpython')
ฟีดที่แสดงผลคือฟีดวิดีโอปกติที่มีออบเจ็กต์ YouTubeVideoEntry
หมายเหตุ: หรือจะส่งสตริง default
เพื่อเรียกข้อมูลรายการโปรดของผู้ใช้ที่ตรวจสอบสิทธิ์ในปัจจุบันก็ได้ นี่คือลักษณะการทำงานเริ่มต้นของเมธอด GetUserFavoritesFeed
หากไม่ได้ระบุชื่อผู้ใช้
การเพิ่มรายการโปรด
หากต้องการเพิ่มวิดีโอโปรด ให้ใช้เมธอด AddVideoEntryToFavorites
ของออบเจ็กต์ YouTubeService
พารามิเตอร์คือ YouTubeVideoEntry
ที่จะเพิ่มและชื่อผู้ใช้ที่จะเพิ่มรายการโปรด (ค่าเริ่มต้นคือผู้ใช้ที่ตรวจสอบสิทธิ์ในปัจจุบัน)
video_id = 'Ncakifd_16k' video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id) response = yt_service.AddVideoEntryToFavorites(video_entry) # The response, if successfully posted is a YouTubeVideoEntry if isinstance(response, gdata.youtube.YouTubeVideoEntry): print 'Video successfully added to favorites'
การลบรายการโปรด
หากต้องการลบรายการโปรด ให้ใช้เมธอด DeleteVideoEntryFromFavorites
ของออบเจ็กต์ YouTubeService
video_id = 'Ncakifd_16k' response = yt_service.DeleteVideoEntryFromFavorites(video_id) if response is True: print 'Video deleted from favorites'
เพลย์ลิสต์
ผู้ใช้ YouTube แต่ละรายจะมีฟีดเพลย์ลิสต์ที่มีเพลย์ลิสต์ทั้งหมดที่ผู้ใช้รายนั้นสร้างขึ้น จากนั้นเพลย์ลิสต์แต่ละรายการจะมีฟีดสำหรับวิดีโอทั้งหมดที่อยู่ในเพลย์ลิสต์นั้น
กำลังเรียกข้อมูลเพลย์ลิสต์ของผู้ใช้
หากต้องการดึงข้อมูลรายการเพลย์ลิสต์ทั้งหมดของผู้ใช้ด้วยตนเอง คุณจะใช้ URL ต่อไปนี้
http://gdata.youtube.com/feeds/api/users/username/playlists
เมื่อใช้ไลบรารีของไคลเอ็นต์ Python คุณจะใช้เมธอด GetYouTubePlaylistFeed
ของออบเจ็กต์ YouTubeService
ได้โดยทำดังนี้
playlist_feed = yt_service.GetYouTubePlaylistFeed(username='gdpython') # instead of passing in a username, you can also pass the URI to the playlist feed: playlist_feed = yt_service.GetYouTubePlaylistFeed(uri='http://gdata.youtube.com/feeds/api/users/default/playlists')
หมายเหตุ: คุณสามารถส่งสตริง 'default'
เพื่ออ้างอิงถึงผู้ใช้ที่ตรวจสอบสิทธิ์แล้วในปัจจุบันแทนการส่งชื่อผู้ใช้ที่เฉพาะเจาะจง (เช่น "gdpython" ในตัวอย่างด้านบน)
gdata.youtube.YouTubePlaylistFeed
แสดงถึงฟีดของออบเจ็กต์ gdata.youtube.YouTubePlaylistEntry
ซึ่งหมายถึงเพลย์ลิสต์แต่ละรายการที่ผู้ใช้อาจมี รายการวิดีโอในเพลย์ลิสต์หนึ่งๆ จะแสดงเป็นออบเจ็กต์ gdata.youtube.YouTubePlaylistVideoEntry
ออบเจ็กต์เหล่านี้คล้ายกับออบเจ็กต์ gdata.youtube.YouTubeVideoEntry
ปกติมาก โดยมีข้อยกเว้นบางประการ คุณใช้ชื่อและคำอธิบายที่กำหนดเองกับวิดีโอได้ และช่องตำแหน่งจะระบุตำแหน่งที่วิดีโอปรากฏในเพลย์ลิสต์
กำลังดึงข้อมูลเพลย์ลิสต์
เมื่อทราบ YouTubePlaylistEntry
(แสดงถึงเพลย์ลิสต์ที่เฉพาะเจาะจง) คุณจะรับ YouTubePlaylistVideoFeed
ที่มีออบเจ็กต์ YouTubePlaylistVideoEntry
ได้ ดังที่อธิบายไว้ข้างต้น ออบเจ็กต์เหล่านี้แสดงวิดีโอแต่ละรายการในเพลย์ลิสต์ (พร้อมชื่อและคำอธิบายที่กำหนดเองได้) คุณรับฟีดนี้ได้โดยส่ง URI ของเพลย์ลิสต์ไปยังเมธอด GetYouTubePlaylistVideoFeed
ของออบเจ็กต์ YouTubeService
ดังนี้
# a typical playlist URI playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505' playlist_video_feed = yt_service.GetYouTubePlaylistVideoFeed(uri=playlist_uri) # iterate through the feed as you would with any other for playlist_video_entry in playlist_video_feed.entry: print playlist_video_entry.title.text
การเพิ่มเพลย์ลิสต์
หากต้องการเพิ่มเพลย์ลิสต์ใหม่ ให้ใช้เมธอด AddPlaylist
ของออบเจ็กต์ YouTubeService
เมธอดนี้ใช้พารามิเตอร์ต่อไปนี้ playlist_title, playlist_description (ทั้ง 2 รายการเป็นสตริง) และบูลีนที่ไม่บังคับซึ่งสามารถตั้งค่าเป็น True
หากต้องการทําเครื่องหมายเพลย์ลิสต์เป็นส่วนตัว
new_public_playlistentry = yt_service.AddPlaylist('my new playlist', 'a new playlist') if isinstance(new_public_playlistentry, gdata.youtube.YouTubePlaylistEntry): print 'New playlist added' # adding a private playlist new_private_playlistentry = yt_service.AddPlaylist('new private playlist', 'a new private playlist', True) if isinstance(new_private_playlistentry, gdata.youtube.YouTubePlaylistEntry): print 'New private playlist added'
การอัปเดตเพลย์ลิสต์
หากต้องการอัปเดตเพลย์ลิสต์ ให้ใช้เมธอด UpdatePlaylist
ของออบเจ็กต์ YouTubeService
โดยเมธอดนี้ใช้พารามิเตอร์ต่อไปนี้ รหัสของเพลย์ลิสต์ที่จะอัปเดต ชื่อใหม่ คำอธิบายใหม่ ค่าบูลีน (ไม่บังคับ) เพื่อทําเครื่องหมายเพลย์ลิสต์เป็นส่วนตัว และสตริง (ไม่บังคับ) ที่ระบุชื่อผู้ใช้ที่เป็นเจ้าของเพลย์ลิสต์ สตริงจะเป็นค่าเริ่มต้นสำหรับผู้ใช้ที่ตรวจสอบสิทธิ์แล้วในปัจจุบัน
# here we are updating a public playlist with a new title while also making it private # we assume that playlist_to_be_updated here represents a YouTubePlaylistEntry object playlist_entry_id = playlist_to_be_updated.id.text.split('/')[[]-1] # we want to keep the original description for the playlist so we store it first original_description = playlist_to_be_updated.description.text updated_playlist = yt_service.UpdatePlaylist(playlist_entry_id, 'a new updated title', original_playlist_description, playlist_private=True)
เพิ่มวิดีโอลงในเพลย์ลิสต์
คุณเพิ่มวิดีโอลงในเพลย์ลิสต์ได้โดยใช้เมธอด AddPlaylistVideoEntryToPlaylist
ของออบเจ็กต์ YouTubeService
โค้ดด้านล่างจะเพิ่มวิดีโอลงในเพลย์ลิสต์พร้อมชื่อและคำอธิบายที่กำหนดเอง
custom_video_title = 'my test video on my test playlist' custom_video_description = 'this is a test video on my test playlist' video_id = 'Ncakifd_16k' playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505' playlist_video_entry = yt_service.AddPlaylistVideoEntryToPlaylist( playlist_uri, video_id, custom_video_title, custom_video_description) if isinstance(playlist_video_entry, gdata.youtube.YouTubePlaylistVideoEntry): print 'Video added'
หมายเหตุ: โปรดทราบว่าคุณไม่จำเป็นต้องตั้งชื่อและคำอธิบายที่กำหนดเอง และหากไม่ได้ระบุชื่อและคำอธิบาย ระบบจะใช้ชื่อและคำอธิบายจริงของวิดีโอ
แก้ไขข้อมูลวิดีโอในเพลย์ลิสต์
ใช้เมธอด UpdatePlaylistVideoEntryMetaData
ของออบเจ็กต์ YouTubeService
เพื่อเปลี่ยนข้อมูลเมตาของ YouTubePlaylistVideoEntry
ในตัวอย่างนี้ เราเลือกที่จะตั้งชื่อวิดีโอใหม่ที่กำหนดเองและย้ายวิดีโอไปยังตำแหน่งแรก (ตำแหน่ง 1) ในเพลย์ลิสต์
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505' playlist_entry_id = 'B0F29389E537F888' new_video_title = 'a useful video' new_video_description = 'updated video description' updated_playlist_video_entry = yt_service.UpdatePlaylistVideoEntryMetaData( playlist_uri, playlist_entry_id, new_video_title, new_video_description, 1)
หมายเหตุ: หากต้องการเปลี่ยนคำอธิบายและชื่อของวิดีโอในเพลย์ลิสต์กลับเป็นข้อมูลเมตาเดิม ให้ส่ง NULL
สำหรับทั้งชื่อและคำอธิบาย
นำวิดีโอออกจากเพลย์ลิสต์
หากต้องการนำวิดีโอออกจากเพลย์ลิสต์ ให้ใช้เมธอด DeletePlaylistVideoEntry
ของออบเจ็กต์ YouTubeService
วิธีการนี้ต้องใช้ URI ของเพลย์ลิสต์ที่มีรายการที่จะลบ รวมถึงรหัสของรายการ
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505' playlist_entry_id = 'B0F29389E537F888' response = yt_service.DeletePlaylistVideoEntry(playlist_uri, playlist_entry_id) if response is True: print 'Entry successfully deleted'
การลบเพลย์ลิสต์
หากต้องการลบเพลย์ลิสต์ ให้ใช้เมธอด DeletePlaylist
ของออบเจ็กต์ YouTubeService
โดยส่ง URI ของเพลย์ลิสต์ที่จะลบ
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505' response = yt_service.DeletePlaylist(playlist_uri) if response is True: print 'Playlist successfully deleted'
การสมัครใช้บริการ
หากต้องการดึงข้อมูลรายการช่อง การค้นหา และรายการโปรดที่ผู้ใช้รายหนึ่งติดตาม ให้ใช้ URI ต่อไปนี้
http://gdata.youtube.com/feeds/api/users/username/subscriptions
หมายเหตุ: หรือจะส่งสตริง default
เพื่อเรียกข้อมูลรายการโปรดของผู้ใช้ที่ตรวจสอบสิทธิ์ในปัจจุบันก็ได้
การเรียกข้อมูลการสมัครใช้บริการของผู้ใช้
โค้ดต่อไปนี้แสดงวิธีเรียกข้อมูลและพิมพ์รายการการติดตามของผู้ใช้รายหนึ่ง การสมัครใช้บริการจะแสดงเป็น gdata.youtube.YouTubeSubscriptionFeed
ที่ประกอบด้วยออบเจ็กต์ gdata.youtube.YouTubeSubscriptionEntry
หากต้องการเรียกข้อมูลการติดตาม ให้ใช้เมธอด GetYouTubeSubscriptionFeed
ของออบเจ็กต์ YouTubeService
โดยส่ง URI ของฟีดการติดตามหรือชื่อผู้ใช้ที่จะเรียกข้อมูลฟีดการติดตาม พารามิเตอร์ชื่อผู้ใช้จะเป็นค่าเริ่มต้นของผู้ใช้ที่ตรวจสอบสิทธิ์อยู่ในขณะนี้
subscription_feed = yt_service.GetYouTubeSubscriptionFeed(username='gdpython') if isinstance(subscription_feed, gdata.youtube.YouTubeSubscriptionFeed)): # given a YouTubeSubscriptionEntry we can determine it's type (channel, favorite, or query) for entry in subscription_feed.entry: print entry.GetSubscriptionType()
การเพิ่มการสมัครใช้บริการ
คุณสามารถสร้างการสมัครใช้บริการใหม่ได้โดยแทรก YouTubeSubsciptionEntry
ใหม่ลงในฟีดการสมัครใช้บริการของผู้ใช้ที่ตรวจสอบสิทธิ์แล้ว เราสร้างการติดตามได้ 3 ประเภท ได้แก่ การติดตามช่องของผู้ใช้ (โดยใช้ AddSubscriptionToChannel
) การติดตามรายการโปรดของผู้ใช้ (โดยใช้ AddSubscriptionToFavorites
) หรือการติดตามคีย์เวิร์ดที่ต้องการ (โดยใช้ AddSubscriptionToQuery
) รหัสต่อไปนี้จะติดตามผู้ใช้ที่ตรวจสอบสิทธิ์ให้ช่อง "GoogleDevelopers"
new_subscription = yt_service.AddSubscriptionToChannel( username_to_subscribe_to='GoogleDevelopers') if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry): print 'New subscription added'
นอกจากนี้ คุณยังติดตามรายการโปรดของผู้ใช้ "GoogleDevelopers" ได้ด้วย โดยทำดังนี้
new_subscription = yt_service.AddSubscriptionToFavorites( username='GoogleDevelopers') if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry): print 'New subscription added'
สุดท้าย คุณยังติดตามข้อความค้นหาที่ต้องการได้อีกด้วย ในส่วนนี้เราจะสมัครรับข้อมูลการค้นหาวิดีโอที่ติดแท็ก "python"
new_subscription = yt_service.AddSubscriptionToQuery(query='python') if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry): print 'New subscription added'
การลบการสมัครใช้บริการ
หากต้องการลบการสมัครใช้บริการของผู้ใช้ ให้ใช้เมธอด DeleteSubscription
ของออบเจ็กต์ YouTubeService
sample_subscription_uri = ('http://gdata.youtube.com/feeds/api/users/' 'gdpython/subscriptions/c0c77ca6102a7479') response = yt_service.DeleteSubscription(sample_subscription_uri) if response is True: print 'Subscription successfully deleted'
การเปิดใช้การโต้ตอบของผู้ใช้
โปรไฟล์ผู้ใช้
ดึงข้อมูลโปรไฟล์ของผู้ใช้
หากต้องการดึงข้อมูลโปรไฟล์ YouTube ของผู้ใช้ด้วยตนเอง คุณจะใช้ URI ต่อไปนี้
http://gdata.youtube.com/feeds/api/users/username
คุณสามารถดึงข้อมูล gdata.youtube.YouTubeUserEntry
ได้ด้วยเมธอด GetYouTubeUserEntry
ของออบเจ็กต์ YouTubeService
user_entry = yt_service.GetYouTubeUserEntry(username='gdpython') # we can then write a helper function to print out the user details def PrintUserEntry(entry): # print required fields where we know there will be information print 'URI: %s\n' % entry.id.text print 'Age: %s\n' % entry.age.text print 'Gender: %s\n' % entry.gender.text print 'Location: %s\n' % entry.location.text # check if there is information in the other fields and if so print it if user.first_name: print 'First Name: %s\n' % user.first_name.text if user.last_name: print 'Last Name: %s\n' % user.last_name.text if user.relationship: print 'Relationship: %s\n' % user.relationship.text if user.description: print 'About me: %s\n' % user.description.text for link in user.link: if link.rel == 'related': print 'Website: %s\n' % link.href if user.company: print 'Company: %s\n' % user.company.text if user.occupation: print 'Occupation: %s\n' % user.occupation.text if user.school: print 'School: %s\n' % user.school.text if user.hobbies: print 'Hobbies: %s\n' % user.hobbies.text if user.movies: print 'Movies: %s\n' % user.movies.text if user.music: print 'Music: %s\n' % user.music.text if user.books: print 'Books: %s\n' % user.books.text if user.hometown: print 'Hometown: %s\n' % user.hometown.text
รายชื่อติดต่อ
คุณสามารถเรียกข้อมูลรายชื่อติดต่อของผู้ใช้รายหนึ่งๆ ได้จาก URL ต่อไปนี้
http://gdata.youtube.com/feeds/api/users/username/contacts
การดึงข้อมูลรายชื่อติดต่อของผู้ใช้
คุณสามารถใช้เมธอด GetYouTubeContactFeed
ของออบเจ็กต์ YouTubeService
เพื่อดึงข้อมูล gdata.youtube.YouTubeContactFeed
ซึ่งประกอบด้วยออบเจ็กต์ gdata.youtube.YouTubeContactEntry
contact_feed = yt_service.GetYouTubeContactFeed(username='GoogleDevelopers') for entry in contact_feed.entry: print entry.title.text # find the apprpriate category element to find out the contact type for category in entry.category: if category.scheme == 'http://gdata.youtube.com/schemas/2007/contact.cat': print category.term
การเพิ่มรายชื่อติดต่อ
หากต้องการเพิ่มรายชื่อติดต่อใหม่ลงในฟีดรายชื่อติดต่อของผู้ใช้ ให้ใช้เมธอด AddContact
ของออบเจ็กต์ YouTubeService
new_contact = yt_service.AddContact(contact_username='GoogleDevelopers') if isinstance(new_contact, gdata.youtube.YouTubeContactEntry) print 'New contact added'
ยอมรับ/ปฏิเสธรายชื่อติดต่อ
หากต้องการอัปเดตรายชื่อติดต่อ ให้ใช้เมธอด UpdateContact
ของออบเจ็กต์ YouTubeService
วิธีนี้สามารถใช้เพื่อยอมรับ/ปฏิเสธคำขอติดต่อ และจัดหมวดหมู่รายชื่อติดต่อเป็น "เพื่อน" หรือ "ครอบครัว" ในตัวอย่างด้านล่าง เรายอมรับรายชื่อติดต่อ แล้วตั้งค่าหมวดหมู่เป็น "ครอบครัว"
# in this case user 'gdpython' has requested to be our contact #so the original contact status is 'pending' updated_contact = yt_service.UpdateContact('gdpython', 'accepted', 'Family') if isinstance(updated_contact, gdata.youtube.YouTubeContactEntry) print 'New contact added'
การลบรายชื่อติดต่อ
หากต้องการลบรายชื่อติดต่อ ให้ใช้เมธอด DeleteContact
ของออบเจ็กต์ YouTubeService
โดยส่งผ่านชื่อผู้ใช้ของรายชื่อติดต่อที่ต้องการลบ
response = yt_service.DeleteContact(contact_username='gdpython') if response is True: print 'Contact deleted'