#!/usr/bin/env python # -*- coding: utf-8 -*- #author:Wos #bilibili parser #support search and parser import requests from urllib.parse import quote import json import os import threading import pyperclip import time tlink = [] tlist = [] timage = [] proxies = {} BASE_DIR = os.path.dirname(os.path.abspath(__file__)) html_path = os.path.join(BASE_DIR, "bilibili.html") fname = "" def GetDesktopPath(): return os.path.join(os.path.expanduser("~"), '/Desktop') def getRealUrl(url): try: url_ = str(url).replace("www.bilibili.com","www.ibilibili.com") res = requests.get(url_) aid = res.text.split("AID:")[1].split("value=\"")[1].split("\"")[0] cid = res.text.split("CID:")[1].split("value=\"")[1].split("\"")[0] url2 = "https://api.bilibili.com/x/player/playurl?avid="+str(aid)+"&cid="+str(cid)+"&qn=1&type=&otype=json&platform=html5&high_quality=1" res2 = requests.get(url2).json() return (res2['data']['durl'][0]['url']) except: pass def automode(): pyperclip.copy("") while True: os.system('clear') print("bilibili Video Parser") print("Copy Video link,then wait 1~2 seconds") print("Ctrl+C Exit Parsering") try: url = pyperclip.paste() if str(url).strip() == "": time.sleep(3) continue elif str(url).startswith("https://www.bilibili.com/video/"): result = getRealUrl(url) if result: pyperclip.copy(result) cmdline = ("mpv --really-quiet --ontop \"%s\""%(result)) os.system(cmdline) continue else: time.sleep(3) continue except KeyboardInterrupt: return def save_to_html(): global tlink,tlist,timage if len(tlink) == 0: tlink,tlist,timage = [],[],[] return file_obj = open(html_path,'w',encoding='UTF-8', newline='') file_obj.write("\n\n\n\n") file_obj.write("") file_obj.write("\n") file_obj.write("
\n") for i in tlink: if str(i) != "": file_obj.write("
"+"

"+tlist[tlink.index(i)]+"
\n") file_obj.write("
\n") file_obj.close() cmdline = ('sh -c \'surf -t -g -b -n -m -X %s 2>/dev/null &\''%(html_path)) os.system(cmdline) tlink,tlist,timage = [],[],[] def get_bilibili_link(url): try: global timage,tlink,tlist if str(url).startswith("https://search.bilibili.com/"): hdr = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0 Waterfox/78.13.0" } res = requests.get(url,headers=hdr,proxies=proxies) json_text = json.loads(res.text.split("