79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
import telebot
|
|
import os
|
|
import datetime
|
|
import subprocess
|
|
|
|
# Replace 'YOUR_API_TOKEN' with your actual Telegram Bot API token
|
|
bot = telebot.TeleBot("TOKEN GOES HERE")
|
|
dldir = "/WHERE/TO/PUT/THE/MUSIC"
|
|
workingdir = "WHERE/IS/THE/PYTHON/VENV"
|
|
|
|
|
|
# Get the current day of the month
|
|
current_day = datetime.date.today().day
|
|
|
|
# Check if the day is divisible by 3
|
|
if current_day % 3 == 0:
|
|
# Replace the following command with the command you want to execute
|
|
command_to_run = f"{workingdir}bin/pip install --upgrade spotdl"
|
|
|
|
# Execute the command
|
|
try:
|
|
subprocess.run(command_to_run, shell=True, check=True)
|
|
print(f"Updated SpotDL!.")
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"Error updating SpotDL: {e}")
|
|
else:
|
|
print("Not upgrading SpotDL today.")
|
|
|
|
|
|
|
|
# Define conversation states
|
|
ARTIST, URL = range(2)
|
|
user_data = {}
|
|
|
|
print("tg_spotdl bot is running.")
|
|
|
|
@bot.message_handler(commands=['start'])
|
|
|
|
def start(message):
|
|
bot.send_message(message.chat.id, "Hi! I'm a bot that can download music for you.")
|
|
bot.send_message(message.chat.id, "Please enter the artist name:")
|
|
bot.register_next_step_handler(message, get_artist)
|
|
print("User pushed start.")
|
|
|
|
def get_artist(message):
|
|
user_data['artist'] = message.text
|
|
bot.send_message(message.chat.id, "Please enter the Spotify URL for the artist:")
|
|
bot.register_next_step_handler(message, get_url)
|
|
|
|
def get_url(message):
|
|
artist = user_data['artist']
|
|
url = message.text
|
|
|
|
bot.send_message(message.chat.id, "This is going to take a while. Please wait!")
|
|
|
|
# Create a directory for the artist
|
|
artist_directory = f"{dldir}{artist}"
|
|
os.makedirs(artist_directory, exist_ok=True)
|
|
os.chdir(artist_directory)
|
|
|
|
# Download the music using spotdl
|
|
subprocess.run([
|
|
f"{workingdir}bin/spotdl",
|
|
"--format", "opus",
|
|
"--bitrate", "80k",
|
|
url
|
|
])
|
|
|
|
bot.send_message(message.chat.id, f"Finished downloading {artist}")
|
|
print("Download completed.")
|
|
bot.send_message(message.chat.id, "Use the /start command to download another artist.")
|
|
|
|
@bot.message_handler(func=lambda message: True)
|
|
def echo_all(message):
|
|
bot.reply_to(message, "I don't understand. Please use the /start command to begin.")
|
|
|
|
if __name__ == "__main__":
|
|
bot.polling()
|