2017-01-21 6 views
2

Извините за основной вопрос, но я искал везде пример использования вызова youtube api через command-line и как установить его правильные поля метаданных.Youtube-api :: установка полей метаданных через командную строку

ниже код предоставляется Google здесь: Search Youtube by 'keyword'

#!/usr/bin/python 

import os 
from apiclient.discovery import build 
from apiclient.errors import HttpError 
from oauth2client.tools import argparser 

DEVELOPER_KEY = "mykey" 
YOUTUBE_API_SERVICE_NAME = "youtube" 
YOUTUBE_API_VERSION = "v3" 


def youtube_search(options): 
    youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, 
    developerKey=DEVELOPER_KEY) 

    search_response = youtube.search().list(
    q=options.q, 
    part="id,snippet", 
    maxResults=options.max_results 
).execute() 

    videos = [] 
    channels = [] 
    playlists = [] 

    for search_result in search_response.get("items", []): 
    if search_result["id"]["kind"] == "youtube#video": 
     videos.append("%s (%s)" % (search_result["snippet"]["title"], 
           search_result["id"]["videoId"])) 
    elif search_result["id"]["kind"] == "youtube#channel": 
     channels.append("%s (%s)" % (search_result["snippet"]["title"], 
            search_result["id"]["channelId"])) 
    elif search_result["id"]["kind"] == "youtube#playlist": 
     playlists.append("%s (%s)" % (search_result["snippet"]["title"], 
            search_result["id"]["playlistId"])) 

    print "Videos:\n", "\n".join(videos), "\n" 
    print "Channels:\n", "\n".join(channels), "\n" 
    print "Playlists:\n", "\n".join(playlists), "\n" 


if __name__ == "__main__": 
    argparser.add_argument("--q", help="Search term", default="Google") 
    argparser.add_argument("--max-results", help="Max results", default=25) 
    args = argparser.parse_args() 

    try: 
    youtube_search(args) 
    except HttpError, e: 
    print "An HTTP error %d occurred:\n%s" % (e.resp.status, e.content) 
search.py 

Я следовал пример, приведенный здесь: Youtube>Data API>SampleRequests

поиск, например, для видео Karma Police, у меня есть пробовал, соответственно:

$ python script.py --q="karma police", безрезультатно. Он ничего не печатает.

Что мне не хватает?

пс. дополнительные учетные данные установлены в окружении .json file, расположенном в том же каталоге.

EDIT: отслеживающий:

Traceback (most recent call last): 
    File "audio.py", line 64, in <module> 
    youtube_search(args) 
    File "audio.py", line 24, in youtube_search 
    developerKey=DEVELOPER_KEY) 
    File "/Library/Python/2.7/site-packages/oauth2client/_helpers.py", line 133, in positional_wrapper 
    return wrapped(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/googleapiclient/discovery.py", line 226, in build 
    credentials=credentials) 
    File "/Library/Python/2.7/site-packages/oauth2client/_helpers.py", line 133, in positional_wrapper 
    return wrapped(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/googleapiclient/discovery.py", line 358, in build_from_document 
    credentials = _auth.default_credentials() 
    File "/Library/Python/2.7/site-packages/googleapiclient/_auth.py", line 41, in default_credentials 
    return oauth2client.client.GoogleCredentials.get_application_default() 
    File "/Library/Python/2.7/site-packages/oauth2client/client.py", line 1264, in get_application_default 
    return GoogleCredentials._get_implicit_credentials() 
    File "/Library/Python/2.7/site-packages/oauth2client/client.py", line 1249, in _get_implicit_credentials 
    credentials = checker() 
    File "/Library/Python/2.7/site-packages/oauth2client/client.py", line 1200, in _implicit_credentials_from_files 
    credentials_filename = _get_environment_variable_file() 
    File "/Library/Python/2.7/site-packages/oauth2client/client.py", line 1348, in _get_environment_variable_file 
    ' environment variable) does not exist!') 
oauth2client.client.ApplicationDefaultCredentialsError: File “/Users//api/youtube/urlaudio/myproject.json” (pointed by GOOGLE_APPLICATION_CREDENTIALS environment variable) does not exist! 
+0

ничего не печатает? Таким образом, он не достигает этой строки: 'print 'Videos: \ n", "\ n" .join (videos), "\ n" ' – hansaplast

+0

Вы проверили, насколько далеко достигнуто выполнение? например Обычно я просто добавляю код 'print ('1')' между строками, чтобы проверить, где выполнение останавливается – hansaplast

+0

, оно работает на моей машине :-) см. [Вывод вашего скрипта на моем компьютере] (https: //gist.github .com/philippkeller/cfbdaa202e121fb2b46a566479577d56) – hansaplast

ответ

1

Следуйте по шагам provided in the docs. В конце концов, вам нужно указать GOOGLE_APPLICATION_CREDENTIALS в файл JSon вы скачали и т.д .:

export GOOGLE_APPLICATION_CREDENTIALS=~/Downloads/youtube-search-b0e0b347241c.json 

Конечно, вы лучший ход, что файл в безопасном месте, например, в ~/.credentials/ и chmod 700 этот каталог.

+0

спасибо за наконечник безопасности –