#6 Calendar view
Add a calendar view Update required python version to 3.10 Correct config and animes flags to -c and -a Change timer tick rate to every 15mins instead of 55mins Update readme Signed-off-by: MK13 <marius@kleberonline.de>
This commit is contained in:
5
Pipfile
5
Pipfile
@@ -6,10 +6,13 @@ name = "pypi"
|
||||
[packages]
|
||||
feedparser = "*"
|
||||
notifypy = "*"
|
||||
rich = "*"
|
||||
notify-py = "*"
|
||||
|
||||
[dev-packages]
|
||||
feedparser = "*"
|
||||
notifypy = "*"
|
||||
rich = "*"
|
||||
|
||||
[requires]
|
||||
python_version = "3.9"
|
||||
python_version = "3.10"
|
||||
|
||||
172
Pipfile.lock
generated
172
Pipfile.lock
generated
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "7506f6a89bb55913a844cb70340725cbf1b1032cde16d7048231be79820ec318"
|
||||
"sha256": "c211ea65b3e62046f929673a2bd62a6e39ae18185245f81ed8f2c5e412bc9a1f"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "3.9"
|
||||
"python_version": "3.10"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
@@ -25,11 +25,18 @@
|
||||
},
|
||||
"charset-normalizer": {
|
||||
"hashes": [
|
||||
"sha256:e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0",
|
||||
"sha256:f7af805c321bfa1ce6714c51f254e0d5bb5e5834039bc17db7ebe3a4cec9492b"
|
||||
"sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597",
|
||||
"sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"
|
||||
],
|
||||
"markers": "python_version >= '3'",
|
||||
"version": "==2.0.7"
|
||||
"version": "==2.0.12"
|
||||
},
|
||||
"commonmark": {
|
||||
"hashes": [
|
||||
"sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60",
|
||||
"sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"
|
||||
],
|
||||
"version": "==0.9.1"
|
||||
},
|
||||
"feedparser": {
|
||||
"hashes": [
|
||||
@@ -55,11 +62,11 @@
|
||||
},
|
||||
"jeepney": {
|
||||
"hashes": [
|
||||
"sha256:1b5a0ea5c0e7b166b2f5895b91a08c14de8915afda4407fb5022a195224958ac",
|
||||
"sha256:fa9e232dfa0c498bd0b8a3a73b8d8a31978304dcef0515adc859d4e096f96f4f"
|
||||
"sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806",
|
||||
"sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"
|
||||
],
|
||||
"markers": "sys_platform == 'linux'",
|
||||
"version": "==0.7.1"
|
||||
"version": "==0.8.0"
|
||||
},
|
||||
"loguru": {
|
||||
"hashes": [
|
||||
@@ -84,28 +91,44 @@
|
||||
"index": "pypi",
|
||||
"version": "==1.0.3.0"
|
||||
},
|
||||
"pygments": {
|
||||
"hashes": [
|
||||
"sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65",
|
||||
"sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==2.11.2"
|
||||
},
|
||||
"pyjwt": {
|
||||
"hashes": [
|
||||
"sha256:a0b9a3b4e5ca5517cac9f1a6e9cd30bf1aa80be74fcdf4e28eded582ecfcfbae",
|
||||
"sha256:b0ed5824c8ecc5362e540c65dc6247567db130c4226670bf7699aec92fb4dae1"
|
||||
"sha256:b888b4d56f06f6dcd777210c334e69c737be74755d3e5e9ee3fe67dc18a0ee41",
|
||||
"sha256:e0c4bb8d9f0af0c7f5b1ec4c5036309617d03d56932877f2f7a0beeb5318322f"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==2.2.0"
|
||||
"version": "==2.3.0"
|
||||
},
|
||||
"pytz": {
|
||||
"hashes": [
|
||||
"sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c",
|
||||
"sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"
|
||||
"sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7",
|
||||
"sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"
|
||||
],
|
||||
"version": "==2021.3"
|
||||
"version": "==2022.1"
|
||||
},
|
||||
"requests": {
|
||||
"hashes": [
|
||||
"sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24",
|
||||
"sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"
|
||||
"sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61",
|
||||
"sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
|
||||
"version": "==2.26.0"
|
||||
"version": "==2.27.1"
|
||||
},
|
||||
"rich": {
|
||||
"hashes": [
|
||||
"sha256:c50f3d253bc6a9bb9c79d61a26d510d74abdf1b16881260fab5edfc3edfb082f",
|
||||
"sha256:ea74bc9dad9589d8eea3e3fd0b136d8bf6e428888955f215824c2894f0da8b47"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==12.2.0"
|
||||
},
|
||||
"sgmllib3k": {
|
||||
"hashes": [
|
||||
@@ -115,21 +138,44 @@
|
||||
},
|
||||
"twilio": {
|
||||
"hashes": [
|
||||
"sha256:5d669bf92037cfa231bf8aa336b9e38763e18d16309ddbc5d66b21b00bbad157"
|
||||
"sha256:59ca119442f7ed037eb64f2c90e771432418a08874fed72da99e4375cf44ad8f",
|
||||
"sha256:f8d4288d39d20b1f57240c002051224fdd63850f570812a62d9b025ee4954e43"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==7.1.0"
|
||||
"version": "==7.8.2"
|
||||
},
|
||||
"urllib3": {
|
||||
"hashes": [
|
||||
"sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece",
|
||||
"sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"
|
||||
"sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14",
|
||||
"sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
|
||||
"version": "==1.26.7"
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_full_version < '4.0.0'",
|
||||
"version": "==1.26.9"
|
||||
}
|
||||
},
|
||||
"develop": {
|
||||
"certifi": {
|
||||
"hashes": [
|
||||
"sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872",
|
||||
"sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"
|
||||
],
|
||||
"version": "==2021.10.8"
|
||||
},
|
||||
"charset-normalizer": {
|
||||
"hashes": [
|
||||
"sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597",
|
||||
"sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"
|
||||
],
|
||||
"markers": "python_version >= '3'",
|
||||
"version": "==2.0.12"
|
||||
},
|
||||
"commonmark": {
|
||||
"hashes": [
|
||||
"sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60",
|
||||
"sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"
|
||||
],
|
||||
"version": "==0.9.1"
|
||||
},
|
||||
"feedparser": {
|
||||
"hashes": [
|
||||
"sha256:1b7f57841d9cf85074deb316ed2c795091a238adb79846bc46dccdaf80f9c59a",
|
||||
@@ -138,35 +184,87 @@
|
||||
"index": "pypi",
|
||||
"version": "==6.0.8"
|
||||
},
|
||||
"jeepney": {
|
||||
"gmail": {
|
||||
"hashes": [
|
||||
"sha256:1b5a0ea5c0e7b166b2f5895b91a08c14de8915afda4407fb5022a195224958ac",
|
||||
"sha256:fa9e232dfa0c498bd0b8a3a73b8d8a31978304dcef0515adc859d4e096f96f4f"
|
||||
"sha256:3028711d4db7db5fa47c6ddd01f237360d7ce27a3f08997bb517ba811a8418ca"
|
||||
],
|
||||
"markers": "sys_platform == 'linux'",
|
||||
"version": "==0.7.1"
|
||||
"version": "==0.6.3"
|
||||
},
|
||||
"loguru": {
|
||||
"idna": {
|
||||
"hashes": [
|
||||
"sha256:b28e72ac7a98be3d28ad28570299a393dfcd32e5e3f6a353dec94675767b6319",
|
||||
"sha256:f8087ac396b5ee5f67c963b495d615ebbceac2796379599820e324419d53667c"
|
||||
"sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff",
|
||||
"sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==0.5.3"
|
||||
"markers": "python_version >= '3'",
|
||||
"version": "==3.3"
|
||||
},
|
||||
"notify-py": {
|
||||
"notifypy": {
|
||||
"hashes": [
|
||||
"sha256:8561c7d363eddad3b07be11405135e168c2f52e42bdbfc7f2e613b07a8e7bae0",
|
||||
"sha256:9b9f689631ddba2ec1313fe4b4d19b8f1f032b38bbdc118b21cdd880c134e8a6"
|
||||
"sha256:c14bff0c5d2fb5c09572d2e7eccb4af542c6ad2160a6cfbad684ffef75f81c6b"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.3.3"
|
||||
"version": "==1.0.3.0"
|
||||
},
|
||||
"pygments": {
|
||||
"hashes": [
|
||||
"sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65",
|
||||
"sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==2.11.2"
|
||||
},
|
||||
"pyjwt": {
|
||||
"hashes": [
|
||||
"sha256:b888b4d56f06f6dcd777210c334e69c737be74755d3e5e9ee3fe67dc18a0ee41",
|
||||
"sha256:e0c4bb8d9f0af0c7f5b1ec4c5036309617d03d56932877f2f7a0beeb5318322f"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==2.3.0"
|
||||
},
|
||||
"pytz": {
|
||||
"hashes": [
|
||||
"sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7",
|
||||
"sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"
|
||||
],
|
||||
"version": "==2022.1"
|
||||
},
|
||||
"requests": {
|
||||
"hashes": [
|
||||
"sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61",
|
||||
"sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
|
||||
"version": "==2.27.1"
|
||||
},
|
||||
"rich": {
|
||||
"hashes": [
|
||||
"sha256:c50f3d253bc6a9bb9c79d61a26d510d74abdf1b16881260fab5edfc3edfb082f",
|
||||
"sha256:ea74bc9dad9589d8eea3e3fd0b136d8bf6e428888955f215824c2894f0da8b47"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==12.2.0"
|
||||
},
|
||||
"sgmllib3k": {
|
||||
"hashes": [
|
||||
"sha256:7868fb1c8bfa764c1ac563d3cf369c381d1325d36124933a726f29fcdaa812e9"
|
||||
],
|
||||
"version": "==1.0.0"
|
||||
},
|
||||
"twilio": {
|
||||
"hashes": [
|
||||
"sha256:59ca119442f7ed037eb64f2c90e771432418a08874fed72da99e4375cf44ad8f",
|
||||
"sha256:f8d4288d39d20b1f57240c002051224fdd63850f570812a62d9b025ee4954e43"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==7.8.2"
|
||||
},
|
||||
"urllib3": {
|
||||
"hashes": [
|
||||
"sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14",
|
||||
"sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_full_version < '4.0.0'",
|
||||
"version": "==1.26.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
22
README.md
22
README.md
@@ -10,11 +10,11 @@ running `anime-rss`. Further `transmission-remote` needs to be on the path.
|
||||
In the Transmission config file `~/.config/transmission-daemon/settings.json` check the `rpc-` properties, as
|
||||
`anime-rss` uses `transmission-remote` which sends the torrent URLs to Transmission via RPC.
|
||||
|
||||
Also requires at least Python `3.9`.
|
||||
Also requires at least Python `3.10`.
|
||||
|
||||
## Install
|
||||
###### Install dependencies
|
||||
`pip install feedparser notify-py`
|
||||
`pip install feedparser notify-py rich`
|
||||
###### Clone repo
|
||||
`git clone ...`
|
||||
###### Install systemd service and timer (optional)
|
||||
@@ -44,7 +44,7 @@ actual anime name during feed parsing.
|
||||
|
||||
## Running and example output
|
||||
```
|
||||
[MK13@brutebox ~]$ python path/to/anime-rss.py path/to/config.json path/to/animes.json
|
||||
[MK13@brutebox ~]$ python path/to/anime-rss.py -c path/to/config.json -a path/to/animes.json
|
||||
Checking feed: SubsPlease
|
||||
Checking anime: Go-toubun no Hanayome S2 - Airing every Thursday 02/x
|
||||
Checking anime: Jaku-Chara Tomozaki-kun - Airing every Friday 02/x
|
||||
@@ -63,4 +63,18 @@ localhost:9091/transmission/rpc/ responded: "success"
|
||||
```
|
||||
Both parameters are optional, if not given they are searched in the current working directory.
|
||||
|
||||
`anime-rss` also outputs colored and formatted text via ANSI escape sequences if supported.
|
||||
`anime-rss` also outputs colored and formatted text via ANSI escape sequences if supported.
|
||||
### Calendar view
|
||||
If given the `-t` flag `anime-rss` will output a calendar view of all configured animes:
|
||||
``` Animes
|
||||
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Monday ┃ Tuesday ┃ Wednesday ┃ Thursday ┃ Friday ┃ Saturday ┃ Sunday ┃
|
||||
┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ │ Yuusha, Yamemasu │ Tate no Yuusha no Nariagari S2 │ Mahoutsukai Reimeiki │ Kaguya-sama wa Kokurasetai S3 │ Spy x Family │ Otome Game Sekai wa Mob ni Kibishii Sekai │
|
||||
│ │ │ │ │ │ │ desu │
|
||||
│ │ │ Shijou Saikyou no Daimaou, Murabito A ni │ │ Date A Live IV │ Kawaii dake ja Nai Shikimori-san │ │
|
||||
│ │ │ Tensei suru │ │ │ │ │
|
||||
│ │ │ │ │ Aharen-san wa Hakarenai │ │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
└────────┴──────────────────┴────────────────────────────────────────────┴──────────────────────┴───────────────────────────────┴──────────────────────────────────┴─────────────────────────────────────────────┘
|
||||
```
|
||||
81
anime-rss.py
81
anime-rss.py
@@ -1,3 +1,4 @@
|
||||
from collections import defaultdict
|
||||
import feedparser
|
||||
import json
|
||||
import re
|
||||
@@ -5,6 +6,9 @@ import subprocess
|
||||
import argparse
|
||||
from notifypy import Notify
|
||||
import os
|
||||
import sys
|
||||
from rich.console import Console
|
||||
from rich.table import Table
|
||||
|
||||
feedparser.USER_AGENT = "anime-rss/1.0"
|
||||
|
||||
@@ -19,8 +23,9 @@ BOLD_GREEN = BOLD + GREEN
|
||||
UNDERLINE = CSI + "4;4m"
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("c", help="path to the config.json file", type=str, default="config.json", nargs='?')
|
||||
parser.add_argument("a", help="path to the animes.json file", type=str, default="animes.json", nargs='?')
|
||||
parser.add_argument("-c", help="path to the config.json file", type=str, default="config.json", nargs='?')
|
||||
parser.add_argument("-a", help="path to the animes.json file", type=str, default="animes.json", nargs='?')
|
||||
parser.add_argument("-t", help="print a tabular calendar view and exit", action="store_true")
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
@@ -39,10 +44,80 @@ def send_notification(message):
|
||||
notification.icon = os.path.dirname(os.path.realpath(__file__)) + "/notfication-icon.png"
|
||||
notification.send()
|
||||
|
||||
|
||||
|
||||
with open(args.a, "r") as feeds:
|
||||
feeds = json.load(feeds)
|
||||
|
||||
if args.t:
|
||||
table = Table(title="Animes")
|
||||
|
||||
table.add_column("Monday")
|
||||
table.add_column("Tuesday")
|
||||
table.add_column("Wednesday")
|
||||
table.add_column("Thursday")
|
||||
table.add_column("Friday")
|
||||
table.add_column("Saturday")
|
||||
table.add_column("Sunday")
|
||||
|
||||
buckets = defaultdict(list)
|
||||
|
||||
for feed in feeds["Feeds"]:
|
||||
for anime in feed["Animes"]:
|
||||
day = anime["Airing"].lower()
|
||||
|
||||
buckets[day].append(anime["Title"])
|
||||
|
||||
while buckets.items():
|
||||
monday = ""
|
||||
tuesday = ""
|
||||
wednesday = ""
|
||||
thursday = ""
|
||||
friday = ""
|
||||
saturday = ""
|
||||
sunday = ""
|
||||
|
||||
if len(buckets["monday"]) > 0:
|
||||
monday = buckets["monday"].pop(len(buckets["monday"]) - 1)
|
||||
else:
|
||||
buckets.pop("monday")
|
||||
|
||||
if len(buckets["tuesday"]) > 0:
|
||||
tuesday = buckets["tuesday"].pop(len(buckets["tuesday"]) - 1)
|
||||
else:
|
||||
buckets.pop("tuesday")
|
||||
|
||||
if len(buckets["wednesday"]) > 0:
|
||||
wednesday = buckets["wednesday"].pop(len(buckets["wednesday"]) - 1)
|
||||
else:
|
||||
buckets.pop("wednesday")
|
||||
|
||||
if len(buckets["thursday"]) > 0:
|
||||
thursday = buckets["thursday"].pop(len(buckets["thursday"]) - 1)
|
||||
else:
|
||||
buckets.pop("thursday")
|
||||
|
||||
if len(buckets["friday"]) > 0:
|
||||
friday = buckets["friday"].pop(len(buckets["friday"]) - 1)
|
||||
else:
|
||||
buckets.pop("friday")
|
||||
|
||||
if len(buckets["saturday"]) > 0:
|
||||
saturday = buckets["saturday"].pop(len(buckets["saturday"]) - 1)
|
||||
else:
|
||||
buckets.pop("saturday")
|
||||
|
||||
if len(buckets["sunday"]) > 0:
|
||||
sunday = buckets["sunday"].pop(len(buckets["sunday"]) - 1)
|
||||
else:
|
||||
buckets.pop("sunday")
|
||||
|
||||
table.add_row(monday, tuesday, wednesday, thursday, friday, saturday, sunday)
|
||||
|
||||
console = Console()
|
||||
console.print(table, justify="center")
|
||||
|
||||
sys.exit(0)
|
||||
|
||||
with open(args.c, "r") as config:
|
||||
config = json.load(config)
|
||||
|
||||
|
||||
@@ -3,4 +3,4 @@ Description=Check for and add new episodes via anime-rss
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=python PATH/anime-rss.py PATH/config.json PATH/animes.json
|
||||
ExecStart=python PATH/anime-rss.py -c PATH/config.json -a PATH/animes.json
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Description=Check for and add new anime via anime-rss
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*:0/55
|
||||
OnCalendar=*:0/15
|
||||
AccuracySec=1s
|
||||
Persistent=true
|
||||
|
||||
|
||||
104
animes.json
104
animes.json
@@ -1,69 +1,61 @@
|
||||
{
|
||||
"Feeds": [
|
||||
{
|
||||
"ID": "Nyaa Mushoku Tensei",
|
||||
"URL": "https://nyaa.si/?page=rss&q=%5BSubsPlease%5D+Mushoku+Tensei&c=0_0&f=0",
|
||||
"ID": "Subsplease",
|
||||
"URL": "https://subsplease.org/rss/?t&r=1080",
|
||||
"Animes": [
|
||||
{
|
||||
"Title": "Mushoku Tensei",
|
||||
"Local": "16",
|
||||
"Airing": "Sunday"
|
||||
}
|
||||
],
|
||||
"Episode-Regex": "\\[SubsPlease\\] $SHOWS$ - (\\d{2,2}) \\(1080p\\) \\[[A-Z0-9]{8,8}\\].mkv"
|
||||
},
|
||||
{
|
||||
"ID": "Sekai Saikou no Ansatsusha, Isekai Kizoku ni Tensei suru",
|
||||
"URL": "https://nyaa.si/?page=rss&q=%5BSubsPlease%5D+Sekai+Saikou+no+Ansatsusha%2C+Isekai+Kizoku+ni+Tensei+suru+1080&c=0_0&f=0",
|
||||
"Animes": [
|
||||
{
|
||||
"Title": "Sekai Saikou no Ansatsusha, Isekai Kizoku ni Tensei suru",
|
||||
"Local": "05",
|
||||
"Airing": "Wednesday"
|
||||
}
|
||||
],
|
||||
"Episode-Regex": "\\[SubsPlease\\] $SHOWS$ - (\\d{2,2}) \\(1080p\\) \\[[A-Z0-9]{8,8}\\].mkv"
|
||||
},
|
||||
{
|
||||
"ID": "Nyaa - Ore ga Suki nano wa Imouto dakedo Imouto ja Nai",
|
||||
"URL": "https://nyaa.si/?page=rss&q=Ore+ga+Suki+nano+wa+Imouto+dakedo+Imouto+ja+Nai+-+%5Bblad761%5D&c=0_0&f=0",
|
||||
"Animes": [
|
||||
{
|
||||
"Title": "Ore ga Suki nano wa Imouto dakedo Imouto ja Nai",
|
||||
"Local": "12",
|
||||
"Airing": "Done"
|
||||
}
|
||||
],
|
||||
"Episode-Regex": "$SHOWS$ - (\\d{2,2}) (OVA ){0,1}\\(Uncen\\) \\[blad761\\] \\[MKV 8-bit AAC\\] \\[[A-Z0-9]{8,8}\\](.mkv){0,1}"
|
||||
},
|
||||
{
|
||||
"ID": "Nyaa - Isekai Quartet 1+2",
|
||||
"URL": "https://nyaa.si/?page=rss&q=%5BHorribleSubs%5D+Isekai+Quartet+1080&c=0_0&f=0",
|
||||
"Animes": [
|
||||
{
|
||||
"Title": "Isekai Quartet",
|
||||
"Local": "12",
|
||||
"Airing": "Done"
|
||||
"Title": "Yuusha, Yamemasu",
|
||||
"Local": "03",
|
||||
"Airing": "Tuesday"
|
||||
},
|
||||
{
|
||||
"Title": "Isekai Quartet S2",
|
||||
"Local": "12",
|
||||
"Airing": "Done"
|
||||
}
|
||||
],
|
||||
"Episode-Regex": "\\[HorribleSubs\\] $SHOWS$ - (\\d{2,2}) \\[1080p\\].mkv"
|
||||
},
|
||||
{
|
||||
"ID": "Nyaa - Darling in the FranXX",
|
||||
"URL": "https://nyaa.si/?page=rss&q=%5BHorribleSubs%5D+Darling+in+the+FranXX+-+1080&c=0_0&f=0",
|
||||
"Animes": [
|
||||
"Title": "Aharen-san wa Hakarenai",
|
||||
"Local": "03",
|
||||
"Airing": "Friday"
|
||||
},
|
||||
{
|
||||
"Title": "Darling in the FranXX",
|
||||
"Local": "24",
|
||||
"Airing": "Done"
|
||||
"Title": "Otome Game Sekai wa Mob ni Kibishii Sekai desu",
|
||||
"Local": "03",
|
||||
"Airing": "Sunday"
|
||||
},
|
||||
{
|
||||
"Title": "Shijou Saikyou no Daimaou, Murabito A ni Tensei suru",
|
||||
"Local": "03",
|
||||
"Airing": "Wednesday"
|
||||
},
|
||||
{
|
||||
"Title": "Tate no Yuusha no Nariagari S2",
|
||||
"Local": "03",
|
||||
"Airing": "Wednesday"
|
||||
},
|
||||
{
|
||||
"Title": "Mahoutsukai Reimeiki",
|
||||
"Local": "03",
|
||||
"Airing": "Thursday"
|
||||
},
|
||||
{
|
||||
"Title": "Date A Live IV",
|
||||
"Local": "02",
|
||||
"Airing": "Friday"
|
||||
},
|
||||
{
|
||||
"Title": "Kaguya-sama wa Kokurasetai S3",
|
||||
"Local": "02",
|
||||
"Airing": "Friday"
|
||||
},
|
||||
{
|
||||
"Title": "Kawaii dake ja Nai Shikimori-san",
|
||||
"Local": "02",
|
||||
"Airing": "Saturday"
|
||||
},
|
||||
{
|
||||
"Title": "Spy x Family",
|
||||
"Local": "02",
|
||||
"Airing": "Saturday"
|
||||
}
|
||||
],
|
||||
"Episode-Regex": "\\[HorribleSubs\\] $SHOWS$ - (\\d{2,2}) \\[1080p\\].mkv"
|
||||
"Episode-Regex": "\\[SubsPlease\\] $SHOWS$ - (\\d{2,2}) \\(1080p\\) \\[[A-Z0-9]{8,8}\\].mkv"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user