跳转到主要内容

视频嵌入代码清理器

项目描述

Build Status

清理和更新您的视频嵌入代码。

随着时间的推移,从各种提供者使用的视频嵌入代码已经发生变化和演变,以使它们与更广泛的设备更加兼容。

这就是vecc的用途所在:它从给定的嵌入代码中检测视频提供者和ID,并提供各种工具来清理此代码并验证视频是否仍然可用。

安装

可以使用pip,这是最简单的方法

$ pip install vecc

或者从http://pypi.python.org/pypi/vecc下载tarball,解压,然后手动安装

$ python setup.py install

用法

$ vecc -h
usage: vecc [-h] [--version] {clean,validate} ...

Video Embed Code Cleaner.

optional arguments:
  -h, --help        show this help message and exit
  -t TIMEOUT, --timeout TIMEOUT
                    timeout for the validation (10 seconds by default)
  --version         show program's version number and exit

sub-commands:
  {clean,validate}
    clean           clean the embed code
    validate        validate that the video is still available

子命令

  • clean:接受一个视频嵌入代码,并返回视频ID、提供者和新的嵌入代码。可选的-v|--validate参数,用于检查视频是否仍然可用。

  • validate:接受视频ID和提供者,并检查它是否仍然可用。

返回代码

可能有三种不同的返回代码

  • 1: 验证视频时超时(执行 HEAD 请求)

  • 2: 找不到提供商

  • 3: 视频不再可用

示例

$ vecc clean '<object width="480" height="381"><param name="movie" value="http://www.dailymotion.com/swf/k6Lg9UXest3kho5p9X&related=0"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/k6Lg9UXest3kho5p9X&related=0" type="application/x-shockwave-flash" width="480" height="381" allowFullScreen="true" allowScriptAccess="always"></embed></object>' -v
video id: k6Lg9UXest3kho5p9X
provider: dailymotion
embed code: <iframe frameborder="0" width="480" height="270" src="http://www.dailymotion.com/embed/video/k6Lg9UXest3kho5p9X"></iframe>
This video is still valid

API

  • extract: 接收视频嵌入代码和一系列流媒体视频类型列表(例如 .flv 或 .mp4)作为直接视频 URL,并返回以下值

    • status: 如果 vecc 提取了视频信息,则为 True,否则为 False。有关错误信息的扩展信息,请参阅 errnoerrmsg

    • video_id: 提取的视频 ID

    • provider: 识别出的提供商

    • clean_code: 嵌入代码

    • real_link: 带有播放器的视频的网页浏览器链接

    • title: 视频标题字符串

    • description: 视频的描述或文本内容(字符串)

    • image: 视频预览图片的 URL 链接

    • duration: 视频时长,格式为 HH:MM:SS

    • created_date: 视频发布的时间(Python 日期)

    • errno: 如果 errno > 0:HTTP 请求错误代码或特定 API 错误代码,如果 errno == -1:全局连接错误,即无法连接到提供商(无互联网连接或提供商网站故障),如果 errno == -2:错误的代码格式

    • errmsg: 与错误代码相关的错误信息。

代码示例

# import extract from vecc library
from vecc import extract

video_link = 'a video url'
video_infos = extract(video_link, ['mp4', 'flv'])

提供商

视频提供商(Google 视频、YouTube、Vimeo、Dailymotion、Facebook 等)配置在 vecc/providers.py 文件中。

每个提供商配置包括

  • 名称:youtube

  • 链接模板:用于构建清理代码的字符串模板(将使用 format 进行插值)。这是嵌入视频播放器的链接。需要 {video_id} 标签。

  • 嵌入模板:用于构建新嵌入代码的字符串模板。需要 {video_link} 标签。

  • 验证模板:用于构建用于验证视频是否仍然可用的链接的字符串模板。这是视频本身的链接(在提供商网站上可见)。需要 {video_id} 标签。

  • 匹配:用于将视频嵌入代码“匹配”到视频提供商的正则表达式。必须捕获视频 ID。

变更日志

  • v1.01:

    • 为 extract 添加了验证_link 选项

  • v1.0:

    • 在测试了 20000 个不同的视频链接后,进行了许多错误修复,第一个成熟版本

  • v0.16:

    • 添加了 created_date 信息

  • v0.15:

    • 添加了 Facebook API

  • v0.14:

    • 添加了流媒体提供商

  • v0.13:

    • 添加了 extract 函数

  • v0.12:

    • 修复了破坏 vecc.clean 的前一个提交

  • v0.11:

    • 为验证添加了 timeout 参数

    • 现在使用适当的返回代码进行失败

  • v0.10:

    • 修复了从 py2 迁移到 py3 后的打印问题

  • v0.9:

    • 为默认提供商使用无模式 URL

    • 让 travis 使用 tox

    • 提供 wheel 软件包

  • v0.8:

    • 兼容 Python 2.6 到 Python 3.3

    • 100% 测试覆盖率

  • v0.7:

    • 删除了 allowfullscreen

    • 在视频链接上添加了 autoPlay=1&related=0

  • v0.6:

    • 清理嵌入代码的视频尺寸现在是 480x395

    • 所有使用 iframes 的嵌入代码现在都使用相同的格式,带有 allowfullscreen="true",autoPlay="1",related="0"

  • 版本 0.5:

    • 与 Python 2.6 兼容:作为依赖项的 argparse

  • 版本 0.4:

    • 与 Python 2.6 兼容:使用 format 需要字段编号

由以下支持