如何运行 Youtube Api 视频:插入 (python)
Posted
技术标签:
【中文标题】如何运行 Youtube Api 视频:插入 (python)【英文标题】:How to run Youtube Api Video: insert (python) 【发布时间】:2021-12-03 13:18:14 【问题描述】:我想将 Youtube api 添加到我的项目中以从我的网站加载视频,直到现在我只使用 html、css、javascript、php 和 sql 等语言,现在我在这个链接上看到了 https://learndataanalysis.org/how-to-upload-a-video-to-youtube-using-youtube-data-api-in-python/ 一个关于如何使用 python 实现 youtube api(我有 0 知识)。 这些是我正在使用的代码: - 第一个名为“upload_video.py”
import datatime
from Google import Create_Service
from googleapiclient.http import MediaFileUpload
CLIENT_SECRET_FILE = 'client_secret.json'
API_NAME = 'youtube'
API_VERSION = 'v3'
SCOPES = ['https://www.googleapis.com/auth/youtube.upload']
service = Create_Service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES)
upload_date_time = datetime.datetime(2021, 11, 25, 12, 30, 0).isoformat() + '.000Z'
#print(“Site to refer: https://developers.google.com/youtube/v3/docs/videos/insert#.net”)
request_body =
'snippet':
'categoryId': 19,
'title': 'Uploading Test',
'description': '1° test di caricamento su youtube',
'tags': ['Travel', 'video test', 'Treavel tips']
,
'status':
'privacyStatus': 'private',
'publishAt': upload_date_time,
'selfDeclareMadeForKids': False
,
'notifySubscribers': False
mediaFile = MediaFileUpload('../Video/Clouds - 64767.MP4')
response_upload = service.videos().insert(
part= 'snippet, status',
body= request_body,
media_body= mediaFile
).execute()
service.thumbnails().set(
videoId= response_upload.get('id'),
media_body= MediaFileUpload('../img/Thumbnail_Video/logo_STM.png')
).execute()
-第二个名为“Google.py”
import pickle
import os
from google_auth_oauthlib.flow import Flow, InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload, MediaIoBaseDownload
from google.auth.transport.requests import Request
def Create_Service(client_secret_file, api_name, api_version, *scopes):
print(client_secret_file, api_name, api_version, scopes, sep='-')
CLIENT_SECRET_FILE = client_secret_file
API_SERVICE_NAME = api_name
API_VERSION = api_version
SCOPES = [scope for scope in scopes[0]]
print(SCOPES)
cred = None
pickle_file = f'token_API_SERVICE_NAME_API_VERSION.pickle'
# print(pickle_file)
if os.path.exists(pickle_file):
with open(pickle_file, 'rb') as token:
cred = pickle.load(token)
if not cred or not cred.valid:
if cred and cred.expired and cred.refresh_token:
cred.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
cred = flow.run_local_server()
with open(pickle_file, 'wb') as token:
pickle.dump(cred, token)
try:
service = build(API_SERVICE_NAME, API_VERSION, credentials=cred)
print(API_SERVICE_NAME, 'service created successfully')
return service
except Exception as e:
print('Unable to connect.')
print(e)
return None
def convert_to_RFC_datetime(year=1900, month=1, day=1, hour=0, minute=0):
dt = datetime.datetime(year, month, day, hour, minute, 0).isoformat() + 'Z'
return dt
-然后是我在 Google Cloud Platform 上创建的名为“client_secret_194676583237-td2pjjvuhtad5dfg1fn65r9g0jin1mmm.apps.googleusercontent.com.json”的 JSON 文件(我创建了项目、OAuth 2.0 客户端 ID 并添加了 Api)。
所以我的第一个问题是:我如何让这段代码工作?我缺少什么?(在教程视频中,它只使用这段代码,但我无法让它运行) 第二个问题我是否应该尝试使用 php 来运行 API?还是更好的 Python?
注意:我已经在 youtube 上验证了频道,我使用的是 Sublime text 3 和 Xampp。
【问题讨论】:
如果你在让别人的代码工作时遇到困难——尤其是如果你不认为代码有问题,而是你必须做一些外部的事情来“让它运行”——那么您需要询问该代码的作者(或阅读相关文档等),而不是在这里询问。 Stack Overflow 不是技术支持,也不是论坛。请阅读How to Ask 了解主题内容。 欢迎加入堆栈,请记住在发布问题时说明您的问题。究竟是什么不适用于您的代码。遵循官方示例 Python quickstart 可能会有所帮助,但它是已安装的应用程序而不是 Web 应用程序。 【参考方案1】:您尚未说明您的代码存在什么问题。所以我会解决我看到你会遇到的问题。
已安装的应用程序与网络应用程序
我想将 Youtube api 添加到我的项目中以从我的网站加载视频
您将遇到的第一个问题是您正在使用
InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
这仅适用于已安装的应用程序,因此 Web 浏览器同意窗口将在运行代码的机器上打开。如果您尝试将其放在网络服务器上,它会尝试在服务器上打开同意屏幕。
Oauth2 您将上传到谁的帐户。
您将遇到的第二个问题是,运行您的代码的任何人都将连接到他们自己的 YouTube 频道,而不是您的频道。如果您希望他们与您的连接,那么您将不得不存储一个刷新令牌供他们使用上传。这有点棘手。
配额
将视频上传到 YouTube api 受您的配额限制。您使用 YouTube api 的默认配额是 10000,这将允许您每天上传大约六个视频。如果您想上传更多,则需要申请更多配额。
公共视频与私人视频
在应用程序通过验证流程之前,使用 YouTube api 上传的所有视频都将是私有的。我建议您现在就查看验证流程,而不是等到您的申请完成。
【讨论】:
我知道我应该问谁制作了代码,但因为我问的是一个旧视频,但直到现在我才收到答案,所以我在这里问,无论如何你给我有用的信息谢谢。 我认为我给你的信息是一个好的开始,特别是如果你一开始不是程序员的话。如果你真的想把它放在网络上,那么你需要一个支持网络的样本,以及你现在使用的东西。如果您希望其他人上传到您的 YouTube 频道,无论发生什么情况,您都必须对其进行监控,因为如果您必须使用刷新令牌进行访问,它就不会完美。但它是可行的,我在几年前使用 PHP 为客户做了这个。以上是关于如何运行 Youtube Api 视频:插入 (python)的主要内容,如果未能解决你的问题,请参考以下文章
在搜索Youtube api后,如何获取Youtube视频[关闭]
YouTube Data v3 API - 如何从频道请求所有视频?
如何在 WordPress 插件页面中插入 youtube 视频?