# vim:ts=4:sts=4:sw=4:noet
from common import grab_xml, grab_json, download_rtmp, Node
-from datetime import datetime
import itertools
BASE_URL = "http://www.abc.net.au/iview/"
NS = {
"auth": "http://www.abc.net.au/iView/Services/iViewHandshaker",
}
-PLAYPATH_PREFIXES = {
- "akamai": "flash/playback/_definst_/",
-}
class IviewNode(Node):
def __init__(self, title, parent, params, vpath):
Node.__init__(self, title, parent)
self.params = params
self.vpath = vpath
+ self.filename = self.title + "." + vpath.rsplit(".", 1)[1]
self.can_download = True
def download(self):
auth_doc = grab_xml(self.params["auth"], 0)
- host = auth_doc.xpath("//auth:host/text()", namespaces=NS)[0]
- playpath_prefix = PLAYPATH_PREFIXES.get(host.lower(), "")
- vbase = auth_doc.xpath("//auth:server/text()", namespaces=NS)[0]
+ server = self.params["server_streaming"]
token = auth_doc.xpath("//auth:token/text()", namespaces=NS)[0]
- vbase += "?auth=" + token
+ playpath = auth_doc.xpath("//auth:path/text()", namespaces=NS)[0]
+ if playpath == "playback/_definst_/":
+ playpath = "flash/" + playpath
+ vbase = server + "?auth=" + token
vpath, ext = self.vpath.rsplit(".", 1)
- vpath = playpath_prefix + vpath
- vpath = ext + ":" + vpath
- filename = self.title + "." + ext
- return download_rtmp(filename, vbase, vpath, HASH_URL)
-
+ vpath = ext + ":" + playpath + vpath
+ return download_rtmp(self.filename, vbase, vpath, HASH_URL)
class IviewSeriesNode(Node):
def __init__(self, title, parent, params, series_id):
def fill_children(self):
series_doc = grab_json(self.params["api"] + "series=" + self.series_id, 3600)
- if not series_doc:
+ for episode_list in series_doc:
+ if episode_list["a"] == self.series_id:
+ episode_list = episode_list["f"]
+ break
+ else:
return
- for episode in series_doc[0]["f"]:
+
+ for episode in episode_list:
vpath = episode["n"]
episode_title = episode["b"].strip()
if not episode_title.startswith(self.title):