#!/usr/bin/python # -*- coding: utf-8 -*- import common import connection import main_turner import plistlib import json import sys import urllib from bs4 import BeautifulSoup SITE = "adultswim" NAME = "Adult Swim" DESCRIPTION = "Cartoon Network (CartoonNetwork.com), currently seen in more than 97 million U.S. homes and 166 countries around the world, is Turner Broadcasting System, Inc.'s ad-supported cable service now available in HD offering the best in original, acquired and classic entertainment for youth and families. Nightly from 10 p.m. to 6 a.m. (ET, PT), Cartoon Network shares its channel space with Adult Swim, a late-night destination showcasing original and acquired animated and live-action programming for young adults 18-34 " SHOWS = "http://www.adultswim.com/mobile/tools/feeds/shows.plist" S = "http://www.adultswim.com/videos/app/show/%s?filterByPlatform=mobile" SEASONSCLIPS = "http://www.adultswim.com/videos/api/v1/videos?limit=0&offset=0&sortByDate=DESC&filterByEpisodeType=PRE,CLI&filterByCollectionId=%s&networkName=AS&filterByAuthType=true" SEASONSEPISODES = "http://www.adultswim.com/videos/api/v1/videos?limit=0&offset=0&sortByDate=DESC&filterByEpisodeType=EPI,TVE&filterByCollectionId=%s&networkName=AS&filterByAuthType=true" SEASONSCLIPSEXTRA = "http://www.adultswim.com/videos/api/v1/videos?limit=1&offset=0&sortByDate=DESC&filterByEpisodeType=PRE,CLI&filterByCollectionId=%s&networkName=AS&filterByAuthType=true" SEASONSEPISODESEXTRA = "http://www.adultswim.com/videos/api/v1/videos?limit=1&offset=0&sortByDate=DESC&filterByEpisodeType=EPI&filterByCollectionId=%s&networkName=AS&filterByAuthType=true" CLIPS = "http://www.adultswim.com/videos/api/v1/videos?limit=50&offset=0&sortByDate=DESC&filterByEpisodeType=CLI&filterByCollectionId=%s&filterByAuthType=true&networkName=AS" FULLEPISODES = "http://www.adultswim.com/videos/api/v1/videos?limit=50&offset=0&sortByDate=DESC&filterByEpisodeType=EPI,TVE&filterByCollectionId=%s&filterByAuthType=true&networkName=AS&filterByPlatform=mobile" EPISODE = "http://www.adultswim.com/videos/api/v0/assets?id=%s&networkName=AS" HLSPATH = "adultswim" def masterlist(): master_db = [] master_dict = {} master_data = connection.getURL(SHOWS) master_tree = plistlib.readPlistFromString(master_data) for master_item in master_tree: master_name = common.smart_utf8(master_item['name']) tvdb_name = common.get_show_data(master_name, SITE, 'seasons')[-1] if tvdb_name not in master_dict.keys(): master_dict[tvdb_name] = master_item['show-id'] else: master_dict[tvdb_name] = master_dict[tvdb_name] + ',' + master_item['show-id'] for master_name in master_dict: season_url = master_dict[master_name] master_db.append((master_name, SITE, 'seasons', season_url)) return master_db def seasons(collection_ids = common.args.url): seasons = [] for collection_id in collection_ids.split(','): if ',' not in collection_ids: season_url = S else: season_url = S season_data = connection.getURL(season_url % collection_id) episode_json = json.loads(season_data) for season in episode_json['show']['collections']: seasons.append((season['title'], SITE, 'episodes', season_url % collection_id + '#' + str(season['id']), -1, -1)) return seasons def episodes(url = common.args.url): episodes = [] episode_url = url.split('#')[0] season = url.split('#')[1] print episode_url episode_data = connection.getURL(episode_url) episode_menu = json.loads(episode_data)['show']['collections'] for episode_season in episode_menu: if episode_season['id'] == int(season): for episode_item in episode_season['videos']: url = episode_item['id'] try: episode_duration = episode_item['duration'] except: episode_duration = -1 try: episode_airdate = common.format_date(episode_item['1446015600'], epoch = True) except: episode_airdate = -1 try: episode_plot = episode_item['description'] except: episode_plot = '' episode_name = episode_item['title'] try: season_number = int(episode_item['season_number']) except: season_number = -1 try: episode_number = int(episode_item['episode_number']) except: episode_number = -1 try: episode_thumb = episode_item['images'][1]['url'] except: episode_thumb = None episode_mpaa = episode_item['tv_rating'] print episode_mpaa try: episode_type = episode_item['type'] except: episode_type = None show_title = episode_item['collectionSlug'].replace('-', ' ').title() try: u = sys.argv[0] u += '?url="' + urllib.quote_plus(url) + '"' u += '&mode="' + SITE + '"' u += '&sitemode="play_video"' infoLabels={ 'title' : episode_name, 'durationinseconds' : episode_duration, 'season' : season_number, 'episode' : episode_number, 'plot' : episode_plot, 'premiered' : episode_airdate , 'mpaa' : episode_mpaa, 'TVShowTitle': show_title} print infoLabels except Exception, e: print e episodes.append((u, episode_name, episode_thumb, infoLabels, 'list_qualities', False, type )) return episodes def play_video(): main_turner.play_video(SITE, EPISODE, HLSPATH) def list_qualities(): return main_turner.list_qualities(SITE, EPISODE)