python - 我如何使用 Youtube api 将整个文件夹上传到 Youtube

标签 python youtube youtube-api youtube-data-api

我需要将近两百个视频上传到我的 channel 。我尝试使用 yotube api 上传它们,但出现错误。我尝试使用 for 循环对每个视频发出请求。如果没有 for 循环,它只能上传一个视频,但我想上传整个文件夹,而无需多次输入 OAuth key

错误:

  File "C:\Python36\lib\ssl.py", line 972, in sendall
    v = self.send(byte_view[count:])
  File "C:\Python36\lib\ssl.py", line 941, in send
    return self._sslobj.write(data)
  File "C:\Python36\lib\ssl.py", line 642, in write
    return self._sslobj.write(data)
socket.timeout: The write operation timed out
import os
import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors
from googleapiclient.http import MediaFileUpload

scopes = ["https://www.googleapis.com/auth/youtube.upload"]

def main():
    Song_list=os.listdir('C:\\Users\\erkan\\Desktop\\müzik ve kutusu\\hazir')

    os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
    api_service_name = "youtube"
    api_version = "v3"
    client_secrets_file = "client_secret.json"

    flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
        client_secrets_file, scopes)
    credentials = flow.run_console()
    youtube = googleapiclient.discovery.build(
        api_service_name, api_version, credentials=credentials)

    for song in Song_list: ######################## the For Loop ################
        song_name = song.replace('.mp4', '')
        request = youtube.videos().insert(
            part="snippet,status",
            body={
                "snippet": {
                    "categoryId": "10",
                    "description": "Description of uploaded video.",
                    "title": song_name,
                    "tags": ["müzik", "ve", "kutusu", song_name]
                },
                "status": {
                    "privacyStatus": "private"
                }
            },

            media_body=MediaFileUpload('C:\\Users\\erkan\\Desktop\\müzik ve kutusu\\hazir\\' + song)
        )
        response = request.execute()
        print(response)
        print(song + " uploaded")
if __name__ == "__main__":
    main()

最佳答案

我通过改变解决了这个问题

os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "0"

media_body=MediaFileUpload('C:\\Users\\erkan\\Desktop\\müzik ve kutusu\\hazir\\' + song, chunksize=-1, resumable=True)

但我不知道其中哪一个解决了我的问题 ́\_(ツ)_/́

关于python - 我如何使用 Youtube api 将整个文件夹上传到 Youtube,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59652650/

相关文章:

python - 使用预先确定的文本启动 raw_input()

javascript - 从 YouTube 播放器 API 调用单个函数?

ios - 是否可以在不显示/添加 View 的情况下在 iOS 上播放 YouTube 视频,同时仍然遵守 YouTube 的服务条款?

youtube - 启用自动播放功能后,为什么某些YouTube嵌入不可用?

javascript - 当 channel 开始直播时从 Youtube API 获取通知?

python - SSL 下载 NLTK 数据时出错

python - 将大型 python 包加载到 AWS lambda 函数中

python - 毫无异常(exception)地从列表中获取第一个元素

hyperlink - 如何从YouTube获取视频下载链接?

ios - 在iOS7的UIWebView中嵌入iFrame吗?