首页 > 解决方案 > 将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)

标签: pythondjangoregex

解决方案


您必须\从两端删除并使用捕获组 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

推荐阅读