เมื่อไม่นานมานี้ฉันทำงานให้กับลูกค้าโดยรวมบทวิจารณ์วิดีโอไว้ในเว็บไซต์ของพวกเขา เช่นเดียวกับนักพัฒนาที่มีแรงบันดาลใจในการแก้ปัญหาใหม่สิ่งแรกที่ฉันทำคือ Google และฉันพบคำตอบที่ไม่ช่วยเหลือหรือเข้าใจผิดมากมายเกี่ยวกับวิธีบรรลุสิ่งที่แตกต่างไปจากเดิมอย่างสิ้นเชิงหรือแพ็คเกจ Python ที่ล้าสมัยและไม่ได้รับการดูแล ในที่สุดฉันก็ใช้สัญลักษณ์แสดงหัวข้อย่อยและทีมและฉันสร้างทุกอย่างตั้งแต่เริ่มต้น: เราสร้างมุมมองเรียนรู้เกี่ยวกับ API ของ Google สร้างไคลเอ็นต์ API และในที่สุดก็ประสบความสำเร็จในการอัปโหลดวิดีโอจาก Django โดยใช้โปรแกรม
ในโพสต์นี้ฉันจะพยายามแนะนำคุณทีละขั้นตอนในการโพสต์วิดีโอ YouTube จากแอป Django ของคุณ สิ่งนี้จะต้องใช้ข้อมูลรับรอง Google API เล็กน้อยโดยเริ่มจากอินเทอร์เฟซเว็บจากนั้นจึงใช้รหัส ในส่วนของ YouTube นั้นตรงไปตรงมามาก เราจำเป็นต้องเข้าใจว่าสิ่งต่างๆของ Google ทำงานอย่างไรเพราะบางครั้งอาจเป็นเรื่องยุ่งยากและข้อมูลก็กระจายไปตามสถานที่ต่างๆ
ข้อกำหนดเบื้องต้น
ขอแนะนำให้ทำความคุ้นเคยกับสิ่งต่อไปนี้ก่อนที่เราจะเริ่มทำงาน:
โค้ดที่น่าสนใจที่ควรทราบคือ Python Snippet ต่อไปนี้จากไฟล์ เอกสาร Google YouTube API :
# Sample python code for videos.insert def videos_insert(client, properties, media_file, **kwargs): resource = build_resource(properties) # See full sample for function kwargs = remove_empty_kwargs(**kwargs) # See full sample for function request = client.videos().insert( body=resource, media_body=MediaFileUpload(media_file, chunksize=-1, resumable=True), **kwargs ) # See full sample for function return resumable_upload(request, 'video', 'insert') media_file = 'sample_video.flv' if not os.path.exists(media_file): exit('Please specify a valid file location.') videos_insert(client, {'snippet.categoryId': '22', 'snippet.defaultLanguage': '', 'snippet.description': 'Description of uploaded video.', 'snippet.tags[]': '', 'snippet.title': 'Test video upload', 'status.embeddable': '', 'status.license': '', 'status.privacyStatus': 'private', 'status.publicStatsViewable': ''}, media_file, part='snippet,status')
หลังจากที่คุณอ่านข้อกำหนดเบื้องต้นแล้วก็ถึงเวลาเริ่มต้น มาดูกันว่าเราต้องการอะไร
โดยพื้นฐานแล้วเรามาสร้างสภาพแวดล้อมเสมือนจริงกัน ฉันชอบเป็นการส่วนตัว pyenv . การตั้งค่าทั้งสองอยู่นอกเหนือขอบเขตของโพสต์นี้ดังนั้นฉันจะโพสต์คำสั่ง pyenv ด้านล่างและหากค่ากำหนดของคุณคือ virtualenv
อย่าลังเลที่จะแทนที่คำสั่งตามนั้น
ฉันจะใช้ Python 3.7 และ Django 2.1 ในโพสต์นี้
➜ ~/projects $ mkdir django-youtube ➜ ~/projects $ cd django-youtube ➜ ~/projects/django-youtube $ pyenv virtualenv 3.7.0 djangoyt ➜ ~/projects/django-youtube $ vim .python-version
มาใส่ไว้ในเนื้อหากัน (หากคุณใช้ pyenv ดังนั้นจะเปิดใช้งานโดยอัตโนมัติเมื่อคุณเข้าสู่โฟลเดอร์):
djangoyt
การติดตั้งการอ้างอิง:
วิธีปรับปรุงประสิทธิภาพของเซิร์ฟเวอร์ sql
➜ ~/projects/django-youtube $ pip install google-api-python-client google-auth google-auth-oauthlib google-auth-httplib2 oauth2client Django unipath jsonpickle
ตอนนี้ถึงเวลาเริ่มโครงการ django ของเรา:
➜ ~/projects/django-youtube $ django-admin startproject django_youtube .
มากำหนดค่าข้อมูลรับรองโครงการของเราตอนนี้เพื่อให้เราสามารถใช้ Google API ได้
ขั้นตอนที่ 1. ไปที่ URL ต่อไปนี้:
https://console.developers.google.com/apis/library/youtube.googleapis.com
ขั้นตอนที่ 2. สร้างโครงการใหม่
ขั้นตอนที่ 3. คลิก“ เปิดใช้งาน API และบริการ”
ขั้นตอนที่ 4. มองหา YouTube Data API v3 แล้วคลิก“ เปิดใช้งาน”
ขั้นตอนที่ 5. คุณควรได้รับข้อความเกี่ยวกับข้อมูลรับรอง
ขั้นตอนที่ 6. คลิกที่ปุ่มสีน้ำเงิน 'สร้างข้อมูลรับรอง' ทางด้านขวาและคุณจะได้รับหน้าจอต่อไปนี้:
ขั้นตอนที่ 7. เลือกเว็บเซิร์ฟเวอร์ข้อมูลผู้ใช้:
หลักการของความเชื่อมโยงและการปิดล้อมแสดงให้เห็นได้ดีที่สุดว่า
ขั้นตอนที่ 8. เพิ่มต้นกำเนิด JS ที่ได้รับอนุญาตและเปลี่ยนเส้นทาง URI ไปต่อจนจบ:
วิธีแปลงข้อมูลใน excel
ตกลงเราตั้งค่าข้อมูลรับรองเสร็จแล้ว คุณสามารถดาวน์โหลดข้อมูลรับรองในรูปแบบ JSON หรือคัดลอกไฟล์ รหัสลูกค้า และ ความลับของลูกค้า .
มาเริ่มแอป Django ตัวแรกของเรา ฉันมักจะตั้งชื่อว่า 'แก่น':
(djangoyt) ➜ ~/projects/django-youtube $ python manage.py startapp core
ตอนนี้เรามาเพิ่มสิ่งต่อไปนี้ในไฟล์ root urls.py เพื่อกำหนดเส้นทางคำขอหน้าแรกไปยังแอปหลักของเรา:
# /urls.py from django.urls import path, include path('', include(('core.urls', 'core'), namespace='core')),
ในแอปหลักเรามีไฟล์ urls.py อีกไฟล์หนึ่งโดยมีการกำหนดค่าบางอย่างด้วย:
# core/urls.py from django.conf import settings from django.conf.urls.static import static from django.urls import path from .views import HomePageView urlpatterns = [ path('', HomePageView.as_view(), name='home') ] if settings.DEBUG: urlpatterns += static( settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpatterns += static( settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
เห็นมีเส้นทางว่างชี้ไปที่ HomePageView
. ได้เวลาเพิ่มรหัสแล้ว
มาทำง่ายๆกันเถอะ TemplateView
เพียงเพื่อดูว่ามันทำงาน
# core/views.py from django.shortcuts import render from django.views.generic import TemplateView class HomePageView(TemplateView): template_name = 'core/home.html'
และแน่นอนว่าเราต้องการเทมเพลตพื้นฐาน:
# core/templates/core/home.html Here is the form:
{% csrf_token %} {{ form.as_p }}
อย่าลืมเพิ่มช่องวิดีโอลงใน YouTubeForm:
class YouTubeForm(forms.Form): video = forms.FileField()
ไปเลย!
จากนั้นตรวจสอบที่หน้า Studio บัญชี YouTube ของคุณ (สิ่งสำคัญคือต้องมีช่อง):
http //api.streamin.to/pair
ที่นี่คือ!
โค้ดต้องได้รับการปรับปรุง แต่ก็เป็นจุดเริ่มต้นที่ดี ฉันหวังว่ามันจะช่วยได้มากที่สุดของ Google YouTube API ปัญหาการรวม สิ่งที่สำคัญเพิ่มเติมที่ควรทราบมีดังนี้
invalid_grant
การตอบสนอง การให้สิทธิ์ผู้ใช้รายเดิมที่ให้สิทธิ์ลูกค้าอีกครั้งจะไม่รับประกันโทเค็นการรีเฟรชของคุณ คุณต้องเพิกถอนใบสมัครในหน้าบัญชี Google ของคุณจากนั้นทำตามขั้นตอนการอนุญาตอีกครั้ง ในบางกรณีคุณอาจต้องรันงานเพื่อรีเฟรชโทเค็นต่อไป
การอัปโหลดใช้เวลามากและการทำในขั้นตอนการสมัครหลักของคุณอาจทำให้แอปพลิเคชันทั้งหมดถูกบล็อกในขณะที่การอัปโหลดเกิดขึ้น วิธีที่ถูกต้องคือย้ายไปไว้ในกระบวนการของตนเองและจัดการการอัปโหลดแบบอะซิงโครนัส
สับสน? อย่าเป็นอ่านเพิ่มเติมใน การจัดเตรียมเวิร์กโฟลว์พื้นหลังในคื่นฉ่ายสำหรับ Python .
จากเว็บไซต์อย่างเป็นทางการ:“ Django เป็นเฟรมเวิร์ก Python Web ระดับสูงที่สนับสนุนการพัฒนาอย่างรวดเร็วและการออกแบบที่สะอาดและใช้งานได้จริง” เป็น Python Web Framework ที่ใหญ่ที่สุดและมีการใช้กันอย่างแพร่หลายเนื่องจากมีเครื่องมือสำหรับการพัฒนาเว็บที่รวดเร็วรวมถึงเทมเพลตการจัดการฐานข้อมูลและความปลอดภัย
อย่างแน่นอน. เป็นที่นิยมมากที่สุดและเป็นหนึ่งในกรอบงานอันดับต้น ๆ Django ดูแลงานเว็บทั่วไปส่วนใหญ่เพื่อให้คุณสามารถมุ่งเน้นไปที่แอปพลิเคชันของคุณได้ หากคุณให้ตัวเลือกสามทางเลือกสำหรับนักพัฒนา Python เมื่อเริ่มโครงการเว็บ Django จะเป็นหนึ่งในนั้นอย่างแน่นอน
เป็น API ที่ Google จัดเตรียมไว้เพื่อรวมฟังก์ชันการทำงานของ YouTube ทุกประเภทไว้ในไซต์หนึ่ง ๆ ซึ่งรวมถึงการอัปโหลดวิดีโอการจัดการเพลย์ลิสต์และการสมัครรับข้อมูลการจัดการการตั้งค่าช่องการค้นหาและอื่น ๆ
ขั้นตอนแรกคือไปที่นี่ (https://developers.google.com/youtube/v3/) แต่จะนำคุณไปยัง Google Developers Console (https://console.developers.google.com/) . คุณสามารถค้นหา Youtube API แล้วเพิ่มได้ที่นั่น
Google API บางตัวให้บริการฟรีและอื่น ๆ ไม่ใช้ ตัวอย่างเช่น Youtube Data API นั้นฟรี
ในการปฏิบัติตามโพสต์นี้อย่างเคร่งครัดคุณต้องใช้ Python 3.7 และ Django 2.1 แต่สิ่งนี้ควรใช้กับ Python 2.7, 3.4, 3.5, 3.6 และ Django 1.1 และ 2.0 ด้วย
คุณต้องมีบัญชี YouTube และอย่างน้อยหนึ่งช่อง