Cleans and updates your video's embed code.
Over time, the embed codes used for videos from various providers have changed and evolved, to make them more and more compatible with a broader set of devices.
This is where vecc is useful: it detects the video provider and id from a given embed code, and provides various utilities to clean this code and validate that the video is still available.
Either use pip
, which is the easiest way:
$ pip install vecc
Either download the tarball from http://pypi.python.org/pypi/vecc, untar it, and install it manually:
$ 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
: takes a video embed code, and returns the video id, provider, and new embed code. Takes an optional-v|--validate
parameter, to check if the video is still available.validate
: takes a video id and provider, and check if it's still available.
There's three different return codes possible:
1
: Timeout while validating (doing aHEAD
request) the video2
: Provider not found3
: The video is not available anymore
$ 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
extract
: takes a video embed code and a list of streaming video types (i.e. like .flv or .mp4) for direct video urls and return the following values:status
:True
ifvecc
has extracted video info,False
else. Seeerrno
anderrmsg
for extended info about errorvideo_id
: extracted video IDprovider
: recognized providerclean_code
: embeded codereal_link
: web browser link to video with playertitle
: video title stringdescription
: description or text content of the video (string)image
: url link to image preview of videoduration
: duration of video in formatHH:MM:SS
created_date
: when video was published (python date)errno
: iferrno
> 0: HTTP request error code or specific API error code, iferrno
==-1
: global connection error, i.e. no connection to provider (no internet connection or provider website down), iferrno
==-2
: wrong code formaterrmsg
: error message related to error code.
# import extract from vecc library from vecc import extract video_link = 'a video url' video_infos = extract(video_link, ['mp4', 'flv'])
Video providers (Google video, Youtube, Vimeo, Dailymotion, Facebook...) are configured
in the vecc/providers.py
file.
Each provider configuration consists of:
- name: youtube
- link template: string template (that'll be interpolated with format) used to
build the cleaned code. This is the link to the embedded video player. Needs
the
{video_id}
tag. - embed template: string template used to build the new embed code. Needs the
{video_link}
tag. - validation template: string template used to build the link used to validate
that the video is still available. This is the link to the video itself (as
seen on the provider's website). Needs the
{video_id}
tag. - matches: regular expressions used to "match" a video embed code to a video provider. Must capture the video id.
- v1.0:
- lots of bugfixes after testing 20000 different video links, first mature version
- v0.16:
- added created_date info
- v0.15:
- added facebook API
- v0.14:
- added streaming providers
- v0.13:
- added extract function
- v0.12:
- Fix previous commit that broke
vecc.clean
- Fix previous commit that broke
- v0.11:
- added a
timeout
parameter for the validation - now uses proper return codes for failures
- added a
- v0.10:
- fix print in py2 following porting to py3
- v0.9:
- use schema-less urls for the default providers
- make travis use tox
- provide a wheel package
- v0.8:
- compatible python 2.6 to python 3.3
- 100% test coverage
- v0.7:
- dropped allowfullscreen
- added autoPlay=1&related=0 on video links
- v0.6:
- video size of the cleaned embed code is now 480x395
- all embed codes with iframes use the same format with allowfullscreen="true", autoPlay="1", related="0"
- v0.5:
- compatibility with python2.6:
argparse
as a dependency
- compatibility with python2.6:
- v0.4:
- compatibility with python2.6:
format
needs field numbers
- compatibility with python2.6: