Music organization man-in-the-middle of your torrent client and music player. Based on beets.io, similar to Sonarr and Radarr. GPL-3.0 Pyth
Deploy this app to Linode with a free $100 credit!
betanin uses apprise for notifications. so anything supported there will work. but some include
pip install --user betanin
# start server
betanin
# a config file will be created, add your credentials to it
# start again
betanin [--host=<host>] [--port=<port>]
# ui will be available at port
# you may also use env vars instead, eg
BETANIN_HOST=0.0.0.0 betanin
BETANIN_PORT=4030 betanin
# optionally start cli (for db operations, debugging)
betanin-shell
# or if docker
docker exec -it <container_id> betanin-shell
docker pull sentriz/betanin
/b/.local/share/betanin/
for a persistent database/b/.config/betanin/
for a persistent betanin config
/b/.config/beets/
for a persistent beets home (point this to your
current beets home if you have one)
/music/
so beets can access your music
/downloads/
so beets can access your downloads
betanin:
image: sentriz/betanin
ports:
- 9393:9393
restart: unless-stopped
environment:
- UID=1000 # (optionally) set user id
- GID=1000 # (optionally) set group id
volumes:
- ${DATA}/betanin/data:/b/.local/share/betanin/
- ${DATA}/betanin/config:/b/.config/betanin/
- ${DATA}/betanin/beets:/b/.config/beets/
- ${MEDIA}/music:/music/
- ${MEDIA}/downloads:/downloads/
create a script named done.sh
or anything you like, and make it
executable:
chmod +x done.sh
...
"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/scripts/done.sh",
...
#!/bin/sh
curl \
--request POST \
--data-urlencode "path=<path_to_transmission_downloads>" \
--data-urlencode "name=$TR_TORRENT_NAME" \
--header "X-API-Key: <your_api_key>" \
"https://betanin.example.com/api/torrents"
volumes:
- ${DATA}/transmission/config:/config
- ${DATA}/transmission/scripts:/scripts
- ${MEDIA}/download:/downloads
create a script named done.sh
or anything you like, and make it
executable:
chmod +x done.sh
you must also be using the
Execute plugin,
set to the Torrent Complete
event
#!/bin/sh
curl \
--request POST \
--data-urlencode "path=<path_to_deluge_downloads>" \
--data-urlencode "name=$2" \
--header "X-API-Key: <your_api_key>" \
"https://betanin.example.com/api/torrents"
create a script named done.sh
or anything you like, and make it
executable:
chmod +x done.sh
open qbittorrent Tools
> Options
> check Run external program on torrent completion
set the path to the above done.sh
and arguments such as
/path/to/done.sh "%L" "%R"
#!/bin/sh
echo "category: $1"
echo "path: $2"
[ "$1" != "music" ] && exit
curl \
--request POST \
--data-urlencode "both=$2" \
--header "X-API-Key: <your_api_key>" \
"https://betanin.example.com/api/torrents"
now any music downloaded to the music category will be imported by betanin
there is not much else to do, write your code,
python -m betanin.entry.betanin
, kill it, write your code, etc. the
webserver will be available at http://localhost:9393/. the static
frontend is served at /
, and the api is served at /api
. (there is a
swagger ui there too) also see python -m betanin.entry.shell
.
if you need to do a manual migration do
env FLASK_APP='betanin.application:create' flask db migrate --directory betanin_migrations/
(then upgrades are automatically done on betanin start)
start the backend with python -m betanin.entry.betanin
, but don’t use
the static frontend served at http://localhost:9393/. Instead, in a
new shell, do npm --prefix betanin_client/ run serve
and use the
frontend served at http://localhost:8081/. it will look for a backend
listening on port 9393 locally. after that you can edit anything in
betanin_client/src
, it will be linted and automatically reflected in
your web browser.
Please login to review this project.
No reviews for this project yet.
Comments (0)
Please login to join the discussion on this project.