Как искать и отображать видео с помощью API YouTube в Django - PullRequest
0 голосов
/ 27 декабря 2018

Мне нужно искать и отображать видео с помощью YouTube API в Django.Например, если я ищу «кошка» на моей HTML-странице, она должна отобразить список видео на основе кошек с YouTube.

Но я получаю сообщение об ошибке:

AttributeError в / youtubeapp / search / 18 / item /

Объект 'Пространство имен' не имеет атрибута 'META',

Я не знаю, как это исправить.

Вот мой код:

Views.py

from django.shortcuts import render
from django.views.generic import CreateView,TemplateView
from youtubeapp.forms import SearchForm
from youtubeapp.models import Search
import oauth2client
from oauth2client import tools

import argparse

from googleapiclient.discovery import build
from googleapiclient.errors import HttpError      


DEVELOPER_KEY = 'AIzaSyBhtNyTQMsYbFdIC1Qc1hbQG0LIT8jlAG4'
YOUTUBE_API_SERVICE_NAME = 'youtube'
YOUTUBE_API_VERSION = 'v3'

def youtube_search(request):
    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=request.q,
        part='id,snippet',
        maxResults=request.max
    ).execute()

    videos = []
    for search_result in search_response.get('items', []):
        if search_result['id']['kind'] == 'youtube#video':
            videos.append('%s' % (search_result['snippet']['title']))
            ctx1 = ('\n'.join(videos))
            videos.append('%s' % (search_result['id']['videoId']))
            ctx2 = ('\n'.join(videos))
            mydict = {'title':ctx1,'videoid':ctx2} # I am getting the error in this line...

    return render(request,'youtubeapp/main.html',context = mydict)  

if __name__ == '__main__':
def main(request,pk):
  parser = tools.argparser
  mxRes = 3
  parser.add_argument('--q', help='Search term', default='Srce Cde')
  parser.add_argument('--max', help='Max results')
  parser.add_argument("--key", help="Required API key")

  args = parser.parse_args([])

  if not args.max:
      args.max = mxRes

  try:
    youtube_search(args) # I am getting the error in this line
  except HttpError as e:
   print('An HTTP error %d occurred:\n%s' % (e.resp.status, e.content))       

**urls.py** 

from django.conf.urls import url
from youtubeapp import views

urlpatterns=[
    url(r'^search/new/$',views.SearchCreateView.as_view(),name='search_new'),
    url(r'^search/(?P<pk>\d+)/item/$',views.main,name='main'),

]   

main.html

Это будет отображать искомые видео:

{% extends 'youtubeapp/base.html' %}
{% block content %}

<div class="item">
    <h2>{{title}}</h2>
    <div class="video w100" width="640" height="360" src="//www.youtube.com/embed/{{videoid}}"></div>
</div>

{% endblock %}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...