58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
import feedparser
|
|
import json
|
|
import re
|
|
import subprocess
|
|
|
|
feedparser.USER_AGENT = "anime-rss/1.0"
|
|
|
|
# ANSI escape sequence coloring
|
|
CSI = "\x1B["
|
|
BOLD = CSI + "1;49m"
|
|
RESET = CSI + "0;0m"
|
|
RED = CSI + "91;49m"
|
|
GREEN = CSI + "92;49m"
|
|
BOLD_RED = BOLD + RED
|
|
BOLD_GREEN = BOLD + GREEN
|
|
|
|
feeds = []
|
|
config = []
|
|
|
|
|
|
def build_target_folder():
|
|
if config["dirPerAnime"]:
|
|
return config["animeDownloadDir"] + "/" + anime["Title"].replace(" ", "_");
|
|
else:
|
|
return config["animeDownloadDir"]
|
|
|
|
|
|
with open("animes.json", "r") as feeds:
|
|
feeds = json.load(feeds)
|
|
|
|
with open("config.json", "r") as config:
|
|
config = json.load(config)
|
|
|
|
for feed in feeds["Feeds"]:
|
|
print(BOLD + "Checking feed: " + feed["ID"] + RESET)
|
|
NewsFeed = feedparser.parse(feed["URL"])
|
|
|
|
for anime in feed["Animes"]:
|
|
print("Checking anime: " + BOLD_RED + anime["Title"] + RESET)
|
|
|
|
for entry in NewsFeed.entries:
|
|
if anime["Title"] in entry.title:
|
|
regex = feed["Episode-Regex"].replace("$SHOWS$", anime["Title"])
|
|
match = re.match(regex, entry.title)
|
|
|
|
if match:
|
|
episodeNumber = match.groups()
|
|
|
|
if int(episodeNumber[0]) > int(anime["Local"]):
|
|
print(BOLD_GREEN + "NEW NEW NEW " + anime["Title"] + " " + episodeNumber[0] + RESET)
|
|
|
|
subprocess.run(["transmission-remote", "-a", entry.link, "-w", build_target_folder()])
|
|
|
|
anime["Local"] = str(int(anime["Local"]) + 1).zfill(2)
|
|
|
|
with open("animes.json", "w") as new_feeds:
|
|
new_feeds.write(json.dumps(feeds, indent=3))
|