Created
August 10, 2023 03:45
-
-
Save kaixinol/8bfff7aef3cc5183367542ada763e28d to your computer and use it in GitHub Desktop.
提取B站上自己已购买的商城表情 python脚本
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# pip install requests multitasking loguru | |
import requests | |
import multitasking | |
import signal | |
import os | |
from loguru import logger | |
import re | |
signal.signal(signal.SIGINT, multitasking.killall) | |
multitasking.set_max_threads(multitasking.config["CPU_CORES"] * 2) | |
@multitasking.task | |
def download(url: str,path: str): | |
if 'http' not in url: | |
logger.warning(f"{url}非有效URL,略过") | |
return | |
try: | |
f=requests.get(url) | |
with open(path,"wb") as code: | |
code.write(f.content) | |
except Exception as e: | |
logger.error(e) | |
def get_valid_filename(s:str): | |
s = s.strip().replace(' ', '_') | |
return re.sub(r'(?u)[^-\w.]', '_', s) | |
url = 'https://api.bilibili.com/x/emote/user/panel/web' | |
data = { | |
'business': 'reply' | |
} | |
SESSDATA=input("SESSDATA=") | |
headers = { | |
'Cookie': f'SESSDATA={SESSDATA}' | |
} | |
if not SESSDATA: | |
logger.warning('SESSDATA为空只能读取到免费的表情包') | |
response = requests.get(url, params=data, headers=headers) | |
result = response.json() | |
stickers=result['data']["packages"] | |
logger.info(f'共找到{len(stickers)}个表情包') | |
print('\t'.join([i['text'] for i in stickers])) | |
for i in stickers: | |
if not os.path.exists(i['text']): | |
os.mkdir(i['text']) | |
download(i['url'],f"./{i['text']}/{get_valid_filename(i['text'])}icon.png") | |
for ii in i['emote']: | |
download(ii['url'],f"./{i['text']}/{get_valid_filename(ii['text'])}.png") | |
logger.success(i['text']+"\t下载完毕") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment