From 7f8906ae3fe88b7464a57a0e71a97a089fbae370 Mon Sep 17 00:00:00 2001 From: Johan Andersson Date: Sun, 4 Sep 2016 20:44:25 +0200 Subject: [PATCH] pokemon: support for downloading videos --- lib/svtplay_dl/__init__.py | 2 ++ lib/svtplay_dl/service/pokemon.py | 52 +++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 lib/svtplay_dl/service/pokemon.py diff --git a/lib/svtplay_dl/__init__.py b/lib/svtplay_dl/__init__.py index a8c2751..5c00a38 100644 --- a/lib/svtplay_dl/__init__.py +++ b/lib/svtplay_dl/__init__.py @@ -37,6 +37,7 @@ from svtplay_dl.service.mtvservices import Mtvservices from svtplay_dl.service.nrk import Nrk from svtplay_dl.service.oppetarkiv import OppetArkiv from svtplay_dl.service.picsearch import Picsearch +from svtplay_dl.service.pokemon import Pokemon from svtplay_dl.service.qbrick import Qbrick from svtplay_dl.service.radioplay import Radioplay from svtplay_dl.service.riksdagen import Riksdagen @@ -76,6 +77,7 @@ sites = [ Nrk, Qbrick, Picsearch, + Pokemon, Ruv, Radioplay, Solidtango, diff --git a/lib/svtplay_dl/service/pokemon.py b/lib/svtplay_dl/service/pokemon.py new file mode 100644 index 0000000..c1eff03 --- /dev/null +++ b/lib/svtplay_dl/service/pokemon.py @@ -0,0 +1,52 @@ +from __future__ import absolute_import +import re +import os + +from svtplay_dl.service import Service, OpenGraphThumbMixin +from svtplay_dl.utils.urllib import urlparse +from svtplay_dl.utils import filenamify +from svtplay_dl.fetcher.hls import hlsparse +from svtplay_dl.error import ServiceError + + +class Pokemon(Service, OpenGraphThumbMixin): + supported_domains = ['pokemon.com'] + + def get(self): + data = self.get_urldata() + + parse = urlparse(self.url) + match = re.search(r'^/([a-z]{2})/', parse.path) + if not match: + yield ServiceError("Cant county code") + return + + res = self.http.get("http://www.pokemon.com/api/pokemontv/channels?region=%s" % match.group(1)) + janson = res.json() + match = re.search('data-video-season="([0-9]+)"', data) + season = match.group(1) + match = re.search('data-video-episode="([0-9]+)"', data) + episode = match.group(1) + + for i in janson: + for n in i["media"]: + if season == n["season"] and episode == n["episode"]: + stream = n["stream_url"] + + if self.options.output_auto: + directory = os.path.dirname(self.options.output) + basename = os.path.basename(self.options.output) + title = "pokemon.s%se%s-%s" % (season, episode, basename) + title = filenamify(title) + if len(directory): + self.options.output = os.path.join(directory, title) + else: + self.options.output = title + + if self.exclude(): + yield ServiceError("Excluding video") + return + + streams = hlsparse(self.options, self.http.request("get", stream), stream) + for n in list(streams.keys()): + yield streams[n]