将vimeo链接转换为python中的嵌入链接



我使用的是Python和django,我有一些vimeo URL需要转换为它们的嵌入版本。例如:https://vimeo.com/76979871必须转换为:https://player.vimeo.com/video/76979871但未转换

我的代码如下:

_vm =  re.compile(
r'/(?:https?://(?:www.)?)?vimeo.com/(?:channels/|groups/([^/]*)/videos/|album/(d+)/video/|)(d+)(?:$|/|?)/', re.I)
_vm_format = 'https://player.vimeo.com/video/{0}'
def replace(match):
groups = match.groups()
print(_vm_format)
return _vm_format.format(groups[5])
return _vm.sub(replace, text)

给定的正则表达式适合Vimeo URL的几种变体:

https://vimeo.com/76979871
https://vimeo.com/channels/76979871
https://vimeo.com/groups/sdf/videos/76979871
https://vimeo.com/album/12321/video/76979871

如果视频号码真的是你的播放器唯一需要的东西,那么在你稍微更正正则表达式r'(?:https?://(?:www.)?)?vimeo.com/(?:channels/|groups/(?:[^/]*)/videos/|album/(?:d+)/video/|)(d+)(?:$|/|?)'后,它将出现在捕获组1(groups[1](中。所有其他圆括号都是非捕获组。

然而,如果不同URL类型的播放器代码不同,那么您最好将正则表达式分成四个;并且每个都将有不同的替代品。

您必须从端部删除,并使用捕获组3来获取视频id

(?:https?://(?:www.)?)?vimeo.com/(?:channels/|groups/([^/]*)/videos/|album/(d+)/video/|)(d+)(?:$|/|?)

示例

import re
_vm =  re.compile(
r'(?:https?://(?:www.)?)?vimeo.com/(?:channels/|groups/([^/]*)/videos/|album/(d+)/video/|)(d+)(?:$|/|?)', re.I)
_vm_format = 'https://player.vimeo.com/video/{0}'
def replace(match):
groups = match.groups()
return _vm_format.format(groups[2])
urls=["https://vimeo.com/76979871",
"https://vimeo.com/channels/76979871",
"https://vimeo.com/groups/sdf/videos/76979871",
"https://vimeo.com/album/12321/video/76979871"]
for u in urls:
print(_vm.sub(replace, u))

输出

https://player.vimeo.com/video/76979871
https://player.vimeo.com/video/76979871
https://player.vimeo.com/video/76979871
https://player.vimeo.com/video/76979871

最新更新