aboutsummaryrefslogtreecommitdiff
path: root/automedia.py
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2020-07-07 05:42:17 +0200
committerdec05eba <dec05eba@protonmail.com>2020-07-07 05:42:17 +0200
commitf40fdb11160c8dc1cc4fa2d68d893637cd598272 (patch)
tree67d27129fc0418ac840abe6a3d99d36caec6eeb3 /automedia.py
parentb9267c0ff2b13cb3a3bdd8f28a1a2329ef01f5d6 (diff)
Add option to start tracking anime from filename
Diffstat (limited to 'automedia.py')
-rwxr-xr-xautomedia.py44
1 files changed, 41 insertions, 3 deletions
diff --git a/automedia.py b/automedia.py
index 71142ff..9d05636 100755
--- a/automedia.py
+++ b/automedia.py
@@ -10,8 +10,11 @@ import uuid
import errno
import signal
import transmissionrpc
+import requests
+import urllib.parse
from domain import url_extract_domain
+import episode
from lxml import etree
from datetime import datetime
@@ -233,11 +236,42 @@ def get_matching_html_items_by_name(html_items1, html_items2):
matching_items.append(html_item1.name)
return matching_items
+def get_rss_from_episode_info(episode_name_raw, episode_info):
+ user_failed = False
+
+ group_name_escaped = urllib.parse.quote(episode_info.group_name)
+ user_page_response = requests.head("https://nyaa.si/user/" + group_name_escaped)
+ if not user_page_response.ok:
+ user_failed = True
+ print("Warning: Failed to get user nyaa.si user from '%s'" % episode_name_raw)
+
+ generic_name = episode_info.get_generic_name()
+ while True:
+ response = input('Are you sure you want to track "%s" by "%s" starting from "%s" ? (Y)es/No: ' % (generic_name, "all users" if user_failed else episode_info.group_name, episode_name_raw))
+ if len(response) > 0 and response[0].lower() == 'n':
+ return None
+ elif len(response) == 0 or response[0].lower() == 'y':
+ break
+
+ return 'https://nyaa.si/?page=rss&q={}&c=0_0&f=0&u={}'.format(urllib.parse.quote(generic_name), group_name_escaped)
+
def add_rss(name, url, rss_config_dir, start_after):
feed = feedparser.parse(url)
if feed.bozo == 1:
- print("Failed to add rss, error: {}".format(str(feed.bozo_exception)))
- return False
+ episode_info = episode.episode_extract_info(url)
+ if not episode_info.group_name or not episode_info.anime_name:
+ print("Failed to add rss, error: {}".format(str(feed.bozo_exception)))
+ return False
+
+ start_after = url
+ url = get_rss_from_episode_info(url, episode_info)
+ if not url:
+ return True
+
+ feed = feedparser.parse(url)
+ if feed.bozo == 1:
+ print("Failed to add rss, error: {}".format(str(feed.bozo_exception)))
+ return False
if not name:
name = feed["channel"]["title"].replace("/", "_").strip()
@@ -624,15 +658,17 @@ def usage():
exit(1)
def usage_add():
- print("usage: automedia.py add <type> <url> [--name name] [--start-after start_after]")
+ print("usage: automedia.py add <type> <url|filename> [--name name] [--start-after start_after]")
print("OPTIONS")
print(" type The type should be either rss or html")
print(" url The url to the rss or html")
+ print(" filename The filename of an episode of an existing serie to start track. Currently only works with rss on https://nyaa.si")
print(" --name The display name to be used for the media. Optional for rss, in which case the name will be retries from rss TITLE, required for html")
print(" --start-after The sync should start downloading media after this item. This --start-after value should be the title of the episode/chapter (Optional, default is to start from the first item)")
print("EXAMPLES")
print(" automedia.py add rss 'https://nyaa.si/?page=rss&q=Tejina-senpai+1080p&c=0_0&f=0&u=HorribleSubs'")
print(" automedia.py add html 'https://manganelo.com/manga/read_naruto_manga_online_free3' --name Naruto")
+ print(" automedia.py add rss '[Erai-raws] Saiki Kusuo no Psi Nan - Kanketsu-hen - 01 [1080p][Multiple Subtitle].mkv'")
exit(1)
def usage_sync():
@@ -674,6 +710,8 @@ def command_add(args):
if start_after:
start_after = start_after.replace("/", "_").strip()
+ media_url = media_url.strip()
+
if media_type == "rss":
os.makedirs(rss_config_dir, exist_ok=True)
result = add_rss(media_name, media_url, rss_config_dir, start_after)