Skip to content

Commit

Permalink
Make sure we only fetch movie information if we are displaying movies
Browse files Browse the repository at this point in the history
  • Loading branch information
steeve committed Feb 20, 2014
1 parent e019e44 commit 317e299
Showing 1 changed file with 28 additions and 26 deletions.
54 changes: 28 additions & 26 deletions resources/site-packages/xbmctorrent/scrapers/rss.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def check_imdb_id(item):
def parse(data, content_type=None):
import xbmc
import xml.etree.ElementTree as ET
from itertools import izip
from itertools import izip_longest
from concurrent import futures
from contextlib import nested, closing
from xbmctorrent.utils import SafeDialogProgress, get_quality_from_name, get_show_info_from_name, normalize_release_tags
Expand Down Expand Up @@ -71,31 +71,33 @@ def _attr(node, path, attrib):
check_imdb_id(item)
items.append(item)

with closing(SafeDialogProgress(delay_close=0)) as dialog:
dialog.create(plugin.name)
dialog.update(percent=0, line1="Fetching torrent information...", line2="", line3="")

with futures.ThreadPoolExecutor(max_workers=POOL_WORKERS) as pool:
futures = []
for item in items:
if item.get("imdb_id"):
futures.append(pool.submit(tmdb.get, item["imdb_id"]))
else:
futures.append(None)
state = {"done": 0}
def on_item(future):
state["done"] += 1
dialog.update(
percent=int(state["done"] * 100.0 / len(filter(None, futures))),
)
[future.add_done_callback(on_item) for future in futures if future]
while not all(future.done() for future in futures if future):
if dialog.iscanceled():
return
xbmc.sleep(100)

tmdb_list = [future and future.result() or None for future in futures]
for item, tmdb_data in izip(items, tmdb_list):
tmdb_list = []
if content_type:
with closing(SafeDialogProgress(delay_close=0)) as dialog:
dialog.create(plugin.name)
dialog.update(percent=0, line1="Fetching torrent information...", line2="", line3="")

with futures.ThreadPoolExecutor(max_workers=POOL_WORKERS) as pool:
futures = []
for item in items:
if item.get("imdb_id"):
futures.append(pool.submit(tmdb.get, item["imdb_id"]))
else:
futures.append(None)
state = {"done": 0}
def on_item(future):
state["done"] += 1
dialog.update(
percent=int(state["done"] * 100.0 / len(filter(None, futures))),
)
[future.add_done_callback(on_item) for future in futures if future]
while not all(future.done() for future in futures if future):
if dialog.iscanceled():
return
xbmc.sleep(100)
tmdb_list = [future and future.result() or None for future in futures]

for item, tmdb_data in izip_longest(items, tmdb_list):
if tmdb_data:
list_item = tmdb.get_list_item(tmdb_data)
release_tags = normalize_release_tags(item["title"], list_item["label"])
Expand Down

0 comments on commit 317e299

Please sign in to comment.