Nano Hash - криптовалюты, майнинг, программирование

Сохранение данных API YouTube в Python

Я новичок в питоне. Я использовал youtube api для получения данных с youtube. Теперь я пытаюсь сохранить данные в формате csv, но получаю сообщение об ошибке:

NameError: имя «search_response» не определено. Я не знаю, что я делаю неправильно, или здесь есть проблема с установкой пакета.

Я использую python 3.6.3 и следующий код:

# -*- coding: utf-8 -*-

from apiclient.discovery import build
#from apiclient.errors import HttpError
#from oauth2client.tools import argparser # removed by Dongho
import argparse
import csv
import unidecode

# Set DEVELOPER_KEY to the API key value from the APIs & auth > Registered apps
# tab of
#   https://cloud.google.com/console
# Please ensure that you have enabled the YouTube Data API for your project.
DEVELOPER_KEY = " "
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)
    # Call the search.list method to retrieve results matching the specified
    # query term.
    search_response = youtube.search().list(q=options.q, part="id,snippet", 
                                            maxResults=options.max_results).execute()

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

    # create a CSV output for video list    
    csvFile = open('video_result.csv','w')
    csvWriter = csv.writer(csvFile)
    csvWriter.writerow(["title","videoId","viewCount","likeCount","dislikeCount",
                        "commentCount","favoriteCount"])

    # Add each result to the appropriate list, and then display the lists of
    # matching videos, channels, and 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"]))
            title = search_result["snippet"]["title"]
            title = unidecode.unidecode(title)  # Dongho 08/10/16
            videoId = search_result["id"]["videoId"]
            video_response = youtube.videos().list(id=videoId,part="statistics").execute()
            for video_result in video_response.get("items",[]):
                viewCount = video_result["statistics"]["viewCount"]
                if 'likeCount' not in video_result["statistics"]:
                    likeCount = 0
                else:
                    likeCount = video_result["statistics"]["likeCount"]
                if 'dislikeCount' not in video_result["statistics"]:
                    dislikeCount = 0
                else:
                    dislikeCount = video_result["statistics"]["dislikeCount"]
                if 'commentCount' not in video_result["statistics"]:
                    commentCount = 0
                else:
                    commentCount = video_result["statistics"]["commentCount"]
                if 'favoriteCount' not in video_result["statistics"]:
                    favoriteCount = 0
                else:
                    favoriteCount = video_result["statistics"]["favoriteCount"]

            csvWriter.writerow([title,videoId,viewCount,likeCount,dislikeCount,
                                commentCount,favoriteCount])

    csvFile.close()
20.02.2018

  • Какой тип переменной «options» вы передаете в youtube_search? Мне интересно, не устанавливается ли search_response из-за проблемы с этим, но я не могу помочь, не зная этого. 21.02.2018
  • def youtube_search(q, max_results=50,order=relevance, token=None, location=None, location_radius=None): я все еще получаю ту же ошибку. Пожалуйста помоги 21.02.2018
  • У меня такая же проблема с другими данными YouTube, я пробовал: def videos_list_most_popular(client, **kwargs): kwargs = remove_empty_kwargs(**kwargs) response = client.videos().list(**kwargs).execute() Data = json.loads(str(response,'utf-8')) NameError: имя «ответ» не определено 21.02.2018
  • когда вы делаете def youtube_search(q, max_results=50,order="relevance", token=None, location=None, location_radius=None) что такое 'q'? 21.02.2018
  • Параметр q указывает условие запроса для поиска. Код должен работать нормально, так как я могу получить результаты. Я не знаю, почему я не могу загрузить результаты для дальнейшего анализа. 21.02.2018
  • Не видя, что находится в options, никто не может поставить диагноз. Если я помещу вашу логику вне функции и удалю параметр q= и параметр maxResults из youtube.search().list, все будет работать нормально. 21.02.2018
  • Я попытался извлечь данные популярных видео с YouTube и столкнулся с аналогичной проблемой. Как вы думаете, вы можете взглянуть? Код должен там нормально работать. > stackoverflow.com/questions/48914049/ 21.02.2018
  • Я разместил то, что сделал здесь: gist.github.com/tadamhicks/bfb13306428e5da1b29e122fc5c8025b Это работает, хотя Я уверен, это не то, что вы хотите. Эгин, не видя, как вы форматируете свой запрос и передаете его, я не могу диагностировать. 22.02.2018

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..