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文件。 –

相關問題