Esempio n. 1
0
def _extract(doc):
    rtree = select_all(doc, 'li.list-item')
    results = PlayItemList()
    for l in rtree:
        a = select_one(l, 'a')
        url = get_attr(a, 'href')
        if url is None or not url.startswith('/iplayer'):
            continue
        url = "http://www.bbc.co.uk" + url

        pdiv = select_one(l, 'div.primary')
        idiv = select_one(pdiv, 'div.r-image')
        if idiv is None:
            idiv = select_one(pdiv, 'div.rs-image')
            idiv = select_one(idiv, 'source')
            img = get_attr(idiv, 'srcset')
        else:
            img = get_attr(idiv, 'data-ip-src')

        sdiv = select_one(l, 'div.secondary')
        title = get_text(select_one(sdiv, 'div.title'))
        subtitle = get_text(select_one(sdiv, 'div.subtitle'))
        synopsis = get_text(select_one(sdiv, 'p.synopsis'))
        item = PlayItem(title, img, url, subtitle, synopsis)
        a = select_one(l, 'a.view-more-container')
        if a is not None:
            link = "http://bbc.co.uk" + a.get('href')
            item.add_action(MoreEpisodesAction(link, title))
        results.add(item)
    return results
Esempio n. 2
0
def feed(idx):
    url = _FEEDLIST[idx]['url']
    doc = get_doc(url)
    rtree = select_all(doc, "a.complex-link")
    results = PlayItemList()
    for l in rtree:
        url = get_attr(l, 'href')
        el = select_one(l, '.tout__title')
        if el is None:
            continue
        title = get_text(el)
        el = select_one(l, 'img.fluid-media__media')
        img = get_attr(el, 'src')
        el = select_one(l, 'p.tout__meta')
        subtitle = get_text_content(el)
        if subtitle == 'No episodes available':
            continue
        item = PlayItem(title, img, url, subtitle)
        if subtitle != '1 episode':
            item.add_action(MoreEpisodesAction(url, title))
        results.add(item)
    if idx == 0:
        global _SHOWLIST
        _SHOWLIST = results
    return results
Esempio n. 3
0
def _extract(data):
  results = PlayItemList()
  if 'data' not in data:
    return results
  if 'movies' not in data['data']:
    return results
  rtree = data['data']['movies']
  for r in rtree:
    if 'torrents' not in r:
      continue
    torrent = _smallest_size(r['torrents'])
    title = r['title_long']
    img = r['medium_cover_image']
    # Proxy
    img = "https://images.weserv.nl/?url=yts.ag" + img[14:]
    url = torrent['url']
    size = torrent['size']
    seeds = torrent['seeds']
    peers = torrent['peers']
    subtitle = chanutils.torrent.subtitle(size, seeds, peers)
    rating = str(r['rating'])
    if rating[-1] == '0':
      rating = rating[:-1]
    imdb = "<a target='_blank' href='http://www.imdb.com/title/" + r['imdb_code'] + "/'>IMDB Rating: " + rating + "</a>"
    synopsis  = imdb
    subs = movie_title_year(title)
    subs['imdb'] = r['imdb_code']
    results.add(TorrentPlayItem(title, img, url, subtitle, synopsis, subs))
  return results
Esempio n. 4
0
def search(q):
    results = PlayItemList()
    items = _SHOWLIST.to_list()
    for i in items:
        title = i.title
        if q.lower() in title.lower():
            results.add(i)
    return results
Esempio n. 5
0
def _extract_html(doc):
  results = PlayItemList()
  result_list = _extract_list(doc)
  # sort by seeds (removing dots and commas)
  result_list.sort(key=lambda el: int(el['seeds'].translate(None, ".,")), reverse = True) 
  for l in result_list:    
    subtitle = _subtitle(l['size'], l['seeds'], l['released'])
    results.add(TorrentPlayItem(l['title'], l['img'], l['url'], subtitle, subs=l['subs']))
  return results
Esempio n. 6
0
def feed(idx):
    folder = _FEEDLIST[idx]['folder']
    results = PlayItemList()
    files = os.listdir(folder)
    for f in files:
        title = os.path.splitext(f)[0]
        url = 'file://' + os.path.join(folder, f)
        results.add(PlayItem(title, '/img/icons/file-o.svg', url))
    return results
Esempio n. 7
0
def search(q):
    shows = get_json(_ALL_SHOWS_URL)
    results = PlayItemList()
    for i in shows:
        if not 'episode' in i['url']:
            continue
        if q.lower() in i['title'].lower():
            results.add(
                PlayItem(i['title'], i['image']['jelly'], i['url']['episode'],
                         i['synopses']))
    return results
Esempio n. 8
0
def _extract(text):
    start = text.find('var data = {')
    end = text.find('console.debug(data);', start)
    data = json.loads(text[start + 11:end - 14])
    results = PlayItemList()
    for item in data['filtered']['data']:
        url = item['clip']['link']
        title = item['clip']['name']
        img = item['clip']['pictures']['sizes'][-1]['link']
        results.add(PlayItem(title, img, url))
    return results
Esempio n. 9
0
def _extract(stream_json):
  results = PlayItemList()
  for stream in stream_json:
    title = stream['user_name'] if 'user_name' in stream else ''
    status = stream['title'] if 'title' in stream else ''
    viewers = stream['viewer_count'] if 'viewer_count' in stream else ''
    subtitle = 'viewers: ' + str(viewers) + '<br>' + status
    img = stream['thumbnail_url'].replace('{width}','165').replace('{height}','124')
    url = _BASE_URL + stream['user_name'] if 'user_name' in stream else ''
    results.add(LiveStreamPlayItem(title, img, url, subtitle))
  return results
Esempio n. 10
0
def _extract_streams(stream_json):
  results = PlayItemList()
  for stream in stream_json:
    title = stream['channel']['display_name'] if 'display_name' in stream['channel'] else ''
    status = stream['channel']['status'] if 'status' in stream['channel'] else ''
    viewers = stream['viewers'] if 'viewers' in stream else ''
    subtitle = 'viewers: ' + str(viewers) + '<br>' + status
    img = stream['channel']['logo']
    url = stream['channel']['url'] if 'url' in stream['channel'] else ''
    results.add(LiveStreamPlayItem(title, img, url, subtitle))
  return results
Esempio n. 11
0
def _extract(data):
    results = PlayItemList()
    rtree = data['results']
    for r in rtree:
        title = replace_entity(r['title'])
        img = r['thumbnailUrl']
        if 'url' in r:
            url = r['url']
        else:
            url = r['URL']
        results.add(PlayItem(title, img, url))
    return results
Esempio n. 12
0
def _extract(doc):
    result_list = _extract_list(doc)
    results = PlayItemList()
    for l in result_list:
        subtitle = chanutils.torrent.subtitle(l['size'], l['seeds'],
                                              l['peers'])
        results.add(
            TorrentPlayItem(l['title'],
                            l['img'],
                            l['url'],
                            subtitle,
                            subs=l['subs']))
    return results
Esempio n. 13
0
def _extract(doc):
    rtree = select_all(doc, '#browse_content li a')
    results = PlayItemList()
    for l in rtree:
        url = _PREFIX + l.get('href')
        title = get_attr(l, 'title')
        if title is None:
            break
        el = select_one(l, 'img')
        img = get_attr(el, 'src')
        el = select_one(l, 'time')
        subtitle = get_text(el)
        results.add(PlayItem(title, img, url, subtitle))
    return results
Esempio n. 14
0
def _extract_show(data):
  results = PlayItemList()
  img = data['images']['poster']
  series = data['title']
  rtree = data['episodes'] 
  for r in rtree:
    title = r['title']
    url = r['torrents']['0']['url']
    subtitle = "Season: " + str(r['season']) + ", Episode: " + str(r['episode'])
    synopsis = r['overview']
    subs = {'series':series, 'season':r['season'], 
            'episode':r['episode']}
    results.add(TorrentPlayItem(title, img, url, subtitle, synopsis, subs=subs))
  return results
Esempio n. 15
0
def _extract_showlist(doc):
  rtree = select_all(doc, 'tr[name="hover"]')
  img = None
  results = PlayItemList()
  for l in rtree:
    el = select_one(l, 'a.thread_link')
    title = get_text(el)
    url = get_attr(el, 'href')
    el = select_one(l, 'b')
    rating = get_text(el)
    subtitle = "Rating: " + rating
    item = ShowMoreItem(title, img, url, subtitle)
    results.add(item)
  return results
Esempio n. 16
0
def _extract(doc):
    results = PlayItemList()
    rtree = select_all(doc, 'tr')
    first = True
    for l in rtree:
        if first:
            first = False
            continue
        el = select_one(l, "a[title='More from this category']")
        maincat = get_text(el)
        img = '/img/icons/film.svg'
        if maincat is not None:
            if maincat == 'Video':
                img = '/img/icons/film.svg'
            elif maincat == 'Audio':
                img = '/img/icons/music.svg'
            else:
                continue
        el = select_one(l, 'a.detLink')
        title = get_text(el)
        el = select_one(l, "a[title='Download this torrent using magnet']")
        url = get_attr(el, 'href')
        el = select_one(l, 'font.detDesc')
        desc = get_text(el)
        start = desc.find(', Size ')
        if start == -1:
            continue
        start = start + 7
        end = desc.find(',', start)
        if end == -1:
            continue
        size = desc[start:end].replace("iB", "B")
        el = select_one(l, "td:nth-child(3)")
        seeds = get_text(el)
        el = select_one(l, "td:nth-child(4)")
        peers = get_text(el)
        subtitle = chanutils.torrent.subtitle(size, seeds, peers)
        subcat = "Movies"
        el = select_one(l, ":nth-child(3)")
        if el.text is not None:
            subcat = get_text(el)
        subs = None
        if subcat.endswith("Movies"):
            subs = movie_title_year(title)
        elif subcat.endswith("shows"):
            subs = series_season_episode(title)
        if not url:
            continue
        results.add(TorrentPlayItem(title, img, url, subtitle, subs=subs))
    return results
Esempio n. 17
0
def _extract(doc):
    results = PlayItemList()
    rtree = select_all(doc, 'div.col')
    for r in rtree:
        el = select_one(r, "h4")
        title = get_text(el)
        if not title:
            continue
        el = select_one(r, "img")
        img = get_attr(el, "src")
        el = select_one(r, "a.js-click-video")
        url = get_attr(el, "href")
        results.add(PlayItem(title, img, url))
    return results
Esempio n. 18
0
def feed(idx):
  doc = get_doc(_FEEDLIST[idx]['url'])
  rtree = select_all(doc, 'div.thumbs li')
  results = PlayItemList()
  for l in rtree:
    el = select_one(l, 'a')
    url = get_attr(el, 'href')
    el = select_one(l, 'img')
    img = get_attr(el, 'src')
    el = select_one(l, 'h4.talk-link__speaker')
    subtitle = get_text(el)
    el = select_one(l, 'a span')
    title = get_text(el)
    results.add(PlayItem(title, img, url, subtitle))
  return results
Esempio n. 19
0
def feed(idx):
    url = _FEEDLIST[idx]['url']
    count = 0
    results = PlayItemList()
    shows = get_json(url)
    for ep_info in shows["entries"]:
        video_key = ep_info["id"]
        title = ep_info["title"]
        description = ep_info["description"]
        thumbnail = ep_info["plmedia$defaultThumbnailUrl"]
        video_url = VIDEO_URL % video_key.split("/")[-1]
        item = PlayItem(title, thumbnail, video_url, description)
        results.add(item)

    return results
Esempio n. 20
0
def search(q):
    url = _SEARCH_URL + q + "&range=1-50"
    count = 0
    results = PlayItemList()
    shows = get_json(url)
    for ep_info in shows["entries"]:
        video_key = ep_info["id"]
        title = ep_info["title"]
        description = ep_info["description"]
        thumbnail = ep_info["plmedia$defaultThumbnailUrl"]
        video_url = VIDEO_URL % video_key.split("/")[-1]
        item = PlayItem(title, thumbnail, video_url, description)
        results.add(item)

    return results
Esempio n. 21
0
def feed(idx):
  doc = get_doc(_FEEDLIST[idx]['url'])
  rtree = select_all(doc, 'div.post-block')
  results = PlayItemList()
  for l in rtree:
    el = select_one(l, 'a')
    url = get_attr(el, 'href')
    el = select_one(l, 'img')
    img = get_attr(el, 'src')
    el = select_one(l, 'div.post-block__content')
    subtitle = get_text(el)
    el = select_one(l, 'a.post-block__title__link')
    title = get_text(el)
    results.add(PlayItem(title, img, url, subtitle))
  return results
Esempio n. 22
0
def _extract(data):
  results = PlayItemList()
  if not 'data' in data or data['data']['totalItems'] == 0:
    return results
  rtree = data['data']['items']
  for r in rtree:
    title = r['title']
    img = r['thumbnail']['sqDefault']
    url = r['player']['default']
    m, s = divmod(r['duration'], 60)
    h, m = divmod(m, 60)
    subtitle = 'Duration: ' + "%d:%02d:%02d" % (h, m, s)
    if 'viewCount' in r:
      subtitle = subtitle + ', Views: ' + "{:,}".format(r['viewCount'])
    results.add(PlayItem(title, img, url, subtitle))
  return results
Esempio n. 23
0
def _extract(rtree):
    results = PlayItemList()
    for i in rtree:
        img = i['posters']['primary']
        title = i['title']
        subtitle = "DVD Release Date: " + i['dvdReleaseDate']
        tomatoScore = "Unknown"
        if 'tomatoScore' in i:
            tomatoScore = str(i['tomatoScore']) + "%"
        popcornScore = "Unknown"
        if 'popcornScore' in i:
            popcornScore = str(i['popcornScore']) + "%"
        synopsis = "Tomato Score: " + tomatoScore
        synopsis = synopsis + ", Popcorn Score: " + popcornScore
        results.add(SearchItem(title, img, subtitle, synopsis))
    return results
Esempio n. 24
0
def search(q):
  url = _SEARCH_URL + q
  count = 0
  results = PlayItemList()
  shows = get_json(url)
  for ep_info in shows:
    video_key = ep_info["episodeHouseNumber"]
    series_title = ep_info["seriesTitle"]
    title = ep_info.get("title", None)
    episode_title = format_episode_title(series_title, title)
    thumbnail = ep_info["thumbnail"]
    video_url = API_URL + "/programs/" + video_key
    item = PlayItem(series_title, thumbnail, video_url, title, episode_title)
    results.add(item)

  return results
Esempio n. 25
0
def _extract(data):
    results = PlayItemList()
    rtree = data['items']
    for r in rtree:
        title = r['snippet']['title']
        subtitle = r['snippet']['publishedAt'][:10]
        synopsis = r['snippet']['description']
        if len(synopsis) > 200:
            synopsis = synopsis[:200] + "..."
        img = r['snippet']['thumbnails']['default']['url']
        if isinstance(r['id'], basestring):
            vid = r['id']
        else:
            vid = r['id']['videoId']
        url = 'https://www.youtube.com/watch?v=' + vid
        results.add(PlayItem(title, img, url, subtitle, synopsis))
    return results
Esempio n. 26
0
def feed(idx):
    url = _FEEDLIST[idx]['url']
    doc = get_doc(url)
    rtree = select_all(doc, 'li.programme')
    results = PlayItemList()
    for l in rtree:
        el = select_one(l, '.programme-title a')
        url = _PREFIX + get_attr(el, 'href')
        title = get_text(el)
        el = select_one(l, 'img')
        img = get_attr(el, 'src')
        subtitle = get_text(select_one(l, '.episode-info span.episode-free'))
        item = PlayItem(title, img, url, subtitle)
        if (subtitle is not None) and (not subtitle.startswith('1 ')):
            item.add_action(MoreEpisodesAction(url, title))
        results.add(item)
    return results
Esempio n. 27
0
def showmore(link):
    doc = get_doc(link)
    rtree = select_all(doc, "a.complex-link")
    results = PlayItemList()
    for l in rtree:
        url = get_attr(l, 'href')
        el = select_one(l, 'img.fluid-media__media')
        img = get_attr(el, 'src')
        el = select_one(l, 'h3')
        title = get_text(el)
        el = select_one(l, 'time')
        subtitle = get_text(el)
        el = select_one(l, 'p.tout__summary')
        synopsis = get_text(el)
        item = PlayItem(title, img, url, subtitle, synopsis)
        results.add(item)
    return results
Esempio n. 28
0
def search(q):
    doc = get_doc(_SEARCH_URL, params={'q': q})
    rtree = select_all(doc, 'article.search__result')
    results = PlayItemList()
    for l in rtree:
        el = select_one(l, 'a')
        url = get_attr(el, 'href')
        if not url.startswith('/talks/'):
            continue
        url = _PREFIX + url
        title = get_text(el)
        el = select_one(l, 'img')
        img = get_attr(el, 'src')
        el = select_one(l, 'div.search__result__description')
        synopsis = get_text(el)
        results.add(PlayItem(title, img, url, synopsis=synopsis))
    return results
Esempio n. 29
0
def feed(idx):
  url = _FEEDLIST[idx]['url']
  count = 0 
  results = PlayItemList()
  shows = get_json(url)
  for index_list in shows["index"]:
    for ep_info in index_list["episodes"]:
      video_key = ep_info["episodeHouseNumber"]
      series_title = ep_info["seriesTitle"]
      title = ep_info.get("title", None)
      #episode_title = format_episode_title(series_title, title)
      episode_title = ep_info["description"] 
      thumbnail = ep_info["thumbnail"]
      video_url = API_URL + "/programs/" + video_key 
      item = PlayItem(series_title, thumbnail, video_url, title, episode_title) 
      if ep_info["livestream"] == "0":
        results.add(item)

  return results
Esempio n. 30
0
def showmore(link):
    doc = get_doc(link)
    rtree = select_all(doc, 'div.views-row')
    results = PlayItemList()
    for l in rtree:
        el = select_one(l, 'a')
        url = _PREFIX + get_attr(el, 'href')
        el = select_one(el, 'img')
        img = get_attr(el, 'src')
        el = select_one(l, 'span.date-display-single')
        subtitle = get_text(el)
        el = select_one(l, 'div.field-season-number')
        title1 = get_text_content(el)
        el = select_one(l, 'div.field-episode-number')
        title = title1 + " " + get_text_content(el)
        el = select_one(l, 'div.field-name-field-short-synopsis')
        synopsis = get_text_content(el)
        item = PlayItem(title, img, url, subtitle, synopsis)
        results.add(item)
    return results