33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
import sqlite3
|
||
import json
|
||
|
||
def fetch_entry_data(db_path, aid):
|
||
"""
|
||
根据aid从数据库中加载data
|
||
"""
|
||
conn = sqlite3.connect(db_path)
|
||
cursor = conn.cursor()
|
||
cursor.execute("SELECT data FROM bili_info_crawl WHERE aid = ?", (aid,))
|
||
fet = cursor.fetchone()
|
||
if fet:
|
||
data = fet[0]
|
||
else:
|
||
data = None
|
||
conn.close()
|
||
return data
|
||
|
||
def parse_entry_data(data):
|
||
"""
|
||
解析JSON数据,提取视频标题、简介、标签、作者简介
|
||
"""
|
||
try:
|
||
obj = json.loads(data)
|
||
title = obj["View"]["title"]
|
||
description = obj["View"]["desc"]
|
||
tags = [tag["tag_name"] for tag in obj["Tags"] if tag["tag_type"] in ["old_channel", "topic"]]
|
||
author_info = obj["Card"]["card"]["name"] + ": " + obj["Card"]["card"]["sign"]
|
||
url = "https://www.bilibili.com/video/" + obj["View"]["bvid"]
|
||
return title, description, tags, author_info, url
|
||
except (TypeError, json.JSONDecodeError) as e:
|
||
print(f"Error parsing data: {e}")
|
||
return None, None, None, None, None |