如何使用Twitter API V2从用户推文时间线获取源视频URL

4
我正在使用以下URL来获取用户的推文。
https://api.twitter.com/2/users/{user_twitter_id}/tweets

以下是我的请求参数

query_params = {
    'max_results': max_results,
    'expansions': 'attachments.media_keys',
    'tweet.fields': 'id,created_at,text,author_id,in_reply_to_user_id,referenced_tweets,attachments,withheld,geo,entities,public_metrics,possibly_sensitive,source,lang,context_annotations,conversation_id,reply_settings',
    'media.fields': 'media_key,duration_ms,height,preview_image_url,type,url,width,public_metrics,non_public_metrics,organic_metrics,promoted_metrics,alt_text'
}

以下是我在“包含”中获取的响应,其中包含媒体列表。
"includes": {
    "media": [
        {
            "height": 750,
            "media_key": "3_1489397927281840131",
            "type": "photo",
            "url": "https://pbs.twimg.com/media/FKtnhhDWUAMtyBi.jpg",
            "width": 1125
        },
        {
            "height": 750,
            "media_key": "3_1489397930452783110",
            "type": "photo",
            "url": "https://pbs.twimg.com/media/FKtnhs3XEAYeMkP.jpg",
            "width": 1125
        },
        {
            "height": 750,
            "media_key": "3_1489397944214302727",
            "type": "photo",
            "url": "https://pbs.twimg.com/media/FKtnigIXMAcTO6t.jpg",
            "width": 1125
        },
        {
            "duration_ms": 242784,
            "height": 1080,
            "media_key": "13_1489018359819771906",
            "preview_image_url": "https://pbs.twimg.com/media/FKoOePDWYAA1ZZB.jpg",
            "public_metrics": {
                "view_count": 275300
            },
            "type": "video",
            "width": 1920
        },
        {
            "height": 2400,
            "media_key": "3_1488933061307809794",
            "type": "photo",
            "url": "https://pbs.twimg.com/media/FKnAuwWWQAIZZ8J.jpg",
            "width": 3000
        },
        {
            "height": 2000,
            "media_key": "3_1488640905187938304",
            "type": "photo",
            "url": "https://pbs.twimg.com/media/FKi3BB_X0AA47_h.jpg",
            "width": 3000
        },
        {
            "duration_ms": 41374,
            "height": 1080,
            "media_key": "13_1488623384250527746",
            "preview_image_url": "https://pbs.twimg.com/amplify_video_thumb/1488623384250527746/img/K2fiO7GwjmxL0H89.jpg",
            "public_metrics": {
                "view_count": 239341
            },
            "type": "video",
            "width": 1080
        },
        {
            "height": 2000,
            "media_key": "3_1488548514921603078",
            "type": "photo",
            "url": "https://pbs.twimg.com/media/FKhi_NbWYAYqP04.jpg",
            "width": 3000
        },
        {
            "height": 750,
            "media_key": "3_1488336416732028931",
            "type": "photo",
            "url": "https://pbs.twimg.com/media/FKeiFeGXIAMgHQx.jpg",
            "width": 1125
        },
        {
            "duration_ms": 53136,
            "height": 1080,
            "media_key": "13_1488316251667582978",
            "preview_image_url": "https://pbs.twimg.com/amplify_video_thumb/1488316251667582978/img/DE2q07gtwoARK76r.jpg",
            "public_metrics": {
                "view_count": 214984
            },
            "type": "video",
            "width": 1080
        },
        {
            "duration_ms": 40248,
            "height": 1080,
            "media_key": "13_1488154727544152064",
            "preview_image_url": "https://pbs.twimg.com/media/FKb85iAXoAou4ED.jpg",
            "public_metrics": {
                "view_count": 242329
            },
            "type": "video",
            "width": 1080
        },
        {
            "height": 913,
            "media_key": "3_1487927712761229314",
            "type": "photo",
            "url": "https://pbs.twimg.com/media/FKYuXxKXsAIbXd2.jpg",
            "width": 1200
        },
        {
            "duration_ms": 35785,
            "height": 1080,
            "media_key": "13_1487538546948939777",
            "preview_image_url": "https://pbs.twimg.com/amplify_video_thumb/1487538546948939777/img/qzUmEZKmD6ii_0dM.jpg",
            "public_metrics": {
                "view_count": 290603
            },
            "type": "video",
            "width": 1080
        }
    ]
}

正如您在媒体的响应中所看到的,我们有视频类型和媒体密钥,但是没有实际的视频网址,我们能看到的只是视频缩略图。请告诉我如何获取视频网址以及预览图像网址。


这是正确的。不幸的是,目前v2 API响应中还没有视频URL可用。如果该数据对您的应用程序很重要,则需要使用v1.1来检索URL。 - Andy Piper
@AndyPiper 我也尝试使用v1.1 API。这是我的请求链接:https://api.twitter.com/1.1/statuses/show.json?id=1484173968051425281。这条推文包含视频,但是在响应中我无法看到任何视频链接。我还尝试了提供媒体附件、URL和实体参数,但仍然没有得到任何视频链接。请帮我解决这个问题,我已经尝试了好几天了。 - Huwaiza
如果这是正确的解决方案,请在下面标记为已回答,谢谢。 - Andy Piper
1个回答

6

这里有几个需要注意的地方:

  • 截至2022年2月,Twitter API v2目前无法获取视频URL。这是已知的遗漏,Twitter正在努力解决。

  • 在Twitter API v1.1中,通常可以获取视频URL。以下是两个需要注意的事项...

    • 如果推文是较长的(超过140个字符),则需要在API调用中添加tweet_mode=extended以确保整个推文数据和扩展实体已被包含。如果truncated字段值为true,则说明您未检索到整个推文。在你所提供的推文ID中,情况就是如此。使用tweet_mode=extended即可查看视频URL。
    • 如果推文来自广告平台,则视频可能是以广告卡片格式呈现的,并且这些不会通过API服务。检查source字段是否有广告信息,以确认此种情况。在这种情况下,广告主可以标记媒体不适合更广泛的传播/ API访问,而视频URL将不会返回到API。

1
好的,谢谢。我确实需要使用API v1.1,它对我来说很有效。但是我想在这里提一件事情,如果推文中附有链接且该链接是视频,则它不会直接给我们视频链接。只有当视频或图像是用户自己上传时,它才会添加视频链接。 - Huwaiza
1
目前,V2支持视频URL开箱即用: https://developer.twitter.com/en/docs/twitter-api/data-dictionary/object-model/media#:~:text=https%3A//video.twimg.com/ext_tw_video/1527322141724532740/pu/vid/320x568/lnBaR2hCqE%2DR_90a.mp4 - stbychkov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接