首页 > 解决方案 > Youtube 脚本已停止处理搜索顺序

问题描述

每天晚上在加拿大渥太华时间的午夜,我通过脚本将视频上传到我的 youtube 频道。

一小时或之后,我一直在使用脚本来获取上传的最后一个视频的视频 ID,并创建一个 iframe 文件以上传到我的网络服务器。几年后这已停止工作

因为我不是程序员,而且很久以前我才设置它,我不知道从哪里开始。我确实查看了 YouTube API 网页和控制台,但找不到任何东西。我知道运行脚本不会像过去几年那样返回“videoid”。

'''
url="https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId=UCOUnH8qVLmUe_2mmupWzEmQ&maxResults=1&key=DEVELOPERS KEY"

lastVideoId=$(curl -s "$url" | grep videoId | awk -F'[""]' '{print $4}')

'''

出来会得到最后一个videoid被保存为变量$lastVideoId

标签: bashyoutube

解决方案


这是一种没有 googleapis 并且需要 apikey 的解决方案。它使用您频道的 rss 提要并返回它找到的第一个 videoid。

# Define RSS feed for your channel
URL="https://www.youtube.com/feeds/videos.xml?channel_id=UCOUnH8qVLmUe_2mmupWzEmQ"
videoid=$(curl -s $URL | grep "/watch?v=" | head -1 | sed "s/.*\?v=\([^\"]*\)\".*/\1/g")
echo $videoid

解释:

curl -s $URL         # get rss feed (curl in silent mode)
|                    # pipe output to...
grep "/watch?v="     # get only video urls
|                    # pipe output to...
head -1              # take first line with url
|                    # pipe output to...
sed "s/              # sed in substitution mode
\?v=                 # search '?v=' in url
\([^\"]*\)\"         # put everything up to next " in arg1 (\1)
.*                   # ignore rest of the line
/\1                  # print only arg1 
/g                   # global on the whole line

推荐阅读