我需要从 YouTube 频道中逐页获取所有视频。 YouTube API 允许最多获取 50 个视频。 现在,我只得到 25 个视频并使用 Django 分页在页面中打印。 如何在页面上打印来自 YouTube 的所有视频?

用于视频视图的 views.py:

YOUTUBE_VIDEO_URL = "https://gdata.youtube.com/feeds/api/videos?author=*****&orderby=updated&v=2&alt=jsonc"

class VideoListView(ListView):
    template_name = "video/list.html"
    context_object_name = 'videos'
    paginate_by = 12
    def get_queryset(self, **kwargs):
        request = requests.get(settings.YOUTUBE_VIDEO_URL)
        data_about = simplejson.loads(request.text)
        video_list = []
        for item in data_about['data']['items']:
            video_list.append(item)
        return video_list

看法:

    <div id="list_articles">
                {% if videos %}
                    {% for video in videos %}
                        <div class="article">
                            <iframe src="http://www.youtube.com/embed/{{ video.id }}"
                                    width="300" height="225" frameborder="0" allowfullscreen></iframe>
                            <h2><a class="popup-youtube"
                                   href="http://www.youtube.com/watch?v={{ video.id }}">{{ video.title }}</a></h2>
                        </div>
                    {% endfor %}
                {% else %}
                    <div class="article">
                        <p>Nothing</p>
                    </div>
                {% endif %}
            </div>
{% if is_paginated %}
        <div id="pages">
            <p> Pages:{% for num in page_obj.paginator.page_range %}
                {% ifequal num page_obj.number %}
                    <span class="current"><b>{{ num }}</b></span>
                {% else %}
                    <a href="?page={{ num }}"> {{ num }}</a>
                {% endifequal %}
            {% endfor %}

            </p>

我想手动获取视频数量并将其按页数划分,但我不知道如何实现

#1楼 票数:0

好的,所以第一部分:获取视频(您将需要一个 api-key,可能需要多个以便经常使用):

这是 python,但您可以将其转换为您喜欢的任何内容,只要它可以发送 GET 请求:

注:CC 定义是否查找 Creative-commons 视频 您也可以使用搜索查找视频

from requests import get
from random import choice

useSearch = True

fname = "output"

if useSearch :
    cc = False
    searchTerm = ""
    apiKeys = []
    apiKey = choice(apiKeys)
    url = "https://www.googleapis.com/youtube/v3/search"
    token = ""
    rDone = 0
    videos = []
    searching = True
    if cc :
        searchTerm = searchTerm + "&videoLicense=creativeCommon&type=video"
    while searching :
        print(url + "?key=" + apiKey + "&q=" + searchTerm + "&part=id&maxResults=50&pageToken=" + token)
        y = get(url + "?key=" + apiKey + "&q=" + searchTerm + "&part=id&maxResults=50&pageToken=" + token).json()
        if y['kind'] == "youtube#searchListResponse" :
            for x in y['items'] :
                if x['id']['kind'] == "youtube#video" :
                    videos.append(x['id']['videoId'])
        rDone = rDone + int(y['pageInfo']['resultsPerPage'])
        if int(y['pageInfo']['totalResults']) <= rDone :
            searching = False
        elif int(y['pageInfo']['resultsPerPage']) > int(y['pageInfo']['totalResults']) :
            searching = False
        else :
            try :
                token = y['nextPageToken']
            except :
                searching = False
else :
    cc = False
    channelID = ""
    apiKeys = ["AIzaSyBTV_7FVKuJBvFEPo1ZkLtXSl7w2Ulg6XY", "AIzaSyAzwkMIvLFYTYz5uHv-Idmq68Er_DzOEkI", "AIzaSyDPGSYUScf6j9A7uE1pWaXxK9j9TCGZbEs"]
    apiKey = choice(apiKeys)
    url = "https://www.googleapis.com/youtube/v3/search"
    token = ""
    rDone = 0
    videos = []
    searching = True
    if cc :
        channelID = channelID + "&videoLicense=creativeCommon&type=video"
    while searching :
        print(url + "?key=" + apiKey + "&channelId=" + channelID + "&part=id&order=date&maxResults=50&pageToken=" + token)
        y = get(url + "?key=" + apiKey + "&channelId=" + channelID + "&part=id&order=date&maxResults=50&pageToken=" + token).json()
        if y['kind'] == "youtube#searchListResponse" :
            for x in y['items'] :
                if x['id']['kind'] == "youtube#video" :
                    videos.append(x['id']['videoId'])
        rDone = rDone + int(y['pageInfo']['resultsPerPage'])
        if int(y['pageInfo']['totalResults']) <= rDone :
            searching = False
        elif int(y['pageInfo']['resultsPerPage']) > int(y['pageInfo']['totalResults']) :
            searching = False
        else :
            try :
                token = y['nextPageToken']
            except :
                searching = False
file = open(fname + ".txt", "w+")
for index in range(len(videos)) :
    video = videos[index]
    if len(videos) - 1 == index :
        file.write(video)
    else :
        file.write(video + "\n")
file.close()

接下来,您需要将输出分成多个列表。 使用这样的东西:

ls = open("../output.txt", "r").read().split("\n")
def chunks(lst, n):
    """Yield successive n-sized chunks from lst."""
    for i in range(0, len(lst), n):
        yield lst[i:i + n]
pages = list(chunks(ls, 10))

Pages[0] 将是第一页

如果你想把它用于网页,你可以把它变成一个 php 友好的东西并使用它

  ask by Okadzaki Tomoe translate from so

未解决问题?本站智能推荐:

1回复

Djanjo / Python:传递的变量在函数中无法按预期工作

我正在尝试在我的views.py文件中使用以下功能。 我传入一个关键字来搜索( the_Term ),如果我执行了一条打印语句,则可以看到该变量已正确传递,但是它没有传递给API调用( q=the_Term )。 如果我对关键字( q="my keyword" )进行了硬编码,则该功能将正常
2回复

如何使用gdata python库从youtube获取所有视频的列表

我指的是这个文档。 https://developers.google.com/youtube/1.0/developers_guide_python#SearchingVideos 这说明了YouTube的各种操作 但我不知道如何从YouTube频道获取所有视频 我需要获取
7回复

如何从 Youtube 频道获取所有视频 ID

如何从 youtube 数据源中获取所有视频 ID? 我通过这个 (API) URL 收到 youtube 提要: http : //gdata.youtube.com/feeds/base/users/#userid#/uploads? alt=rss&v=2&orderby=p
1回复

在 Python 中使用 YouTube API 获取 YouTube 视频 URL

我不再拥有 YouTube Premium,所以我想编写一个 Python 脚本来简单地查看我关注的 YouTube 用户上传的视频数量,当该数量发生变化时(发布了新视频),我希望该程序返回新视频的 URL 作为字符串。 然后,使用该字符串,我想下载视频,但我已经弄清楚了那部分。 这是我所拥有的(
1回复

如何使用python和youtube API在youtube上获取自己的频道ID?

我想知道您如何使用youtube API获得自己的频道ID,或者从您的用户那里打印特定频道ID的列表,因为您可以在自己的用户上拥有多个频道。(即使用client_secrets) 我一直在观看youtube的文档,但是却没有找到与此相关的任何内容。(也许我错了,呵呵) 我正在看: 如
1回复

如何获取所有频道ID-YouTube API v3

我想知道是否有可能获得您的其他频道ID,下面的代码仅获得一个频道ID(我在授权期间单击的一个频道)。 我可以将视频上传到您的其他频道吗? 还是我必须再次通过授权并选择我要上传到的其他频道? 现在看来这是唯一的方法 香港专业教育学院一直在看这个,它是这样说的,但想知道它是否已
2回复

如何在 python 中播放 Youtube 视频

我应该使用哪些模块来制作 Python 脚本,其中 Python 获取视频名称、打开 Chrome 窗口、打开 Youtube 并播放第一个结果。 我已经尝试过 Youtube Data API,但它不适合那种事情。
1回复

如何在python中制作一个可以显示youtube视频的discord bot?

我的目标是制作一个能够通过屏幕共享或相机显示 YouTube 视频的机器人。 有谁知道怎么做? 我试图找出如何去做,但我没有设法在互联网上找到类似的东西,即使是在堆栈溢出时。