bilibili/bilibili.py

50 lines
2.2 KiB
Python

import requests
ALBUM = "https://space.bilibili.com/233193626/album"
POST = "https://t.bilibili.com/?spm_id_from=333.999.0.0"
base = "https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/get_dynamic_detail?dynamic_id=%s"
def userScraper(id):
urls = []
urls.append((f"https://api.bilibili.com/x/space/acc/info?mid={id}&jsonp=jsonp", "USER_INFO"))
urls.append((f"https://space.bilibili.com/ajax/settings/getSettings?mid={id}", "USER_SETTINGS"))
urls.append((f"https://api.bilibili.com/x/relation/stat?vmid={id}&jsonp=jsonp", "USER_STATS"))
urls.append((f"https://api.bilibili.com/x/space/navnum?mid={id}", "NAV_NUMS"))
for url, explanation in urls:
yield requests.get(url).json(), explanation
def articleScraper(id):
urls = []
page = 1
size = 12
urls.append((f"https://api.bilibili.com/x/web-interface/card?mid={id}&article=true", "PROFILE_ARTICLE_CARD"))
maxpage = requests.get(f"https://api.bilibili.com/x/space/navnum?mid={id}").json()["data"]["article"] / size
while page <= maxpage:
for sort_type in ["view", "publish_time", "fav"]:
urls.append((f"https://api.bilibili.com/x/space/article?mid=233193626&pn={page}&ps={size}&sort={sort_type}&jsonp=jsonp", f"MASTER_LIST_{sort_type}"))
page += 1
urls.append((f"https://api.bilibili.com/x/article/up/lists?mid={id}&sort=0&jsonp=jsonp", "LISTS"))
for url, expl in urls:
yield requests.get(url).json(), expl
def individualArticleScraper(id):
urls = []
urls.append((f"https://api.bilibili.com/x/article/viewinfo?id={id}&mobi_app=pc&from=web", "VIEWINFO"))
urls.append((f"https://www.bilibili.com/read/cv{id}", "readCV"))
for url, expl in urls:
yield requests.get(url).json(), expl
def albumScraper(id):
page = 0
size = 30
maxpage = requests.get(f"https://api.bilibili.com/x/space/navnum?mid={id}").json()["data"]["album"] / size
while page <= maxpage:
yield requests.get(f"https://api.bilibili.com/x/dynamic/feed/draw/doc_list?uid=233193626&page_num={page}&page_size={size}&biz=all&jsonp=jsonp").json(), page
page += 1
def postScraper(id):
return requests.get(base % id).json()
#list(albumScraper("233193626"))