bash - 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
解决方案
这是一种没有 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
推荐阅读
- php - PHP 在一个字符串之后,在一个字符串内返回一个字符串
- ruby-on-rails - Rails 6 注册模式与设计
- php - Wordpress 5.6 不支持 PHP 8?
- java - 使用 guice 绑定一个番石榴供应商
- r - 收集多个列
- postgresql - Postgres 查询每个用户超过 30 天的登录次数,每天只计算一次
- python - OpenCV 太慢了
- java - 如何使用 Java 身份验证连接到 Cassandra 5.1
- selenium-webdriver - 读取 excel 文件 - 如何读取不同的工作表名称
- node.js - Firebase 实时数据库使快照更有价值