50 lines
2.2 KiB
Python
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"))
|