diff options
| -rw-r--r-- | addon.py | 15 |
1 files changed, 9 insertions, 6 deletions
@@ -17,6 +17,7 @@ Video plugin for animations posted to Newgrounds. """ +import concurrent.futures import os import sys from urllib.parse import urlencode, parse_qsl @@ -115,7 +116,6 @@ def get_video_url(url): """ TODO """ - xbmc.log("Getting info for {}".format(url), 2) html = requests.get(url).text soup = BeautifulSoup(html, "html.parser") video_id = soup.find("meta", property="og:url")["content"].strip( @@ -141,7 +141,6 @@ def get_addon_video_info(url): """ Scrape metadata from `url`. """ - xbmc.log("Getting info for {}".format(url), 2) html = requests.get(url).text soup = BeautifulSoup(html, "html.parser") return { @@ -192,10 +191,14 @@ def list_videos(genre, category=0, offset=0): :type genre: str :type offset: int """ - videos = [ - get_addon_video_info(url) - for url in get_video_urls(category=category, interval="all", offset=offset) - ] + urls = get_video_urls(category=category, interval="all", offset=offset) + videos = [] + with concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor: + # Start the load operations and mark each future with its URL + future_to_url = {executor.submit(get_addon_video_info, url): url for url in urls} + for future in concurrent.futures.as_completed(future_to_url): + url = future_to_url[future] + videos.append(future.result()) xbmcplugin.setPluginCategory(HANDLE, "Featured") # , genre_info['genre']) xbmcplugin.setContent(HANDLE, "movies") # Get the list of videos in the category. |