我正在寻找的所有功能,一个YouTube网址可以有?
http://www.youtube.com/watch?v=6FWUjJF1ai0&feature=related
到目前为止,我已经看到了feature=relmfu,related,fvst,fvwrel。有没有这方面的清单。此外,我的最终目标是从所有可能的youtube urls中提取视频id (6FWUjJF1ai)。我该怎么做呢?这似乎很难。有没有人已经这么做了?
发布于 2012-01-11 12:50:43
您可以使用urlparse从url获取查询字符串,然后使用parse_qs从查询字符串获取视频id。
发布于 2012-01-11 16:48:20
不过,为你的assistance....the解决方案编写的代码纯粹是弗兰克的。
import urlparse as ups
m = ups.urlparse('http://www.youtube.com/watch?v=6FWUjJF1ai0&feature=related')
print ups.parse_qs(m.query)['v']
发布于 2017-09-23 10:59:04
从下面的答案https://stackoverflow.com/a/43490746/8534966中,我运行了55个不同的测试用例,它能够得到51个匹配。参见my tests。
所以我写了一些if else代码来修复它:
# Get YouTube video ID
if "watch%3Fv%3D" in youtube_url:
# e.g.: https://www.youtube.com/attribution_link?a=8g8kPrPIi-ecwIsS&u=/watch%3Fv%3DyZv2daTWRZU%26feature%3Dem-uploademail
search_pattern = re.search("watch%3Fv%3D(.*?)%", youtube_url)
if search_pattern:
youtube_id = search_pattern.group(1)
elif "watch?v%3D" in youtube_url:
# e.g.: http://www.youtube.com/attribution_link?a=JdfC0C9V6ZI&u=%2Fwatch%3Fv%3DEhxJLojIE_o%26feature%3Dshare
search_pattern = re.search("v%3D(.*?)&format", youtube_url)
if search_pattern:
youtube_id = search_pattern.group(1)
elif "/e/" in youtube_url:
# e.g.: http://www.youtube.com/e/dQw4w9WgXcQ
youtube_url += " "
search_pattern = re.search("/e/(.*?) ", youtube_url)
if search_pattern:
youtube_id = search_pattern.group(1)
else:
# All else.
search_pattern = re.search("(?:[?&]vi?=|\/embed\/|\/\d\d?\/|\/vi?\/|https?:\/\/(?:www\.)?youtu\.be\/)([^&\n?#]+)",
youtube_url)
if search_pattern:
youtube_id = search_pattern.group(1)
https://stackoverflow.com/questions/8814227
复制相似问题