Highly customisable automatic project to follow & watch Anime, works well with media libraries such as Jellyfin
MIT License
The first app is the official Jellyfin iOS client Swiftfin (Still under Testflight)The second app Bark which allows sending notification to your iPhone by HTTP request
./config/rss.json
./config/notification.json
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --log-config conf/log.yml
docker network create --subnet=10.1.0.0/16 bangumi_network
docker run --name redis -p 6379:6379 \
--net bangumi_network \
--ip 10.1.0.20 \
-d redis
docker run -d \
--name aria2 --restart unless-stopped --log-opt max-size=1m \
--net bangumi_network \
-e PUID=$UID -e PGID=$GID -e UMASK_SET=022 \
-e RPC_PORT=6800 -p 6800:6800 \
-e LISTEN_PORT=6888 \
-e RPC_SECRET="bangumi_aria2" \
-p 6888:6888 -p 6888:6888/udp \
-v ${pwd}/.cache/aria2-config:/config \
-v ${pwd}/.cache/aria2-downloads:/downloads \
--ip 10.1.0.21 \
p3terx/aria2-pro
docker run --name bangumi \
-e BANGUMI_CHECK_INTERVAL=600 \
-e BANGUMI_CLIENT_TYPE="aria2" \
-e BANGUMI_CLIENT_IP="10.1.0.21" \
-e BANGUMI_CLIENT_PORT="6800" \
-e BANGUMI_CLIENT_USERNAME="" \
-e BANGUMI_CLIENT_PASSWORD="bangumi_aria2" \
-e BANGUMI_REDIS_HOST="10.1.0.20" \
-e BANGUMI_REDIS_PORT="6379" \
-e BANGUMI_REDIS_PASSWORD="" \
-e PUID=1000 \
-e PGID=1000 \
-e UMASK=022 \
-e TZ=Asia/shanghai \
--ip 10.1.0.22 \
-p 8000:8000 \
-v /media:/media \
-v /downloads:/downloads \
-v /config:/config \
--net bangumi_network -d \
rankki/bangumi:latest
Notedno Web UI for Aria2, you may use ziahamza/webui-aria2
cd /docker/<downloader>/
cat << EOF > .env
DOWNLOAD_PATH=/arai2_downloads
BANGUMI_CONFIG=/bangumi_config
MEDIA_PATH=/media
DOWNLOAD_CONFIG=/bt_config
GID=${GID}
UID=${UID}
EOF
docker compose up
environment:
- HTTPS_PROXY=http://host.docker.internal:20173
- HTTP_PROXY=http://host.docker.internal:20173
- NO_PROXY=10.1.0.1/16, 192.168.1.1/16, *.localhost, *.local, 127.0.0.0/8, localhost
extra_hosts:
- "host.docker.internal:host-gateway"
BANGUMI_LOGGER_LEVEL = "[INFO|DEBUG]" # KEEP at INFO,
BANGUMI_SEEDING = [1|yes|true] # seeding after completed
Noted
rules
matched items will be filtered****NOT KEEP MATCHED ITEMS
/config/rss.json
{
"urls": [
"https://mikanani.me/RSS/MyBangumi?token=<token>",
{
"url": "https://mikanani.me/RSS/MyBangumi?token=<token>",
"rules": [
"^filter_options" # filter for this site only
]
}
],
"rules": [ // filter for all of sites
".*ABC.*",
"^FILTER_RULE"
],
"parsers": [
{
"folder": "/path/to/plugins", # absolute path to the plugin, the folder must a Python Module with all plugin imported in the `__init__.py`
"classes": [
"your-parser-name", # the name of plugin class
"another-parser-name"
]
}
],
"mapper": [ # remap the title to other, in case some titles are not recognized
["^\[ANi\] - (\d+) (\[.*\]\s*)+", "Soredemo Ayumu wa Yosetekuru - {} {}"]
]
}
all url
callback will be called by curl
script
must be a absolute path /bin/bash /path/to/script.sh
, if you're using Docker, remember to mount the script folder to the container
the first parameter of the script will be the title of completed Anime. i.e. /bin/bash /path/to/script.sh 'OVERLORD S02E03'
/config/notification.json
[
"https://api.day.app/<you-key-here>/AnimeUpdate/{title}", # http
{
"url": "https://<some-url>/AnimeUpdate",
"data": {
"token": "xxxxxxx", # title will placed in <here>
},
"method": "<POST|GET>"
}
"/bin/script"
]
BANGUMI_SEEDING is not working in Docker due to some file system limitation
more details: How to create hard link to file in a docker volume