telegram spotify downloader bot: @SpotSeekBot
Send bot a link from spotify and it'll download it for you.
- It can be a track link like this: https://open.spotify.com/track/734dz1YaFITwawPpM25fSt
- Or an album like this: https://open.spotify.com/album/0Lg1uZvI312TPqxNWShFXL
- Or a playlist like this: https://open.spotify.com/playlist/37i9dQZF1DWX4UlFW6EJPs
all downloaded songs are also available in: Spot Seek Music Database
- install python and pip
apt install python3-pip
- clone the repo
- set required environment variables, tokens and api keys. you can see them in
variables.py
file. - download spotdl executable file, rename it to
spotdl
put it besidespotseek.py
file. you can download linux version from https://github.com/spotDL/spotify-downloader/releases with a command like this:
wget -O spotdl https://github.com/spotDL/spotify-downloader/releases/download/v4.1.3/spotdl-4.1.3-linux
- then make spotdl executable:
chmod +x spotdl
- install necessary python modules
(os, pandas, telebot, re, threading, csv, spotipy, subprocess, requests, datetime, pydub, mutagen, time)
andffmpeg
softwareffmpeg
:apt install ffmpeg
telebot
:pip install telebot
spotipy
:pip install spotipy
pandas
:pip install pandas
pydub
:pip install pydub
mutagen
:pip install mutagen
- run it with spotseek with:
nohup python3 spotseek.py > /dev/null 2>&1 &
or
nohup python3 spotseek.py &
- I might haven't cleared datas in
db.csv
, If you are starting the whole infrastructure by yourself remove everything from it except first row which are the headers. you can keep data in db.csv and ask me to give you permission to database to you won't have to redownload all songs.
- When you send a spotify link to the bot it searches through its database and if it's the first time it sees this link it will download it with spotdl but if it has done it before it saves time by using previously downloaded files from database.
- I've set 30 seconds waiting time for 2 requests in a row from 1 user so it won't be spammed
- I've set log channel and database channel for the bot. It stores every downloaded song in database channel and use it as a storage and prints logs from everything to log channel (errors, user messags, ...)
- We use spotify api to get tracks from a valid link so you should sign up in https://developer.spotify.com/ and get your own token.
I've created This bot to download musics by their link from spotify (single track, album or playlist)..
Also if you are a programmer you are welcome to contribute and improve the project or use it for yourself.
There is also a similar bot created by my friend aliilapro: Spotdlrobot
date and time added
| spotify track id
| telegram audio id
unique user id
| last use date and time
-
fix caption so it will be shown for repetitive tracks -
some musics metadata is not shown - only 1 single user can use the bot and it can't multitask
- searching in database algorithm isn't fast and efficient
-
Download playlists with more thatn 100 songs - find a clean way to give access to database to next bot maintainers
- merge database of all spotify downloaders together
-
showing message to user when link from other services like deezer is sent. - support searching name of song by user
- find a way to shorten database (audio IDs are very long)
If you find my works useful you can give me energy with coffee☕️: