Example #1
0
 def fill_children(self):
     ep_info = grab_json(self.url)
     series_slug = ep_info["href"].split("/")[1]
     series_url = API_URL + "/series/" + series_slug + "/" + ep_info[
         "seriesHouseNumber"]
     info = grab_json(series_url)
     for ep_info in info.get("episodes", []):
         add_episode(self, ep_info)
Example #2
0
 def fill_children(self):
     info = grab_json(self.url)
     for key in ["carousels", "collections", "index"]:
         for collection_list in info.get(key, None):
             if isinstance(collection_list, dict):
                 for ep_info in collection_list.get("episodes", []):
                     self.add_series(ep_info)
Example #3
0
 def fill_children(self):
     full_video_list = grab_json(FULL_VIDEO_LIST, 3600)
     category_and_entry_data = self.explode_videos_to_unique_categories(
         full_video_list)
     for category_path, entry_data in category_and_entry_data:
         nav_node = self.create_nav_node(self, category_path)
         nav_node.create_video_node(entry_data)
Example #4
0
 def download(self):
     info = grab_json(API_URL + "/programs/" + self.video_key)
     if "playlist" not in info:
         return False
     video_url = self.find_hls_url(info["playlist"])
     auth_token = self.get_auth_token()
     video_url = append_to_qs(video_url, {"hdnea": auth_token})
     return download_hls(self.filename, video_url)
Example #5
0
 def fetch_entries_page(self, channel, offset, page_size):
     url = append_to_qs(FULL_VIDEO_LIST, {
         "range": "%s-%s" % (offset, offset+page_size-1),
         "byCategories": channel,
     })
     data = grab_json(url)
     if "entries" not in data:
         raise Exception("Missing data in SBS response", data)
     return data["entries"]
Example #6
0
    def fill_children(self):
        doc = grab_json(SERIES_LIST_URL)

        for series in doc["Browse TV"]["Shows"]:
            title = series["title"]
            query = series["query"] + series["episodefilter"]
            expected_tv_show = series["tv_show"]

            TenSeriesNode(title, self, query, expected_tv_show)
Example #7
0
 def download(self):
     info = grab_json(API_URL + "/programs/" + self.video_key, 3600)
     if "playlist" not in info:
         return False
     logging.debug("info json: %r", info)
     video_url = self.find_hls_url(info["playlist"])
     logging.debug("video url find_hls_url: %r", video_url)
     token, token_hostname = self.get_auth_details()
     video_url = self.add_auth_token_to_url(video_url, token,
                                            token_hostname)
     return download_hls(self.filename, video_url)
Example #8
0
 def download(self):
     vid_id = self.get_video_id()
     qs = dict(METADATA_QUERY.items())  # copy..
     qs["q"] = qs["q"] % (vid_id, self.generate_session())
     url = METADATA_BASE + urllib.urlencode(qs)
     doc = grab_json(url, 0, skip_function=True)
     stream_data = doc["query"]["results"]["mediaObj"][0]["streams"][0]
     vbase = stream_data["host"]
     vpath = stream_data["path"]
     filename = self.title + ".flv"
     return download_rtmp(filename, vbase, vpath, HASH_URL)
Example #9
0
	def download(self):
		vid_id = self.get_video_id()
		qs = dict(METADATA_QUERY.items()) # copy..
		qs["q"] = qs["q"] % (vid_id, self.generate_session())
		url = METADATA_BASE + urllib.urlencode(qs)
		doc = grab_json(url, 0, skip_function=True)
		stream_data = doc["query"]["results"]["mediaObj"][0]["streams"][0]
		vbase = stream_data["host"]
		vpath = stream_data["path"]
		filename = self.title + ".flv"
		return download_rtmp(filename, vbase, vpath, HASH_URL)
Example #10
0
    def fill_children(self):
        page_number = 0
        while page_number < 100:
            url = self.get_page_url(self.query, page_number)
            page_number += 1

            page = grab_json(url)
            items = page["items"]
            if len(items) == 0:
                break

            for video_desc in items:
                self.process_video(video_desc)
Example #11
0
    def fill_children(self):
        page_number = 0
        while page_number < 100:
            url = self.get_all_videos_url(page_number)
            page_number += 1

            page = grab_json(url, 3600)
            items = page["items"]
            if len(items) == 0:
                break

            for video_desc in items:
                self.process_video(video_desc)
Example #12
0
    def load_categories(self):
        by_category_node = Node("By Category", self)

        data = grab_json(API_URL + "/categories")
        categories = data["categories"]

        for category_data in categories:
            category_title = category_data["title"]
            category_title = string.capwords(category_title)

            category_href = category_data["href"]

            IviewIndexNode(category_title, by_category_node,
                           API_URL + "/" + category_href)
Example #13
0
    def try_hds(self):
        desc_url = append_to_qs(BRIGHTCOVE_API, {
            "token": self.token,
            "command": "find_video_by_id",
            "video_fields": "hdsManifestUrl",
            "video_id": self.video_id,
        })

        doc = grab_json(desc_url, 3600)
        video_url = doc["hdsManifestUrl"]
        if not video_url:
            return

        filename = self.title + ".flv"
        return lambda: download_hds(filename, video_url)
Example #14
0
    def try_hds(self):
        desc_url = append_to_qs(
            BRIGHTCOVE_API, {
                "token": self.token,
                "command": "find_video_by_id",
                "video_fields": "hdsManifestUrl",
                "video_id": self.video_id,
            })

        doc = grab_json(desc_url, 3600)
        video_url = doc["hdsManifestUrl"]
        if not video_url:
            return

        filename = self.title + ".flv"
        return lambda: download_hds(filename, video_url)
Example #15
0
    def load_channels(self):
        by_channel_node = Node("By Channel", self)

        data = grab_json(API_URL + "/channel")
        channels = data["channels"]

        for channel_data in channels:
            channel_id = channel_data["categoryID"]
            channel_title = {
                "abc1": "ABC1",
                "abc2": "ABC2",
                "abc3": "ABC3",
                "abc4kids": "ABC4Kids",
                "news": "News",
                "abcarts": "ABC Arts",
            }.get(channel_id, channel_data["title"])

            channel_href = channel_data["href"]

            IviewIndexNode(channel_title, by_channel_node,
                           API_URL + "/" + channel_href)
Example #16
0
 def fill_children(self):
     info = grab_json(self.url)
     for ep_info in info:
         add_episode(self, ep_info)
Example #17
0
 def fill_children(self):
     info = grab_json(self.url, 3600)
     for ep_info in info:
         self.add_episode(ep_info)
Example #18
0
 def fill_children(self):
     info = grab_json(self.url, 3600)
     for index_list in info["index"]:
         for ep_info in index_list["episodes"]:
             self.add_episode(ep_info)
Example #19
0
 def download(self):
     info = grab_json(API_URL + "/programs/" + self.video_key, 3600)
     video_url = self.find_hls_url(info["playlist"])
     token, token_hostname= self.get_auth_details()
     video_url = self.add_auth_token_to_url(video_url, token, token_hostname)
     return download_hls(self.filename, video_url)
Example #20
0
 def fill_children(self):
     full_video_list = grab_json(FULL_VIDEO_LIST, 3600)
     category_and_entry_data = self.explode_videos_to_unique_categories(full_video_list)
     for category_path, entry_data in category_and_entry_data:
         nav_node = self.create_nav_node(self, category_path)
         nav_node.create_video_node(entry_data)