66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
# Handles translating urls and search terms
|
|
|
|
import yt_dlp as ytdlp
|
|
|
|
ydl_opts = {
|
|
'format': 'bestaudio/best',
|
|
'quiet': True,
|
|
'default_search': 'ytsearch',
|
|
}
|
|
|
|
def main(url):
|
|
|
|
#url = url.lower()
|
|
|
|
# Check if link or search
|
|
if url.startswith("https://") is False:
|
|
return search_song(url)
|
|
|
|
#TODO add better regex or something
|
|
if 'spotify' in url:
|
|
if 'track' in url:
|
|
return spotify_song(url)
|
|
elif 'playlist' in url:
|
|
return spotify_playlist(url)
|
|
|
|
soundcloud_song = 'soundcloud' in url and 'sets' not in url
|
|
# Not implemented yet
|
|
#soundcloud_playlist = 'soundcloud' in url and 'sets' in url
|
|
|
|
youtube_song = 'watch?v=' in url or 'youtu.be/' in url
|
|
youtube_playlist = 'playlist?list=' in url
|
|
|
|
if soundcloud_song or youtube_song:
|
|
return song_download(url)
|
|
|
|
if youtube_playlist:
|
|
return playlist_download(url)
|
|
|
|
return []
|
|
|
|
|
|
def search_song(search):
|
|
with ytdlp.YoutubeDL(ydl_opts) as ydl:
|
|
info = ydl.extract_info(f"ytsearch1:{search}", download=False)
|
|
audio_url = info['entries'][0]['url'] # Get audio stream URL
|
|
return [audio_url]
|
|
|
|
|
|
def spotify_song(url):
|
|
return []
|
|
|
|
|
|
def spotify_playlist(url):
|
|
return []
|
|
|
|
|
|
def song_download(url):
|
|
with ytdlp.YoutubeDL(ydl_opts) as ydl:
|
|
info = ydl.extract_info(url, download=False)
|
|
audio_url = info['url'] # Get audio stream URL
|
|
return [audio_url]
|
|
|
|
|
|
def playlist_download(url):
|
|
return []
|