diff options
Diffstat (limited to 'yt_music')
-rw-r--r-- | yt_music/__yt_music__.py | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/yt_music/__yt_music__.py b/yt_music/__yt_music__.py index 895f64a..0170d9a 100644 --- a/yt_music/__yt_music__.py +++ b/yt_music/__yt_music__.py @@ -9,6 +9,7 @@ import json import httpx import fzf +from bs4 import BeautifulSoup as bs plt = platform.system() username = os.getenv('username') if plt == 'Windows' else os.getlogin() @@ -37,6 +38,7 @@ client = httpx.Client(headers=headers, timeout=None) base_url = "https://vid.puffyan.us" pattern = r'<a.*?href="/watch\?v=(.*?)".*?><p.*?>(.*?)<\/p></a>' +channel_name_pattern = r'<span id="channel-name">(.*?)</span>' MPV_EXECUTABLE = "mpv" @@ -55,6 +57,17 @@ query = query.replace(' ', '+') opts = [] +def get_channel(video_id): + resp = client.get(f"https://vid.puffyan.us/watch?v={video_id}") + html_content = resp.text + soup = bs(html_content, 'html.parser') + channel_names = re.findall(channel_name_pattern, html_content) + + for name in channel_names: + print(name.strip()) + get_channel.artist = name.strip() + + def extract_video_id(video_title): match = re.search(r' - ([\w-]+)$', video_title) @@ -62,9 +75,11 @@ def extract_video_id(video_title): if match: video_id = match.group(1) + get_channel(video_id) return video_id else: - return None + print("no video id found") + exit(1) def determine_path() -> str: @@ -89,6 +104,7 @@ def download(video_id, video_title): subprocess.call(f"yt-dlp -x \"https://music.youtube.com/watch?v={video_id}\" -o \"{path}/{video_title}\"", shell=True) + def play_loop(video_id, video_title): if use_rpc == "true": @@ -96,9 +112,10 @@ def play_loop(video_id, video_title): large_image = f"http://img.youtube.com/vi/{video_id}/0.jpg", large_text = "haha checkmate spotify plebs", small_image = "youtube_music_icon_svg", - small_text = "yt-music", + small_text = f"yt-music", start = start, details = f"{video_title} - loop", + state = f"by {get_channel.artist}", buttons = [{"label": "Play on YouTube Music", "url": f"https://music.youtube.com/watch?v={video_id}"}], ) @@ -122,9 +139,10 @@ def play(video_id, video_title): large_image = f"http://img.youtube.com/vi/{video_id}/0.jpg", large_text = "haha checkmate spotify plebs", small_image = "youtube_music_icon_svg", - small_text = "yt-music", + small_text = f"yt-music", start = start, - details = video_title, + details = f"{video_title}", + state = f"by {get_channel.artist}", buttons = [{"label": "Play on YouTube Music", "url": f"https://music.youtube.com/watch?v={video_id}"}], ) |