Почему я получаю только один результат только от youtube api

У меня есть список идентификаторов видео как строк различных видео на youtube, но когда я получаю данные для всех идентификаторов видео, я получаю результат только для последнего видео.

Вот мой код :

search_url = 'https://www.googleapis.com/youtube/v3/videos'
parameter = {
       'key' : settings.YOUTUBE_DATA_API_KEY,
        'part' : 'snippet',
        'id' : ','.join(video_id)
}

         data = requests.get(search_url,params=parameter)
         results = data.json()['items']

В приведенном выше коде video_id - это список, содержащий идентификаторы видео.

Я получаю файл csv, в котором есть ссылки на видео youtube, и я беру из него id видео и добавляю их в список video_id следующим образом:

rows = []
video_id = []
file = request.FILES["file"].readlines()

for f in file:
    rows.append((f.decode('utf-8')))

for row in rows[0:len(rows)-1]:
     video_id.append((row[-13:]))

video_id.append((rows[len(rows)-1][-11:]))

Полный код:

def home(request):
    if request.method == 'POST':
        rows = []
        video_id = []
        file = request.FILES["file"].readlines()

        for f in file:
            rows.append((f.decode('utf-8')))

        for row in rows[0:len(rows)-1]:
             video_id.append((row[-13:]))

        video_id.append((rows[len(rows)-1][-11:]))
        print(len(video_id))
        for v in video_id:
            print(v)


        search_url = 'https://www.googleapis.com/youtube/v3/videos'

        parameter = {
            'key' : settings.YOUTUBE_DATA_API_KEY,
            'part' : 'snippet',
            'id' : ','.join(video_id)
        }

        data = requests.get(search_url,params=parameter)
        results = data.json()['items']
        channel_list = []

        for result in results:
            data = {
                'channel_name' : result['snippet']['channelTitle'] 
            }
            channel_list.append(data)
        for list in channel_list:
            print(list)

        return HttpResponse("Uploaded successfully")
    return render(request,'index.html')

Вы используете конечную точку для получения информации об одном видео вместо конечной точки list, которая предназначена для получения информации о нескольких видео.

Так что все, что вам нужно, это заменить это:

search_url = 'https://www.googleapis.com/youtube/v3/videos'

с этим:

search_url = 'https://www.googleapis.com/youtube/v3/videos/list'

Я получил ответ. Ошибка была с идентификаторами видео, потому что идентификаторы содержат \r\n в конце.

Вернуться на верх