1

我正在使用Django和angularJS开发应用程序。 工作服务器(用python,flask编码)所做的主要工作之一是从s3下载视频(由用户上传)并将视频上传到YouTube。从YouTube上删除视频YouTube Data API v3和python

有没有办法来“删除一个在python中的youtube视频”

在python中没有这样的代码示例。 有没有人知道如何做到这一点,就像下面的代码示例一样?

这是上传视频的示例代码。我提到了这个代码并实现了上传功能。

def get_authenticated_service(args): 
    flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE, 
    scope=YOUTUBE_UPLOAD_SCOPE, 
    message=MISSING_CLIENT_SECRETS_MESSAGE) 

    storage = Storage("%s-oauth2.json" % sys.argv[0]) 
    credentials = storage.get() 

    if credentials is None or credentials.invalid: 
    credentials = run_flow(flow, storage, args) 

    return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, 
    http=credentials.authorize(httplib2.Http())) 

def initialize_upload(youtube, options): 
    tags = None 
    if options.keywords: 
    tags = options.keywords.split(",") 

    body=dict(
    snippet=dict(
     title=options.title, 
     description=options.description, 
     tags=tags, 
     categoryId=options.category 
    ), 
    status=dict(
     privacyStatus=options.privacyStatus 
    ) 
) 

    # Call the API's videos.insert method to create and upload the video. 
    insert_request = youtube.videos().insert(
    part=",".join(body.keys()), 
    body=body, 
    media_body=MediaFileUpload(options.file, chunksize=-1, resumable=True) 
) 

    resumable_upload(insert_request) 
+0

它的API的一部分,我不明白为什么它不会如果您使用的是https://developers.google.com/youtube/v3/docs/videos/delete – DaImTo

+0

https://google-api-client-libraries.appspot.com/documentation/,请成为Python客户端库的一部分youtube/v3/python/latest/youtube_v3.videos.html#delete – DaImTo

+0

@DaImTo谢谢! – kyle

回答

0

假设你正在使用Python客户端库,我发现这个在documentation

delete(id=*, onBehalfOfContentOwner=None)删除YouTube视频。

参数:id:string,id参数为正在删除的资源指定YouTube视频ID 。在视频资源中,ID 属性指定视频的ID。 (必填)
onBehalfOfContentOwner:string,注意:此参数仅用于YouTube内容合作伙伴的 。

+0

感谢您的帮助。我想出了如何在你的帮助下做到这一点 – kyle

1

制作一个名为:delete_video.py

用法:蟒蛇delete_video.py --id = MY_VID_ID

#!/usr/bin/python 

import httplib 
import httplib2 
import os 
import random 
import sys 
import time 

from apiclient.discovery import build 
from apiclient.errors import HttpError 
from apiclient.http import MediaFileUpload 
from oauth2client.client import flow_from_clientsecrets 
from oauth2client.file import Storage 
from oauth2client.tools import argparser, run_flow 


# Explicitly tell the underlying HTTP transport library not to retry, since 
# we are handling retry logic ourselves. 
httplib2.RETRIES = 1 

# Maximum number of times to retry before giving up. 
MAX_RETRIES = 10 

# Always retry when these exceptions are raised. 
RETRIABLE_EXCEPTIONS = (httplib2.HttpLib2Error, IOError, httplib.NotConnected, 
    httplib.IncompleteRead, httplib.ImproperConnectionState, 
    httplib.CannotSendRequest, httplib.CannotSendHeader, 
    httplib.ResponseNotReady, httplib.BadStatusLine) 

# Always retry when an apiclient.errors.HttpError with one of these status 
# codes is raised. 
RETRIABLE_STATUS_CODES = [500, 502, 503, 504] 

# The CLIENT_SECRETS_FILE variable specifies the name of a file that contains 
# the OAuth 2.0 information for this application, including its client_id and 
# client_secret. You can acquire an OAuth 2.0 client ID and client secret from 
# the Google Developers Console at 
# https://console.developers.google.com/. 
# Please ensure that you have enabled the YouTube Data API for your project. 
# For more information about using OAuth2 to access the YouTube Data API, see: 
# https://developers.google.com/youtube/v3/guides/authentication 
# For more information about the client_secrets.json file format, see: 
# https://developers.google.com/api-client-library/python/guide/aaa_client_secrets 
CLIENT_SECRETS_FILE = "client_secrets.json" 

# This OAuth 2.0 access scope allows an application to upload files to the 
# authenticated user's YouTube channel, but doesn't allow other types of access. 
YOUTUBE_DELETE_SCOPE = "https://www.googleapis.com/auth/youtube" 
YOUTUBE_API_SERVICE_NAME = "youtube" 
YOUTUBE_API_VERSION = "v3" 

# This variable defines a message to display if the CLIENT_SECRETS_FILE is 
# missing. 
MISSING_CLIENT_SECRETS_MESSAGE = """ 
WARNING: Please configure OAuth 2.0 

To make this sample run you will need to populate the client_secrets.json file 
found at: 

    %s 

with information from the Developers Console 
https://console.developers.google.com/ 

For more information about the client_secrets.json file format, please visit: 
https://developers.google.com/api-client-library/python/guide/aaa_client_secrets 
""" % os.path.abspath(os.path.join(os.path.dirname(__file__), 
            CLIENT_SECRETS_FILE)) 

VALID_PRIVACY_STATUSES = ("public", "private", "unlisted") 


def get_authenticated_service(args): 
    flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE, 
    scope=YOUTUBE_DELETE_SCOPE, 
    message=MISSING_CLIENT_SECRETS_MESSAGE) 

    storage = Storage("%s-oauth2.json" % sys.argv[0]) 
    credentials = storage.get() 

    if credentials is None or credentials.invalid: 
    credentials = run_flow(flow, storage, args) 

    return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, 
    http=credentials.authorize(httplib2.Http())) 

if __name__ == '__main__': 
    argparser.add_argument("--id", required=True, help="Video youtube ID") 
    args = argparser.parse_args() 

    if not args.id: 
     exit("Please specify a youtube ID using the --id= parameter.") 

    youtube = get_authenticated_service(args) 

    try: 
     resp = youtube.videos().delete(id=args.id, onBehalfOfContentOwner=None).execute() 

    except HttpError, e: 
     print "An HTTP error %d occurred:\n%s" % (e.resp.status, e.content) 
+0

感谢分享,在一个捏中很有用。唯一需要记住安装[API库](https://developers.google.com/api-client-library/python/)并设置需要应用程序引擎项目的client_secrets.json文件。 –

相关问题