mirror of
https://github.com/soimort/you-get.git
synced 2025-01-23 13:35:16 +03:00
Merge branch 'develop' of https://github.com/zhangn1985/you-get into zhangn1985-develop
This commit is contained in:
commit
09b5986a5a
@ -79,6 +79,24 @@ def match1(text, *patterns):
|
|||||||
ret.append(match.group(1))
|
ret.append(match.group(1))
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
def matchall(text, patterns):
|
||||||
|
"""Scans through a string for substrings matched some patterns.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
text: A string to be scanned.
|
||||||
|
patterns: a list of regex pattern.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
a list if matched. empty if not.
|
||||||
|
"""
|
||||||
|
|
||||||
|
ret = []
|
||||||
|
for pattern in patterns:
|
||||||
|
match = re.findall(pattern, text)
|
||||||
|
ret += match
|
||||||
|
|
||||||
|
return ret
|
||||||
|
|
||||||
def launch_player(player, urls):
|
def launch_player(player, urls):
|
||||||
import subprocess
|
import subprocess
|
||||||
import shlex
|
import shlex
|
||||||
@ -1011,7 +1029,8 @@ def url_to_module(url):
|
|||||||
res = conn.getresponse()
|
res = conn.getresponse()
|
||||||
location = res.getheader('location')
|
location = res.getheader('location')
|
||||||
if location is None:
|
if location is None:
|
||||||
raise NotImplementedError(url)
|
from .extractors import embed
|
||||||
|
return embed, url
|
||||||
else:
|
else:
|
||||||
return url_to_module(location)
|
return url_to_module(location)
|
||||||
|
|
||||||
|
51
src/you_get/extractors/embed.py
Normal file
51
src/you_get/extractors/embed.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
__all__ = ['embed_download']
|
||||||
|
|
||||||
|
from ..common import *
|
||||||
|
|
||||||
|
from .letv import letvcloud_download_by_vu
|
||||||
|
from .qq import qq_download_by_vid
|
||||||
|
from .sina import sina_download_by_vid
|
||||||
|
from .tudou import tudou_download_by_id
|
||||||
|
from .youku import youku_download_by_vid
|
||||||
|
|
||||||
|
"""
|
||||||
|
refer to http://open.youku.com/tools
|
||||||
|
"""
|
||||||
|
youku_embed_patterns = [ 'youku\.com/v_show/id_([a-zA-Z0-9=]+)',
|
||||||
|
'player\.youku\.com/player\.php/sid/([a-zA-Z0-9=]+)/v\.swf',
|
||||||
|
'loader\.swf\?VideoIDS=([a-zA-Z0-9=]+)',
|
||||||
|
'player\.youku\.com/embed/([a-zA-Z0-9=]+)',
|
||||||
|
'YKU.Player\(\'[a-zA-Z0-9]+\',{ client_id: \'[a-zA-Z0-9]+\', vid: \'([a-zA-Z0-9]+)\''
|
||||||
|
]
|
||||||
|
|
||||||
|
"""
|
||||||
|
http://www.tudou.com/programs/view/html5embed.action?type=0&code=3LS_URGvl54&lcode=&resourceId=0_06_05_99
|
||||||
|
"""
|
||||||
|
tudou_embed_patterns = [ 'tudou\.com[a-zA-Z0-9\/\?=\&\.\;]+code=([[a-zA-Z0-9_]+)\&'
|
||||||
|
]
|
||||||
|
|
||||||
|
"""
|
||||||
|
refer to http://open.tudou.com/wiki/video/info
|
||||||
|
"""
|
||||||
|
tudou_api_patterns = [ ]
|
||||||
|
|
||||||
|
def embed_download(url, output_dir = '.', merge = True, info_only = False ,**kwargs):
|
||||||
|
content = get_content(url)
|
||||||
|
found = False
|
||||||
|
title = match1(content, '<title>([^<>]+)</title>')
|
||||||
|
vids = matchall(content, youku_embed_patterns)
|
||||||
|
for vid in vids:
|
||||||
|
found = True
|
||||||
|
youku_download_by_vid(vid, title=title, output_dir=output_dir, merge=merge, info_only=info_only)
|
||||||
|
|
||||||
|
vids = matchall(content, tudou_embed_patterns)
|
||||||
|
for vid in vids:
|
||||||
|
found = True
|
||||||
|
tudou_download_by_id(vid, title=title, output_dir=output_dir, merge=merge, info_only=info_only)
|
||||||
|
|
||||||
|
if not found:
|
||||||
|
raise NotImplementedError(url)
|
||||||
|
|
||||||
|
site_info = "any.any"
|
||||||
|
download = embed_download
|
||||||
|
download_playlist = playlist_not_supported('any.any')
|
@ -57,7 +57,8 @@ class Youku(VideoExtractor):
|
|||||||
"""
|
"""
|
||||||
return match1(url, r'youku\.com/v_show/id_([a-zA-Z0-9=]+)') or \
|
return match1(url, r'youku\.com/v_show/id_([a-zA-Z0-9=]+)') or \
|
||||||
match1(url, r'player\.youku\.com/player\.php/sid/([a-zA-Z0-9=]+)/v\.swf') or \
|
match1(url, r'player\.youku\.com/player\.php/sid/([a-zA-Z0-9=]+)/v\.swf') or \
|
||||||
match1(url, r'loader\.swf\?VideoIDS=([a-zA-Z0-9=]+)')
|
match1(url, r'loader\.swf\?VideoIDS=([a-zA-Z0-9=]+)') or \
|
||||||
|
match1(url, r'player\.youku\.com/embed/([a-zA-Z0-9=]+)')
|
||||||
|
|
||||||
def get_playlist_id_from_url(url):
|
def get_playlist_id_from_url(url):
|
||||||
"""Extracts playlist ID from URL.
|
"""Extracts playlist ID from URL.
|
||||||
|
Loading…
Reference in New Issue
Block a user