From a1998c647aa51ceb0e7a9f83d364176d9074f9e8 Mon Sep 17 00:00:00 2001 From: Anthony Wang Date: Wed, 31 May 2023 16:53:55 -0500 Subject: Fun stuff --- main.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) mode change 100644 => 100755 main.py diff --git a/main.py b/main.py old mode 100644 new mode 100755 index 6ce8d21..ba771e8 --- a/main.py +++ b/main.py @@ -1,3 +1,5 @@ +#!/usr/bin/python + import gzip import re import subprocess @@ -6,31 +8,39 @@ import urllib.request # NO EXTERNAL DEPENDENCIES YAY # Wait does mpv count??? +# I hate this website +url = 'https://www.bilibili.com/video/' + # Gimme a video ID cur = sys.argv[1] while True: # First start mpv in the background # Make sure mpv doesn't take in any input # Also enable subtitles because why not - proc = subprocess.Popen(['mpv', '--no-video', '--no-input-default-bindings', '--slang=zh-CN', 'https://www.bilibili.com/video/' + cur]) + proc = subprocess.Popen(['mpv', '--no-video', '--no-input-default-bindings', '--slang=zh-CN', url + cur]) + # The try finally block is to ensure that proc gets killed no matter what try: # I could use requests... # Nope, external dependencies suck, so enjoy this abomination - body = gzip.decompress(urllib.request.urlopen('https://www.bilibili.com/video/' + cur).read()).decode('utf-8') + body = gzip.decompress(urllib.request.urlopen(url + cur).read()).decode('utf-8') # Sometimes I forget what I'm even listening to # I WILL parse HTML with regex, you can't stop me - print(cur, re.search('(.*?)<', body).group(1)) + print('NOW PLAYING', cur, re.search('<title data-vue-meta="true">(.*?)<', body).group(1)) # Get recommended stuff rec = [ (re.search('/video/(.*?)/', line).group(1), re.search('title="(.*?)"', line).group(1)) for line in body.split('\n') if 'recommend_more' in line ] # Print it out the smart way! + # Who needs loops smh print(*enumerate(rec), sep='\n') # Choose a recommended video # If you don't like any, just stop the app, burn your computer, and try again cur = rec[int(input())][0] - print(cur) finally: # Kill mpv with fire because sometimes it likes the music too much and refuses to stop if you ask nicely proc.kill() + # Give instant feedback so it doesn't look like the app is hanging + print(cur) + # I have more comments than code so I must be doing something right right? + # Right??? -- cgit v1.2.3-70-g09d2