1
0
mirror of https://github.com/spaam/svtplay-dl.git synced 2024-11-24 04:05:39 +01:00

Move url to object attribute

This commit is contained in:
Anders Waldenborg 2014-01-06 23:14:06 +01:00
parent 231eaf00e6
commit f331a653b6
19 changed files with 60 additions and 55 deletions

View File

@ -70,7 +70,7 @@ def get_media(url, options):
# output is a directory
os.path.join(options.output, filenamify(title_tag))
stream.get(options, url)
stream.get(options)
def setup_log(silent, verbose=False):
fmt = logging.Formatter('%(levelname)s %(message)s')

View File

@ -8,6 +8,9 @@ class Service(object):
supported_domains = []
supported_domains_re = []
def __init__(self, url):
self.url = url
@classmethod
def handles(cls, url):
urlp = urlparse(url)
@ -77,19 +80,19 @@ class Generic(object):
url = match.group(1)
for i in sites:
if i.handles(url):
return url, i()
return url, i(url)
match = re.search(r"src=\"(http://player.vimeo.com/video/[0-9]+)\" ", data)
if match:
for i in sites:
if i.handles(match.group(1)):
return match.group(1), i()
return match.group(1), i(url)
match = re.search(r"tv4video.swf\?vid=(\d+)", data)
if match:
url = "http://www.tv4play.se/?video_id=%s" % match.group(1)
for i in sites:
if i.handles(url):
return url, i()
return url, i(url)
return url, stream
def service_handler(url):
@ -97,7 +100,7 @@ def service_handler(url):
for i in sites:
if i.handles(url):
handler = i()
handler = i(url)
break
return handler

View File

@ -15,9 +15,9 @@ from svtplay_dl.fetcher.http import download_http
class Aftonbladet(Service):
supported_domains = ['aftonbladet.se']
def get(self, options, url):
parse = urlparse(url)
data = get_http_data(url)
def get(self, options):
parse = urlparse(self.url)
data = get_http_data(self.url)
match = re.search("abTvArticlePlayer-player-(.*)-[0-9]+-[0-9]+-clickOverlay", data)
if not match:
log.error("Can't find video file")

View File

@ -14,8 +14,8 @@ from svtplay_dl.log import log
class Dr(Service):
supported_domains = ['dr.dk']
def get(self, options, url):
data = get_http_data(url)
def get(self, options):
data = get_http_data(self.url)
match = re.search(r'resource:[ ]*"([^"]*)",', data)
if match:
resource_url = match.group(1)

View File

@ -15,8 +15,8 @@ from svtplay_dl.utils.urllib import quote_plus
class Expressen(Service):
supported_domains = ['expressen.se']
def get(self, options, url):
data = get_http_data(url)
def get(self, options):
data = get_http_data(self.url)
match = re.search(r"xmlUrl: '(http://www.expressen.*)'", data)
if not match:
log.error("Can't find video file")

View File

@ -14,8 +14,8 @@ from svtplay_dl.fetcher.rtmp import download_rtmp
class Hbo(Service):
supported_domains = ['hbo.com']
def get(self, options, url):
parse = urlparse(url)
def get(self, options):
parse = urlparse(self.url)
try:
other = parse[5]
except KeyError:

View File

@ -24,8 +24,8 @@ class Justin(Service):
r'^(?:(?:[a-z]{2}-)?[a-z]{2}\.)?(www\.)?twitch\.tv$',
r'^(?:(?:[a-z]{2}-)?[a-z]{2}\.)?(www\.)?justin\.tv$']
def get(self, options, url):
parse = urlparse(url)
def get(self, options):
parse = urlparse(self.url)
match = re.search(r"/[-a-zA-Z0-9_]+/c/(\d+)", parse.path)
if match:
url = "http://api.justin.tv/api/broadcast/by_chapter/%s.xml?onsite=true" % match.group(1)

View File

@ -15,9 +15,9 @@ from svtplay_dl.fetcher.hls import download_hls
class Kanal5(Service):
supported_domains = ['kanal5play.se', 'kanal9play.se']
def get(self, options, url):
def get(self, options):
cj = CookieJar()
match = re.search(r".*video/([0-9]+)", url)
match = re.search(r".*video/([0-9]+)", self.url)
if not match:
log.error("Can't find video file")
sys.exit(2)

View File

@ -12,8 +12,8 @@ from svtplay_dl.log import log
class Mtvservices(Service):
supported_domains = ['colbertnation.com', 'thedailyshow.com']
def get(self, options, url):
data = get_http_data(url)
def get(self, options):
data = get_http_data(self.url)
match = re.search(r"mgid=\"(mgid.*[0-9]+)\" data-wi", data)
if not match:
log.error("Can't find video file")

View File

@ -12,8 +12,8 @@ from svtplay_dl.fetcher.hls import download_hls
class Nrk(Service):
supported_domains = ['nrk.no']
def get(self, options, url):
data = get_http_data(url)
def get(self, options):
data = get_http_data(self.url)
match = re.search(r'data-media="(.*manifest.f4m)"', data)
manifest_url = match.group(1)
if options.hls:
@ -25,7 +25,7 @@ class Nrk(Service):
if options.subtitle:
match = re.search("data-subtitlesurl = \"(/.*)\"", data)
if match:
parse = urlparse(url)
parse = urlparse(self.url)
subtitle = "%s://%s%s" % (parse.scheme, parse.netloc, match.group(1))
data = get_http_data(subtitle)
subtitle_tt(options, data)

View File

@ -13,17 +13,17 @@ from svtplay_dl.fetcher.rtmp import download_rtmp
class Qbrick(Service):
supported_domains = ['dn.se', 'di.se', 'svd.se', 'sydsvenskan.se']
def get(self, options, url):
if re.findall(r"sydsvenskan.se", url):
data = get_http_data(url)
def get(self, options):
if re.findall(r"sydsvenskan.se", self.url):
data = get_http_data(self.url)
match = re.search(r"data-qbrick-mcid=\"([0-9A-F]+)\"", data)
if not match:
log.error("Can't find video file")
sys.exit(2)
mcid = match.group(1)
host = "http://vms.api.qbrick.com/rest/v3/getsingleplayer/%s" % mcid
elif re.findall(r"di.se", url):
data = get_http_data(url)
elif re.findall(r"di.se", self.url):
data = get_http_data(self.url)
match = re.search("src=\"(http://qstream.*)\"></iframe", data)
if not match:
log.error("Can't find video info")
@ -34,8 +34,8 @@ class Qbrick(Service):
log.error("Can't find video file")
sys.exit(2)
host = "http://vms.api.qbrick.com/rest/v3/getplayer/%s" % match.group(1)
elif re.findall(r"dn.se", url):
data = get_http_data(url)
elif re.findall(r"dn.se", self.url):
data = get_http_data(self.url)
match = re.search(r"'([0-9A-F]{8})',", data)
if not match:
match = re.search(r"mediaId = '([0-9A-F]{8})';", data)
@ -43,8 +43,8 @@ class Qbrick(Service):
log.error("Can't find video file")
sys.exit(2)
host = "http://vms.api.qbrick.com/rest/v3//getsingleplayer/%sDE1BA107?statusCode=xml" % match.group(1)
elif re.findall(r"svd.se", url):
match = re.search(r"_([0-9]+)\.svd", url)
elif re.findall(r"svd.se", self.url):
match = re.search(r"_([0-9]+)\.svd", self.url)
if not match:
log.error("Can't find video file")
sys.exit(2)

View File

@ -19,10 +19,10 @@ from svtplay_dl.log import log
class Radioplay(Service):
supported_domains = ['radioplay.se']
def get(self, options, url):
data = get_http_data(url)
def get(self, options):
data = get_http_data(self.url)
match = re.search(r"liveStationsRedundancy = ({.*});</script>", data)
parse = urlparse(url)
parse = urlparse(self.url)
station = parse.path[1:]
streams = None
if match:

View File

@ -10,8 +10,8 @@ from svtplay_dl.fetcher.hls import download_hls
class Ruv(Service):
supported_domains = ['ruv.is']
def get(self, options, url):
data = get_http_data(url)
def get(self, options):
data = get_http_data(self.url)
match = re.search(r'(http://load.cache.is/vodruv.*)"', data)
js_url = match.group(1)
js = get_http_data(js_url)

View File

@ -18,9 +18,9 @@ from svtplay_dl.fetcher.http import download_http
class Sr(Service):
supported_domains = ['sverigesradio.se']
def get(self, options, url):
data = get_http_data(url)
parse = urlparse(url)
def get(self, options):
data = get_http_data(self.url)
parse = urlparse(self.url)
if "metafile" in parse_qs(parse.query):
options.other = "%s?%s" % (parse.path, parse.query)

View File

@ -18,9 +18,9 @@ from svtplay_dl.log import log
class Svtplay(Service):
supported_domains = ['svtplay.se', 'svt.se', 'oppetarkiv.se', 'beta.svtplay.se']
def get(self, options, url):
if re.findall("svt.se", url):
data = get_http_data(url)
def get(self, options):
if re.findall("svt.se", self.url):
data = get_http_data(self.url)
match = re.search(r"data-json-href=\"(.*)\"", data)
if match:
filename = match.group(1).replace("&amp;", "&").replace("&format=json", "")
@ -28,6 +28,8 @@ class Svtplay(Service):
else:
log.error("Can't find video file")
sys.exit(2)
else:
url = self.url
pos = url.find("?")
if pos < 0:

View File

@ -15,20 +15,20 @@ from svtplay_dl.fetcher.hds import download_hds
class Tv4play(Service):
supported_domains = ['tv4play.se', 'tv4.se']
def get(self, options, url):
parse = urlparse(url)
if "tv4play.se" in url:
def get(self, options):
parse = urlparse(self.url)
if "tv4play.se" in self.url:
try:
vid = parse_qs(parse[4])["video_id"][0]
except KeyError:
log.error("Can't find video file")
sys.exit(2)
else:
match = re.search(r"-(\d+)$", url)
match = re.search(r"-(\d+)$", self.url)
if match:
vid = match.group(1)
else:
data = get_http_data(url)
data = get_http_data(self.url)
match = re.search(r"\"vid\":\"(\d+)\",", data)
if match:
vid = match.group(1)

View File

@ -14,8 +14,8 @@ from svtplay_dl.log import log
class Urplay(Service):
supported_domains = ['urplay.se', 'ur.se']
def get(self, options, url):
data = get_http_data(url)
def get(self, options):
data = get_http_data(self.url)
match = re.search(r"urPlayer.init\((.*)\);", data)
if not match:
log.error("Can't find json info")
@ -69,4 +69,4 @@ class Urplay(Service):
elif 'sd' in available:
return available["sd"]
else:
raise KeyError()
raise KeyError()

View File

@ -21,8 +21,8 @@ class Viaplay(Service):
'tv3play.no', 'tv3play.dk', 'tv6play.no', 'viasat4play.no',
'tv3play.ee', 'tv3play.lv', 'tv3play.lt']
def get(self, options, url):
parse = urlparse(url)
def get(self, options):
parse = urlparse(self.url)
match = re.search(r'\/play\/(\d+)/?', parse.path)
if not match:
log.error("Cant find video file")

View File

@ -13,8 +13,8 @@ from svtplay_dl.log import log
class Vimeo(Service):
supported_domains = ['vimeo.com']
def get(self, options, url):
data = get_http_data(url)
def get(self, options):
data = get_http_data(self.url)
match = re.search("data-config-url=\"(.*)\" data-fallback-url", data)
if not match:
log.error("Can't find data")