modify aabook codes.
This commit is contained in:
471
scripts/aabook/aabook_fetch.py
Normal file
471
scripts/aabook/aabook_fetch.py
Normal file
@ -0,0 +1,471 @@
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
import os
|
||||
import sys
|
||||
import random
|
||||
import time
|
||||
import re
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from datetime import date
|
||||
import config # 日志配置
|
||||
from down_list import novel_map
|
||||
|
||||
|
||||
# 日志
|
||||
config.setup_logging()
|
||||
|
||||
# 配置基础URL和输出文件
|
||||
base_url = 'https://aabook.xyz'
|
||||
list_url_wordcount = 'https://aabook.xyz/category.html?pageNum={}&pageSize=30&catId=-1&size=-1&isFinish=-1&updT=-1&orderBy=wordcount'
|
||||
list_url_update = 'https://aabook.xyz/category.html?pageNum={}&pageSize=30&catId=-1&size=-1&isFinish=-1&updT=-1&orderBy=update'
|
||||
curr_novel_pages = 0
|
||||
|
||||
meta_dir = 'meta'
|
||||
|
||||
list_file = f'{meta_dir}/list.txt'
|
||||
details_file = f'{meta_dir}/details.txt'
|
||||
down_list_file = f'{meta_dir}/down_list.txt'
|
||||
|
||||
# User-Agent 列表
|
||||
user_agents = [
|
||||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
|
||||
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36",
|
||||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67",
|
||||
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0",
|
||||
"Mozilla/5.0 (Linux; Android 10; SM-G973F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Mobile Safari/537.36"
|
||||
]
|
||||
# 定义获取页面内容的函数,带重试机制
|
||||
def get_page_content(url, max_retries=100, sleep_time=5, default_timeout=10):
|
||||
retries = 0
|
||||
# 随机选择一个 User-Agent
|
||||
headers = {
|
||||
'User-Agent': random.choice(user_agents)
|
||||
}
|
||||
|
||||
while retries < max_retries:
|
||||
try:
|
||||
response = requests.get(url, headers=headers, timeout=default_timeout, stream=True)
|
||||
response.raise_for_status()
|
||||
return response.text # 请求成功,返回内容
|
||||
except requests.RequestException as e:
|
||||
retries += 1
|
||||
logging.info(f"Warn fetching page {url}: {e}. Retrying {retries}/{max_retries}...")
|
||||
if retries >= max_retries:
|
||||
logging.error(f"Failed to fetch page {url} after {max_retries} retries.")
|
||||
return None
|
||||
time.sleep(sleep_time) # 休眠指定的时间,然后重试
|
||||
|
||||
|
||||
# 获取排行列表
|
||||
def get_list(write_list_file = list_file, list_url = list_url_wordcount, start_date = '2000-01-01', order_by_date = False):
|
||||
page_num = 1
|
||||
start_time = datetime.strptime(f'{start_date} 00:00:00', "%Y-%m-%d %H:%M:%S")
|
||||
with open(write_list_file, 'w', encoding='utf-8') as f:
|
||||
while True:
|
||||
# 发起请求
|
||||
list_url = list_url.format(page_num)
|
||||
logging.info(f"Fetching page [{page_num}] {list_url}")
|
||||
|
||||
content = get_page_content(list_url)
|
||||
soup = BeautifulSoup(content, 'html.parser')
|
||||
|
||||
# 查找书籍列表
|
||||
list_main = soup.find('div', class_='list_main')
|
||||
if not list_main:
|
||||
logging.info("No list_main Found. retry...")
|
||||
continue
|
||||
|
||||
tbody = list_main.find('tbody')
|
||||
if not tbody:
|
||||
logging.info("No tbody found. retry...")
|
||||
continue
|
||||
|
||||
# 获取每本书的基础信息:排名、分类、书名、作者、月票、更新时间(按字数排序时是总字数,按日期排序时是最后更新日期)
|
||||
for tr in tbody.find_all('tr'):
|
||||
tds = tr.find_all('td')
|
||||
if len(tds) < 6:
|
||||
logging.info("Invalid tr format.")
|
||||
continue
|
||||
ranking = tds[0].text.strip()
|
||||
category = tds[1].text.strip()
|
||||
book_link_tag = tds[2].find('a')
|
||||
book_name = book_link_tag.text.strip()
|
||||
book_link = base_url + '/' + book_link_tag['href']
|
||||
author = tds[3].text.strip()
|
||||
monthly_tickets = tds[4].text.strip()
|
||||
update_time = tds[5].text.strip() #实际上是字数(按字数排序时是总字数,按日期排序时是最后更新日期)
|
||||
|
||||
# 检查更新
|
||||
if order_by_date :
|
||||
up_time = datetime.strptime(update_time, "%Y-%m-%d %H:%M:%S")
|
||||
if start_time > up_time:
|
||||
return
|
||||
|
||||
# 写入 aabook_list.txt
|
||||
# 排名 分类 书名 作者 月票 字数(更新日期) 书本链接
|
||||
f.write(f"{ranking}\t{category}\t{book_name}\t{author}\t{monthly_tickets}\t{update_time}\t{book_link}\n")
|
||||
f.flush()
|
||||
|
||||
# 查找下一页链接
|
||||
next_page_tag = soup.find('a', title='下一页')
|
||||
if next_page_tag:
|
||||
list_url = base_url + next_page_tag['href']
|
||||
page_num += 1
|
||||
else:
|
||||
logging.info("No next page, stopping.")
|
||||
break
|
||||
|
||||
time.sleep(3)
|
||||
#break ## for test
|
||||
|
||||
# 拉取详情,并校验
|
||||
def fetch_detail_and_check(url, book_name):
|
||||
while True:
|
||||
contenxt = get_page_content(url)
|
||||
soup = BeautifulSoup(contenxt, 'html.parser')
|
||||
|
||||
# 解析书籍详细信息
|
||||
book_info_tag = soup.find('li', class_='zuopinxinxi')
|
||||
if not book_info_tag:
|
||||
logging.info(f"No details found for {book_name}, retry...")
|
||||
continue
|
||||
|
||||
book_info_lis = book_info_tag.find_all('li')
|
||||
if len(book_info_lis) < 4:
|
||||
logging.info(f"invalid book info. {book_name}. retry...")
|
||||
continue
|
||||
|
||||
return contenxt
|
||||
|
||||
# 获取每本书的详情
|
||||
def get_detail(write_list_file = list_file, wirte_details_file = details_file):
|
||||
# 读取已完成详细信息的书籍链接
|
||||
if os.path.exists(wirte_details_file):
|
||||
with open(wirte_details_file, 'r', encoding='utf-8') as f:
|
||||
completed_links = set(line.split('\t')[4] for line in f.readlines())
|
||||
else:
|
||||
completed_links = set()
|
||||
|
||||
with open(write_list_file, 'r', encoding='utf-8') as f_list, open(wirte_details_file, 'a', encoding='utf-8') as f_details:
|
||||
for line in f_list:
|
||||
fields = line.strip().split('\t')
|
||||
if len(fields) < 7:
|
||||
continue
|
||||
book_link = fields[6]
|
||||
book_name = fields[2]
|
||||
|
||||
if book_link in completed_links:
|
||||
logging.info(f"Skipping {book_name} {book_link}, already processed.")
|
||||
continue
|
||||
|
||||
# 访问书籍详细页
|
||||
logging.info(f"Fetching details for {book_name} {book_link}")
|
||||
#contenxt = get_page_content(book_link)
|
||||
contenxt = fetch_detail_and_check(book_link, book_name)
|
||||
soup = BeautifulSoup(contenxt, 'html.parser')
|
||||
|
||||
# 解析书籍详细信息
|
||||
book_info_tag = soup.find('li', class_='zuopinxinxi')
|
||||
if not book_info_tag:
|
||||
logging.info(f"No details found for {book_name}, skipping.")
|
||||
continue
|
||||
|
||||
book_info_lis = book_info_tag.find_all('li')
|
||||
if len(book_info_lis) < 4:
|
||||
logging.info(f"invalid book info. {book_name}")
|
||||
continue
|
||||
book_category = book_info_lis[0].find('span').text.strip()
|
||||
book_status = book_info_lis[1].find('span').text.strip()
|
||||
total_word_count = book_info_lis[2].find('span').text.strip()
|
||||
total_clicks = book_info_lis[3].find('span').text.strip()
|
||||
# 去掉后面的汉字,只要数字
|
||||
total_word_count = int(re.search(r'\d+', total_word_count).group())
|
||||
|
||||
# 读取创建时间
|
||||
creation_time_tag = soup.find('li', class_='update_time')
|
||||
creation_time = creation_time_tag.text.strip() if creation_time_tag else 'N/A'
|
||||
|
||||
# 获取起始页链接和编号
|
||||
start_page_tag = soup.find('ul', class_='gezhonganniu').find_all('li')[0].find('a')
|
||||
start_page_link = base_url + '/' + start_page_tag['href']
|
||||
start_page_number = start_page_link.split('-')[-1].replace('.html', '')
|
||||
|
||||
# 写入 aabook_details.txt
|
||||
# 排名 类别 书名 作者 书本链接 首页链接 开始链接编码 状态 总字数 总点击 总字数 创建时间
|
||||
f_details.write(f"{fields[0]}\t{book_category}\t{fields[2]}\t{fields[3]}\t{book_link}\t"
|
||||
f"{start_page_link}\t{start_page_number}\t{book_status}\t{total_word_count}\t"
|
||||
f"{total_clicks}\t{fields[5]}\t{creation_time}\n")
|
||||
f_details.flush()
|
||||
|
||||
time.sleep(5)
|
||||
|
||||
|
||||
# 解析内容中的水印部分
|
||||
def clean_watermarks(html):
|
||||
"""
|
||||
过滤掉带有 class 属性的水印标签及其内部内容,保留其他标签结构。
|
||||
"""
|
||||
# 使用正则表达式匹配并移除任何带有 class 属性的 HTML 标签及其内容
|
||||
cleaned_html = re.sub(r'<[^>]+class="[^"]+">.*?</[^>]+>', '', html, flags=re.DOTALL)
|
||||
return cleaned_html
|
||||
|
||||
def process_paragraph(paragraph):
|
||||
# 获取完整的 HTML 结构,而不是 get_text()
|
||||
paragraph_html = str(paragraph)
|
||||
|
||||
# 移除水印标签
|
||||
cleaned_html = clean_watermarks(paragraph_html)
|
||||
|
||||
# 使用 BeautifulSoup 解析移除水印标签后的 HTML 并提取文本
|
||||
soup = BeautifulSoup(cleaned_html, 'html.parser')
|
||||
cleaned_text = soup.get_text().strip()
|
||||
|
||||
return cleaned_text
|
||||
|
||||
# 从 script 标签中提取 content_url
|
||||
def extract_content_url(soup, base_url, chapid):
|
||||
# 找到所有 <script> 标签
|
||||
script_tags = soup.find_all('script')
|
||||
|
||||
# 遍历每一个 <script> 标签,查找包含特定内容的标签
|
||||
for script_tag in script_tags:
|
||||
script_content = script_tag.string
|
||||
if script_content and re.search(r'\.get\("./_getcontent\.php', script_content):
|
||||
# 匹配到特定内容,提取出 _getcontent.php 的 URL 模板
|
||||
match = re.search(r'\.get\("\./_getcontent\.php\?id="\+\s*chapid\s*\+\s*"&v=([^"]+)"', script_content)
|
||||
if match:
|
||||
# 从匹配中提取 v 参数值
|
||||
v_value = match.group(1)
|
||||
# 构建完整的 content_url
|
||||
content_url = f"{base_url}/_getcontent.php?id={chapid}&v={v_value}"
|
||||
return content_url
|
||||
|
||||
# 如果未找到匹配的 script 标签,则返回 None
|
||||
return None
|
||||
|
||||
# 判断内容是否被污染
|
||||
def check_content(content):
|
||||
if '2005-2024 疯情书库' in content:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
# 计数器
|
||||
def reset_novel_pages():
|
||||
global curr_novel_pages
|
||||
curr_novel_pages = 0
|
||||
def add_novel_pages():
|
||||
global curr_novel_pages
|
||||
curr_novel_pages += 1
|
||||
def get_novel_pages():
|
||||
global curr_novel_pages
|
||||
return curr_novel_pages
|
||||
|
||||
# 解析章节内容并保存到文件中
|
||||
def download_novel(chapid, novel_name, dir_prefix='./aabook'):
|
||||
chapter_url = f'{base_url}/read-{chapid}.html'
|
||||
|
||||
novel_file = f'{dir_prefix}/{chapid}_{novel_name}.txt'
|
||||
if os.path.exists(novel_file):
|
||||
os.remove(novel_file) # 如果存在同名文件,删除重新下载
|
||||
|
||||
reset_novel_pages()
|
||||
while chapter_url:
|
||||
logging.info(f"Processing: [{novel_name}] [{chapid}] {chapter_url}")
|
||||
|
||||
# 获取章节页面内容
|
||||
html_content = get_page_content(chapter_url)
|
||||
if html_content is None:
|
||||
logging.error(f"Get page error {chapter_url}, retry...")
|
||||
time.sleep(2)
|
||||
continue
|
||||
|
||||
# 解析章节内容
|
||||
soup = BeautifulSoup(html_content, 'html.parser')
|
||||
|
||||
# 获取章节标题
|
||||
chapter_title_tag = soup.find('h1', class_='chapter_title')
|
||||
if chapter_title_tag:
|
||||
chapter_title = chapter_title_tag.get_text().strip()
|
||||
logging.info(f"Processing: [{novel_name}] [{chapid}] Chapter Title: {chapter_title}")
|
||||
else:
|
||||
logging.error(f"Chapter title not found in {chapter_url}, retry...")
|
||||
time.sleep(2)
|
||||
continue
|
||||
|
||||
# 提取正文内容的请求地址
|
||||
content_url = extract_content_url(soup, base_url, chapid)
|
||||
if content_url:
|
||||
logging.info(f"Fetching content from: {content_url}")
|
||||
|
||||
# 获取正文内容
|
||||
content_response = get_page_content(content_url)
|
||||
if content_response:
|
||||
if not check_content(content_response):
|
||||
logging.error(f'error response. dirty page [{novel_name}] {content_url}, retry...')
|
||||
continue
|
||||
|
||||
content_soup = BeautifulSoup(content_response, 'html.parser')
|
||||
paragraphs = content_soup.find_all('p')
|
||||
|
||||
# 写入标题到文件
|
||||
with open(novel_file, 'a', encoding='utf-8') as f:
|
||||
f.write(chapter_title + '\n\n')
|
||||
|
||||
# 写入每个段落内容到文件
|
||||
with open(novel_file, 'a', encoding='utf-8') as f:
|
||||
for paragraph in paragraphs:
|
||||
#cleaned_part = clean_watermarks(paragraph.get_text().strip())
|
||||
#f.write(paragraph.get_text() + '\n\n')
|
||||
#f.write(cleaned_part + '\n\n')
|
||||
cleaned_text = process_paragraph(paragraph)
|
||||
f.write(cleaned_text + '\n\n')
|
||||
logging.info(f"Writting content to file. [{novel_name}] [{chapid}] [{chapter_title}]")
|
||||
else:
|
||||
logging.info(f"Fetching content error: [{novel_name}] {content_url}, retry...")
|
||||
continue
|
||||
else:
|
||||
logging.info(f"Content URL not found in [{novel_name}] {chapter_url}, retry...")
|
||||
continue
|
||||
|
||||
# 页码数+1
|
||||
add_novel_pages()
|
||||
# 查找下一章的链接
|
||||
next_div = soup.find('div', class_='next_arrow')
|
||||
# 判断是否找到了包含下一章链接的 div 标签
|
||||
if next_div:
|
||||
next_page_tag = next_div.find('a', href=True, title=re.compile(r'下一章'))
|
||||
if next_page_tag:
|
||||
next_page_url = next_page_tag['href']
|
||||
|
||||
# 使用正则提取其中的章节 ID(数字部分)
|
||||
chapid_match = re.search(r'read-(\d+)\.html', next_page_url)
|
||||
if chapid_match:
|
||||
chapid = chapid_match.group(1) # 提取到的章节 ID
|
||||
chapter_url = f"{base_url}/{next_page_url}"
|
||||
logging.debug(f"Next chapter URL: {chapter_url}, chapid: {chapid}")
|
||||
else:
|
||||
logging.info(f"Failed to extract chapid from next_page_url: {next_page_url}")
|
||||
break
|
||||
else:
|
||||
logging.info(f"No next page found. Ending download for {novel_name}.")
|
||||
break
|
||||
else:
|
||||
logging.info(f"No 'next_arrow' div found in {chapter_url}. Ending download.")
|
||||
break
|
||||
|
||||
time.sleep(3)
|
||||
|
||||
|
||||
# 检查子目录是否存在,不存在则创建
|
||||
def create_directory_if_not_exists(category_name):
|
||||
if not os.path.exists(category_name):
|
||||
os.makedirs(category_name)
|
||||
logging.info(f"Created directory: {category_name}")
|
||||
|
||||
# 下载小说,检查是否已经下载过
|
||||
def download_books(need_down_list_file = details_file, cursor_file = down_list_file):
|
||||
if not os.path.isfile(need_down_list_file):
|
||||
logging.error(f'input file {need_down_list_file} not exist!')
|
||||
return
|
||||
|
||||
if not os.path.isfile(cursor_file):
|
||||
logging.info(f'input file {cursor_file} not exist, use empty dict instead.')
|
||||
|
||||
# 读取 aabook_down_list.txt 中已下载书籍的起始页数字编号和书名
|
||||
downloaded_books = {}
|
||||
if os.path.exists(cursor_file):
|
||||
with open(cursor_file, 'r', encoding='utf-8') as f:
|
||||
for line in f:
|
||||
fields = line.strip().split('\t')
|
||||
if len(fields) != 2:
|
||||
logging.info(f'invalid line data: {line}')
|
||||
continue
|
||||
novel_id, novel_name = fields
|
||||
downloaded_books[novel_id] = novel_name
|
||||
|
||||
# 打开 aabook_details.txt 读取书籍信息
|
||||
with open(need_down_list_file, 'r', encoding='utf-8') as details:
|
||||
for line in details:
|
||||
fields = line.strip().split('\t')
|
||||
if len(fields) < 8:
|
||||
logging.info(f'invalid line data. {line}')
|
||||
continue # 跳过不完整的数据
|
||||
ranking, category, book_name, author, book_link, start_page_link, novel_id, status, total_word_count, total_clicks, update_time, creation_time = fields
|
||||
|
||||
# 检查书籍是否已经下载过
|
||||
if novel_id in downloaded_books:
|
||||
logging.info(f"Skipping already downloaded novel: {book_name} (ID: {novel_id})")
|
||||
continue # 已经下载过,跳过
|
||||
|
||||
# 创建分类目录
|
||||
down_dir = './data/' + category
|
||||
create_directory_if_not_exists(down_dir)
|
||||
|
||||
# 调用下载函数下载书籍
|
||||
start_time = time.time() # 在函数执行前获取当前时间
|
||||
download_novel(novel_id, book_name, down_dir)
|
||||
end_time = time.time() # 在函数执行后获取当前时间
|
||||
elapsed_time = int(end_time - start_time) # 计算时间差,秒
|
||||
novel_pages = get_novel_pages()
|
||||
|
||||
# 下载后,将书籍信息追加写入 aabook_down_list.txt
|
||||
with open(cursor_file, 'a', encoding='utf-8') as down_list:
|
||||
down_list.write(f"{novel_id}\t{book_name}\n")
|
||||
logging.info(f"Downloaded and recorded: ({book_name}) (ID: {novel_id}) total pages: {novel_pages} time cost: {elapsed_time} s")
|
||||
|
||||
# 下载指定的小说
|
||||
def download_map():
|
||||
# 遍历 novel_map,下载所有小说
|
||||
for novel_id, novel_name in novel_map.items():
|
||||
logging.info(f"Starting download for {novel_name} (ID: {novel_id})")
|
||||
download_novel(novel_id, novel_name, './local')
|
||||
logging.info(f"Completed download for {novel_id}_{novel_name}.\n")
|
||||
|
||||
# 获取更新列表,并下载
|
||||
def get_update(start_date, fetch_all = False):
|
||||
today_str = date.today().strftime("%Y-%m-%d")
|
||||
update_file = f'{meta_dir}/{today_str}_list_{start_date}.txt'
|
||||
details_file = f'{meta_dir}/{today_str}_details_{start_date}.txt'
|
||||
cursor_file = f'{meta_dir}/{today_str}_down_list_{start_date}.txt'
|
||||
logging.info(f"\n\nFetching novel list by update time from {start_date} \n\n")
|
||||
get_list(update_file, list_url_update, start_date, True)
|
||||
logging.info(f"\n\nFetching novel details by update time from {start_date} \n\n")
|
||||
get_detail(update_file, details_file)
|
||||
|
||||
if fetch_all:
|
||||
logging.info(f"\n\nDownloading novel lists by update time from {start_date} \n\n")
|
||||
download_books(details_file, cursor_file)
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python script.py <cmd>")
|
||||
print("cmd: get_list, get_detail, get_all, get_update, get_update_all, download, download_map")
|
||||
sys.exit(1)
|
||||
|
||||
cmd = sys.argv[1]
|
||||
|
||||
if cmd == "get_list":
|
||||
get_list() # 之前已经实现的获取列表功能
|
||||
elif cmd == "get_detail":
|
||||
get_detail() # 之前已经实现的获取详情功能
|
||||
elif cmd == "get_all":
|
||||
get_list()
|
||||
get_detail()
|
||||
elif cmd == "download":
|
||||
download_books() # 下载书籍功能
|
||||
elif cmd == "download_map":
|
||||
download_map() # 下载书籍功能
|
||||
elif cmd == "get_update" or cmd == "get_update_all":
|
||||
fetch_all = False if cmd == "get_update" else True
|
||||
start_date = '2000-01-01'
|
||||
if len(sys.argv) == 3:
|
||||
start_date = sys.argv[2]
|
||||
get_update(start_date, fetch_all) # 获取更新列表,并下载
|
||||
else:
|
||||
print(f"Unknown command: {cmd}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
31
scripts/aabook/config.py
Normal file
31
scripts/aabook/config.py
Normal file
@ -0,0 +1,31 @@
|
||||
import logging
|
||||
import os
|
||||
import inspect
|
||||
from datetime import datetime
|
||||
|
||||
# MySQL 配置
|
||||
db_config = {
|
||||
'host': '172.18.0.3',
|
||||
'user': 'root',
|
||||
'password': 'mysqlpw',
|
||||
'database': 'stockdb'
|
||||
}
|
||||
|
||||
# 设置日志配置
|
||||
def setup_logging(log_filename=None):
|
||||
# 如果未传入 log_filename,则使用当前脚本名称作为日志文件名
|
||||
if log_filename is None:
|
||||
# 获取调用 setup_logging 的脚本文件名
|
||||
caller_frame = inspect.stack()[1]
|
||||
caller_filename = os.path.splitext(os.path.basename(caller_frame.filename))[0]
|
||||
|
||||
# 获取当前日期,格式为 yyyymmdd
|
||||
current_date = datetime.now().strftime('%Y%m%d')
|
||||
# 拼接 log 文件名,将日期加在扩展名前
|
||||
log_filename = f'./log/{caller_filename}_{current_date}.log'
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s [%(filename)s:%(lineno)d] (%(funcName)s) - %(message)s',
|
||||
handlers=[
|
||||
logging.FileHandler(log_filename),
|
||||
logging.StreamHandler()
|
||||
])
|
||||
125
scripts/aabook/down_list.py
Normal file
125
scripts/aabook/down_list.py
Normal file
@ -0,0 +1,125 @@
|
||||
|
||||
# 定义小说映射
|
||||
novel_map_new = {
|
||||
138219: '我的将军生涯',
|
||||
6548: '我和我哥们的女友的女友的故事',
|
||||
}
|
||||
# 定义小说映射
|
||||
novel_map = {
|
||||
605: '我的支书生涯',
|
||||
138219: '我的将军生涯',
|
||||
6548: '我和我哥们的女友的女友的故事',
|
||||
203144: '我的校长生涯',
|
||||
}
|
||||
|
||||
|
||||
novel_map_done = {
|
||||
5479: '倚天屠龙记(成人版)',
|
||||
269: '雪域往事',
|
||||
156643: '都市偷心龙爪手',
|
||||
85227: '明星潜规则之皇',
|
||||
88155: '娇娇师娘(与爱同行)',
|
||||
12829: '女人四十一枝花',
|
||||
116756: '风雨里的罂粟花',
|
||||
320500: '豪门浪荡史',
|
||||
329495: '女市长迷途沉沦:权斗',
|
||||
159927: '豪乳老师刘艳',
|
||||
308650: '山里的女人',
|
||||
163322: '翁媳乱情',
|
||||
103990: '欲望之门',
|
||||
59793: '红尘都市',
|
||||
231646: '那山,那人,那情',
|
||||
61336: '妻欲:欲望迷城(H 版)',
|
||||
104929: '都市奇缘',
|
||||
239682: '叶辰风流',
|
||||
261481: '我本风流',
|
||||
171107: '爱与欲的升华',
|
||||
171029: '亲爱的不要离开我',
|
||||
5049: '红楼春梦',
|
||||
5479: '倚天屠龙记(成人版)',
|
||||
71468: '襄阳战记',
|
||||
29242: '仙剑淫女传',
|
||||
237271: '新倚天行',
|
||||
231192: '神雕侠绿',
|
||||
31882: '新编蜗居H版',
|
||||
230877: '黄蓉的改变',
|
||||
187150: '黄蓉襄阳淫史',
|
||||
316162: '洛玉衡的堕落(大奉打更人H)',
|
||||
7678: '射雕别记(黄蓉的故事)',
|
||||
185302: '天地之间(精修版)',
|
||||
54344: '情欲两极 (情和欲的两极)',
|
||||
2072: '父女情',
|
||||
214610: '大黄的故事',
|
||||
2211: '隔墙有眼',
|
||||
221453: '当维修工的日子',
|
||||
153792: '荒村红杏',
|
||||
186052: '食色男女',
|
||||
68: '童年+静静的辽河',
|
||||
322665: '乡村活寡美人沟',
|
||||
160528: '我和我的母亲(改写寄印传奇)',
|
||||
23228: '风流人生',
|
||||
181617: '红楼遗秘',
|
||||
219454: '寻秦记(全本改编版)',
|
||||
49051: '情色搜神记',
|
||||
5860: '天若有情(一家之主)',
|
||||
161497: '步步高升',
|
||||
51870: '母爱的光辉',
|
||||
258388: '露从今夜白',
|
||||
202281: '异地夫妻',
|
||||
1960: '北方的天空',
|
||||
164544: '少妇的悲哀',
|
||||
158872: '我的极品老婆',
|
||||
3975: '出轨的诱惑',
|
||||
26442: '爱满江城',
|
||||
7776: '小城乱事',
|
||||
179710: '淫男乱女(小雄性事)',
|
||||
79161: '情迷芦苇荡:山乡艳事',
|
||||
99885: '江南第一风流才子(唐伯虎淫传)',
|
||||
54426: '水浒潘金莲',
|
||||
327794: '枕瑶钗([清]东涧老人)',
|
||||
161243: '我的青年岁月',
|
||||
137885: '破碎的命运',
|
||||
159266: '我的好儿媳(极品好儿媳)',
|
||||
166534: '女友与睡在隔壁的兄弟',
|
||||
40646: '女子医院的男医生',
|
||||
61535: '魅骨少妇(苏樱的暧昧情事)',
|
||||
13166: '青春性事:一个八零后的情欲往事',
|
||||
21563: '幸福的借种经历',
|
||||
51916: '乱情家庭',
|
||||
26787: '少妇人妻的欲望',
|
||||
59610: '金瓶梅(崇祯原本)',
|
||||
322155: '少年阿宾',
|
||||
89532: '宋家湾那些事儿',
|
||||
297078: '熟透了的村妇',
|
||||
350314: '多情村妇',
|
||||
53823: '蛮荒小村的风流韵事',
|
||||
82570: '潭河峪的那些事儿',
|
||||
72429: '杨家将外传_薛家将秘史',
|
||||
410: '农村的妞',
|
||||
37443: '山里人家',
|
||||
28478: '追忆平凡年代的全家故事',
|
||||
199014: '风流岁月',
|
||||
59737: '丝之恋-我与一对母女的故事',
|
||||
14733: '乡村乱情|奇思妙想',
|
||||
43: '空空幻',
|
||||
3858: '绿头巾',
|
||||
13483: '乡野欲潮:绝色村嫂的泛滥春情',
|
||||
67423: '欲海沉沦:一个换妻经历者的良心忏悔',
|
||||
51776: '我成了父亲与妻子的月老',
|
||||
54192: '郝叔和他的女人',
|
||||
68339: '和护士后妈生活的日子',
|
||||
15168: '妻子的会客厅:高官的秘密',
|
||||
7064: '男欢女爱',
|
||||
50555: '人生得意须纵欢',
|
||||
67114: '潜色官迹:小所长孽欲涅盘',
|
||||
1487: '神雕风流',
|
||||
4951: '合租情缘(出租屋里的真实换妻记录)',
|
||||
4701: '艰难的借种经历',
|
||||
162845: '人妻牌坊——我和人妻的故事',
|
||||
183692: '幸福家庭背后的隐私',
|
||||
140605: '东北大炕',
|
||||
24344: '淫乱一家亲(超级乱伦家庭)',
|
||||
25154: '全家人互爱共乐的日子',
|
||||
16941: '平凡的激情',
|
||||
70767: '合家欢',
|
||||
}
|
||||
1
scripts/aabook/meta/aabook_cursor_2024-10-01.txt
Normal file
1
scripts/aabook/meta/aabook_cursor_2024-10-01.txt
Normal file
@ -0,0 +1 @@
|
||||
353159 闺蜜的救赎
|
||||
9
scripts/aabook/meta/aabook_details_2000-01-01.txt
Normal file
9
scripts/aabook/meta/aabook_details_2000-01-01.txt
Normal file
@ -0,0 +1,9 @@
|
||||
1 都市 闺蜜的救赎 kaolabaobao1001 https://aabook.xyz/book-5343.html https://aabook.xyz/read-353159.html 353159 已完结 42372 660 2024-11-14 21:56:33 创建时间 2024-11-14 21:55:57
|
||||
2 武侠 邪不胜正 路人甲乙丙丁戊/狂加班之人 https://aabook.xyz/book-5342.html https://aabook.xyz/read-353155.html 353155 已完结 118737 260 2024-11-14 21:42:53 创建时间 2024-11-14 21:41:57
|
||||
3 校园 美母为妻 带刀侍卫 https://aabook.xyz/book-5341.html https://aabook.xyz/read-353085.html 353085 连载中 274218 78600 2024-11-04 23:43:44 创建时间 2024-11-04 23:41:33
|
||||
4 单篇 我和姐姐 itaylo https://aabook.xyz/book-5340.html https://aabook.xyz/read-353084.html 353084 已完结 5160 744 2024-11-04 21:34:53 创建时间 2024-11-04 21:34:31
|
||||
5 都市 娇妻美妾任君尝 红莲玉露 https://aabook.xyz/book-222.html https://aabook.xyz/read-10673.html 10673 连载中 1632848 244477 2024-11-04 21:25:45 创建时间 2014-11-12 11:58:26
|
||||
6 都市 人妻情欲日记之女律师李佳芯的淫乱回忆 joker94756978 https://aabook.xyz/book-5339.html https://aabook.xyz/read-353052.html 353052 连载中 114781 2301 2024-11-04 19:06:40 创建时间 2024-11-04 19:05:52
|
||||
7 单篇 初恋女友变成了人妻但是被我夺了回来 悠夏 https://aabook.xyz/book-5338.html https://aabook.xyz/read-353051.html 353051 已完结 12538 1188 2024-11-03 22:53:56 创建时间 2024-11-03 22:53:33
|
||||
8 都市 所谓伊人 轻狂似少年 https://aabook.xyz/book-3408.html https://aabook.xyz/read-208226.html 208226 连载中 620912 2623 2024-11-03 22:15:15 创建时间 2021-03-26 18:49:36
|
||||
9 网游 网游之代练传说时停系统 怪奇牛头纯爱萝卜娘 https://aabook.xyz/book-5034.html https://aabook.xyz/read-324728.html 324728 连载中 1820660 3296 2024-11-03 21:20:14 创建时间 2023-12-20 22:15:59
|
||||
59
scripts/aabook/meta/aabook_details_2024-10-01.txt
Normal file
59
scripts/aabook/meta/aabook_details_2024-10-01.txt
Normal file
@ -0,0 +1,59 @@
|
||||
1 都市 闺蜜的救赎 kaolabaobao1001 https://aabook.xyz/book-5343.html https://aabook.xyz/read-353159.html 353159 已完结 42372 564 2024-11-14 21:56:33 创建时间 2024-11-14 21:55:57
|
||||
2 武侠 邪不胜正 路人甲乙丙丁戊/狂加班之人 https://aabook.xyz/book-5342.html https://aabook.xyz/read-353155.html 353155 已完结 118737 246 2024-11-14 21:42:53 创建时间 2024-11-14 21:41:57
|
||||
3 校园 美母为妻 带刀侍卫 https://aabook.xyz/book-5341.html https://aabook.xyz/read-353085.html 353085 连载中 274218 77931 2024-11-04 23:43:44 创建时间 2024-11-04 23:41:33
|
||||
4 单篇 我和姐姐 itaylo https://aabook.xyz/book-5340.html https://aabook.xyz/read-353084.html 353084 已完结 5160 740 2024-11-04 21:34:53 创建时间 2024-11-04 21:34:31
|
||||
5 都市 娇妻美妾任君尝 红莲玉露 https://aabook.xyz/book-222.html https://aabook.xyz/read-10673.html 10673 连载中 1632848 244460 2024-11-04 21:25:45 创建时间 2014-11-12 11:58:26
|
||||
6 都市 人妻情欲日记之女律师李佳芯的淫乱回忆 joker94756978 https://aabook.xyz/book-5339.html https://aabook.xyz/read-353052.html 353052 连载中 114781 2276 2024-11-04 19:06:40 创建时间 2024-11-04 19:05:52
|
||||
7 单篇 初恋女友变成了人妻但是被我夺了回来 悠夏 https://aabook.xyz/book-5338.html https://aabook.xyz/read-353051.html 353051 已完结 12538 1177 2024-11-03 22:53:56 创建时间 2024-11-03 22:53:33
|
||||
8 都市 所谓伊人 轻狂似少年 https://aabook.xyz/book-3408.html https://aabook.xyz/read-208226.html 208226 连载中 620912 2614 2024-11-03 22:15:15 创建时间 2021-03-26 18:49:36
|
||||
9 网游 网游之代练传说时停系统 怪奇牛头纯爱萝卜娘 https://aabook.xyz/book-5034.html https://aabook.xyz/read-324728.html 324728 连载中 1820660 3291 2024-11-03 21:20:14 创建时间 2023-12-20 22:15:59
|
||||
10 校园 问鼎 葬歌 https://aabook.xyz/book-5206.html https://aabook.xyz/read-338090.html 338090 已完结 745679 6398 2024-11-03 21:15:07 创建时间 2024-04-29 21:31:09
|
||||
11 都市 娇妻臣服 兮夜 https://aabook.xyz/book-5337.html https://aabook.xyz/read-352974.html 352974 连载中 75018 16839 2024-11-03 21:04:53 创建时间 2024-11-03 21:03:36
|
||||
13 异能 重生与系统 小火龙 https://aabook.xyz/book-4958.html https://aabook.xyz/read-317447.html 317447 连载中 1798800 30259 2024-11-03 01:07:39 创建时间 2023-10-22 23:22:29
|
||||
14 同人 重生之官路商途(同人加色修改) 阿美 https://aabook.xyz/book-5335.html https://aabook.xyz/read-352833.html 352833 连载中 183606 7241 2024-11-02 22:27:10 创建时间 2024-11-02 22:25:36
|
||||
15 校园 我把美艳的妻子亲手推到了儿子的怀中 夜渐沉沦 https://aabook.xyz/book-5334.html https://aabook.xyz/read-352800.html 352800 已完结 85483 46357 2024-11-02 00:49:14 创建时间 2024-11-02 00:48:14
|
||||
16 都市 缘分 zebroid2 https://aabook.xyz/book-5333.html https://aabook.xyz/read-352784.html 352784 已完结 176492 4206 2024-10-30 00:54:34 创建时间 2024-10-30 00:53:52
|
||||
17 校园 绿意渐浓 金木 https://aabook.xyz/book-5332.html https://aabook.xyz/read-352775.html 352775 连载中 108217 5306 2024-10-29 23:07:11 创建时间 2024-10-29 23:05:49
|
||||
19 校园 摄母情事 Gstar111 https://aabook.xyz/book-5330.html https://aabook.xyz/read-352723.html 352723 连载中 115602 9842 2024-10-28 23:44:56 创建时间 2024-10-28 23:44:16
|
||||
20 校园 老师好 毒谷药王 https://aabook.xyz/book-5329.html https://aabook.xyz/read-352716.html 352716 已完结 21519 3983 2024-10-28 23:16:12 创建时间 2024-10-28 23:15:27
|
||||
21 单篇 和妈妈的房车性爱 主治大夫 https://aabook.xyz/book-5328.html https://aabook.xyz/read-352715.html 352715 已完结 48565 1594 2024-10-28 23:08:40 创建时间 2024-10-28 23:08:15
|
||||
22 都市 我的熟女娇妻 天堂小路 https://aabook.xyz/book-4569.html https://aabook.xyz/read-288232.html 288232 连载中 131437 4263 2024-10-28 23:04:01 创建时间 2023-02-06 00:32:27
|
||||
23 穿越 无限之生化崛起 三年又三年 https://aabook.xyz/book-4967.html https://aabook.xyz/read-318608.html 318608 连载中 1291011 47845 2024-10-28 23:01:49 创建时间 2023-11-06 22:17:43
|
||||
25 异能 我有九千万亿舔狗金(系统帮我睡女人) 有何不可 https://aabook.xyz/book-4858.html https://aabook.xyz/read-309963.html 309963 连载中 3538804 120215 2024-10-28 22:43:18 创建时间 2023-07-26 14:38:22
|
||||
26 言情 夜昙昼颜 sandian https://aabook.xyz/book-5327.html https://aabook.xyz/read-352624.html 352624 连载中 384400 3059 2024-10-28 22:29:31 创建时间 2024-10-28 19:57:12
|
||||
27 都市 帮助妻子和女儿寻找属于她们自己的快乐 cahl https://aabook.xyz/book-5326.html https://aabook.xyz/read-352614.html 352614 连载中 104673 9946 2024-10-27 22:49:10 创建时间 2024-10-27 22:48:23
|
||||
29 同人 夜天子(加色版) weilehaowan https://aabook.xyz/book-4926.html https://aabook.xyz/read-316057.html 316057 连载中 978081 1690 2024-10-27 20:04:02 创建时间 2023-09-10 22:54:51
|
||||
30 仙侠 御仙 清风霜雪 https://aabook.xyz/book-5303.html https://aabook.xyz/read-349104.html 349104 连载中 625025 7054 2024-10-27 20:00:24 创建时间 2024-09-19 09:51:55
|
||||
31 都市 律师女友的淫欲正义 深夜渔夫 https://aabook.xyz/book-5325.html https://aabook.xyz/read-352572.html 352572 连载中 138031 19677 2024-10-27 19:39:49 创建时间 2024-10-27 19:38:31
|
||||
32 言情 野火 夏多布里昂 https://aabook.xyz/book-5296.html https://aabook.xyz/read-348493.html 348493 已完结 410027 8047 2024-10-26 20:01:50 创建时间 2024-09-17 16:17:13
|
||||
36 同人 NTR大作战 佚名 https://aabook.xyz/book-4178.html https://aabook.xyz/read-256392.html 256392 连载中 1239213 8427 2024-10-26 14:40:48 创建时间 2022-07-28 14:34:05
|
||||
12 单篇 来自于的妹妹的霸凌 art_dino https://aabook.xyz/book-5336.html https://aabook.xyz/read-352973.html 352973 已完结 64969 1590 2024-11-03 12:14:27 创建时间 2024-11-03 12:14:02
|
||||
18 都市 40岁爱妻的韵味 多情应笑我 https://aabook.xyz/book-5331.html https://aabook.xyz/read-352734.html 352734 已完结 148956 26309 2024-10-29 00:02:24 创建时间 2024-10-29 00:00:58
|
||||
24 言情 喜欢你,和她们 我们的幻想乡 https://aabook.xyz/book-5084.html https://aabook.xyz/read-328671.html 328671 连载中 811747 8792 2024-10-28 22:49:12 创建时间 2024-01-14 21:28:24
|
||||
28 异能 邪月神女 平行线 https://aabook.xyz/book-4619.html https://aabook.xyz/read-290633.html 290633 连载中 636372 1859 2024-10-27 22:14:01 创建时间 2023-02-26 23:19:31
|
||||
33 单篇 补习:将极品校花母女征服胯下 烈焰狂徒 https://aabook.xyz/book-5324.html https://aabook.xyz/read-352546.html 352546 已完结 49154 4079 2024-10-26 19:32:17 创建时间 2024-10-26 19:31:06
|
||||
34 校园 掌中的美母 幕卷 https://aabook.xyz/book-4751.html https://aabook.xyz/read-298329.html 298329 已完结 545823 52101 2024-10-26 15:56:58 创建时间 2023-04-08 16:46:36
|
||||
35 异能 最渣之男穿越日本(渣男日娱) 黑色蓝调 https://aabook.xyz/book-4055.html https://aabook.xyz/read-248171.html 248171 连载中 1090466 3524 2024-10-26 15:04:55 创建时间 2022-05-14 20:49:33
|
||||
37 官场 警花娇妻的蜕变 小刀 https://aabook.xyz/book-3496.html https://aabook.xyz/read-215254.html 215254 连载中 1277080 10914 2024-10-26 00:12:17 创建时间 2021-06-18 23:51:30
|
||||
38 都市 颖异的大冲 路过赏雪 https://aabook.xyz/book-4881.html https://aabook.xyz/read-311790.html 311790 连载中 681129 1434 2024-10-20 00:40:19 创建时间 2023-08-13 22:47:22
|
||||
39 玄幻 超越游戏 someguy1 https://aabook.xyz/book-3343.html https://aabook.xyz/read-205398.html 205398 连载中 1548062 3677 2024-10-20 00:32:00 创建时间 2021-02-09 02:55:54
|
||||
40 言情 禁忌沉沦 周扶妖 https://aabook.xyz/book-5323.html https://aabook.xyz/read-352023.html 352023 连载中 74492 11579 2024-10-14 00:05:23 创建时间 2024-10-14 00:04:28
|
||||
41 言情 云之逸(性瘾的身体,性冷淡的我) 廖小姐的狗 https://aabook.xyz/book-5322.html https://aabook.xyz/read-351982.html 351982 已完结 383774 7012 2024-10-13 23:52:11 创建时间 2024-10-13 23:50:24
|
||||
43 都市 龙飞凤舞(大战熟女记、欲肉龙凤缘) 佚名 https://aabook.xyz/book-255.html https://aabook.xyz/read-12964.html 12964 已完结 121236 147073 2024-10-13 19:59:04 创建时间 2014-11-28 02:10:37
|
||||
44 言情 【前世情人】 夭夭 https://aabook.xyz/book-5285.html https://aabook.xyz/read-345610.html 345610 连载中 124334 1410 2024-10-13 19:55:49 创建时间 2024-09-02 23:23:50
|
||||
45 都市 我爱邻家小仙女 紫禁云生 https://aabook.xyz/book-1015.html https://aabook.xyz/read-59052.html 59052 连载中 687539 39942 2024-10-13 18:22:50 创建时间 2016-04-26 02:03:41
|
||||
46 都市 校花女友琳琳的故事 qiyuan0911 https://aabook.xyz/book-4856.html https://aabook.xyz/read-309912.html 309912 连载中 629545 3312 2024-10-13 18:02:21 创建时间 2023-07-20 10:03:40
|
||||
49 同人 纯爱后宫港区 想要一树梨花压海棠 https://aabook.xyz/book-4966.html https://aabook.xyz/read-318596.html 318596 连载中 286458 1546 2024-10-13 15:16:13 创建时间 2023-11-06 22:05:17
|
||||
50 异能 催眠清规 ttxshhxx(原文:爱欲ほね) https://aabook.xyz/book-2669.html https://aabook.xyz/read-169719.html 169719 连载中 274590 3956 2024-10-13 15:12:58 创建时间 2019-08-12 02:43:03
|
||||
42 都市 女友淫情 希希德 https://aabook.xyz/book-5321.html https://aabook.xyz/read-351942.html 351942 连载中 246365 23140 2024-10-13 22:59:38 创建时间 2024-10-13 22:57:20
|
||||
47 校园 柔情母上 一帘风月 https://aabook.xyz/book-4532.html https://aabook.xyz/read-285904.html 285904 连载中 188661 14731 2024-10-13 15:44:09 创建时间 2023-01-23 23:31:06
|
||||
48 武侠 碧魔录 STURMGEIST https://aabook.xyz/book-4673.html https://aabook.xyz/read-293349.html 293349 连载中 767770 9268 2024-10-13 15:21:28 创建时间 2023-03-16 23:43:09
|
||||
51 同人 父母爱情 往事怎能如烟 https://aabook.xyz/book-5320.html https://aabook.xyz/read-351868.html 351868 已完结 144310 14385 2024-10-13 13:59:21 创建时间 2024-10-13 13:58:02
|
||||
52 言情 挥发的爱 爱吃火锅 https://aabook.xyz/book-5297.html https://aabook.xyz/read-348643.html 348643 连载中 241289 2746 2024-10-13 13:28:45 创建时间 2024-09-17 16:56:26
|
||||
53 都市 妹妹日记浮世篇 人面春风 https://aabook.xyz/book-5295.html https://aabook.xyz/read-348417.html 348417 连载中 414524 7476 2024-10-11 23:32:37 创建时间 2024-09-17 14:39:12
|
||||
54 惊悚 末世逃缘 五颜 https://aabook.xyz/book-5308.html https://aabook.xyz/read-350184.html 350184 连载中 329942 3081 2024-10-11 23:29:53 创建时间 2024-09-22 17:44:20
|
||||
55 都市 那山,那人,那情 dearnyan https://aabook.xyz/book-3786.html https://aabook.xyz/read-231646.html 231646 连载中 1551360 13220 2024-10-11 23:26:43 创建时间 2021-12-30 15:23:57
|
||||
56 武侠 女侠们的肉玩具 佚名 https://aabook.xyz/book-4671.html https://aabook.xyz/read-293297.html 293297 连载中 179427 11036 2024-10-11 23:18:14 创建时间 2023-03-16 13:00:39
|
||||
57 仙侠 神女逍遥录 Kom-凡 https://aabook.xyz/book-5316.html https://aabook.xyz/read-351498.html 351498 连载中 494226 33324 2024-10-11 23:14:05 创建时间 2024-09-25 22:47:48
|
||||
58 同人 壮志凌云 孤独的大硬 https://aabook.xyz/book-5064.html https://aabook.xyz/read-327141.html 327141 连载中 215021 3573 2024-10-06 21:09:04 创建时间 2023-12-28 23:12:21
|
||||
59 异能 赘婿的荣耀 棺材里的笑声 https://aabook.xyz/book-5290.html https://aabook.xyz/read-346766.html 346766 连载中 1877562 617317 2024-10-06 21:06:28 创建时间 2024-09-15 14:31:39
|
||||
5300
scripts/aabook/meta/aabook_details_all.txt
Normal file
5300
scripts/aabook/meta/aabook_details_all.txt
Normal file
File diff suppressed because it is too large
Load Diff
5320
scripts/aabook/meta/aabook_list_2000-01-01.txt
Normal file
5320
scripts/aabook/meta/aabook_list_2000-01-01.txt
Normal file
File diff suppressed because it is too large
Load Diff
59
scripts/aabook/meta/aabook_list_2024-10-01.txt
Normal file
59
scripts/aabook/meta/aabook_list_2024-10-01.txt
Normal file
@ -0,0 +1,59 @@
|
||||
1 [都市] 闺蜜的救赎 kaolabaobao1001 583 2024-11-14 21:56:33 https://aabook.xyz/book-5343.html
|
||||
2 [武侠] 邪不胜正 路人甲乙丙丁戊/狂加班之人 251 2024-11-14 21:42:53 https://aabook.xyz/book-5342.html
|
||||
3 [校园] 美母为妻 带刀侍卫 78055 2024-11-04 23:43:44 https://aabook.xyz/book-5341.html
|
||||
4 [单篇] 我和姐姐 itaylo 742 2024-11-04 21:34:53 https://aabook.xyz/book-5340.html
|
||||
5 [都市] 娇妻美妾任君尝 红莲玉露 244460 2024-11-04 21:25:45 https://aabook.xyz/book-222.html
|
||||
6 [都市] 人妻情欲日记之女律师李佳芯的淫乱回忆 joker94756978 2289 2024-11-04 19:06:40 https://aabook.xyz/book-5339.html
|
||||
7 [单篇] 初恋女友变成了人妻但是被我夺了回来 悠夏 1184 2024-11-03 22:53:56 https://aabook.xyz/book-5338.html
|
||||
8 [都市] 所谓伊人 轻狂似少年 2614 2024-11-03 22:15:15 https://aabook.xyz/book-3408.html
|
||||
9 [网游] 网游之代练传说时停系统 怪奇牛头纯爱萝卜娘 3296 2024-11-03 21:20:14 https://aabook.xyz/book-5034.html
|
||||
10 [校园] 问鼎 葬歌 6431 2024-11-03 21:15:07 https://aabook.xyz/book-5206.html
|
||||
11 [都市] 娇妻臣服 兮夜 16889 2024-11-03 21:04:53 https://aabook.xyz/book-5337.html
|
||||
12 [单篇] 来自于的妹妹的霸凌 art_dino 1593 2024-11-03 12:14:27 https://aabook.xyz/book-5336.html
|
||||
13 [异能] 重生与系统 小火龙 30285 2024-11-03 01:07:39 https://aabook.xyz/book-4958.html
|
||||
14 [同人] 重生之官路商途(同人加色修改) 阿美 7252 2024-11-02 22:27:10 https://aabook.xyz/book-5335.html
|
||||
15 [校园] 我把美艳的妻子亲手推到了儿子的怀中 夜渐沉沦 46494 2024-11-02 00:49:14 https://aabook.xyz/book-5334.html
|
||||
16 [都市] 缘分 zebroid2 4210 2024-10-30 00:54:34 https://aabook.xyz/book-5333.html
|
||||
17 [校园] 绿意渐浓 金木 5307 2024-10-29 23:07:11 https://aabook.xyz/book-5332.html
|
||||
18 [都市] 40岁爱妻的韵味 多情应笑我 26310 2024-10-29 00:02:24 https://aabook.xyz/book-5331.html
|
||||
19 [校园] 摄母情事 Gstar111 9858 2024-10-28 23:44:56 https://aabook.xyz/book-5330.html
|
||||
20 [校园] 老师好 毒谷药王 3984 2024-10-28 23:16:12 https://aabook.xyz/book-5329.html
|
||||
21 [单篇] 和妈妈的房车性爱 主治大夫 1598 2024-10-28 23:08:40 https://aabook.xyz/book-5328.html
|
||||
22 [都市] 我的熟女娇妻 天堂小路 4263 2024-10-28 23:04:01 https://aabook.xyz/book-4569.html
|
||||
23 [穿越] 无限之生化崛起 三年又三年 47862 2024-10-28 23:01:49 https://aabook.xyz/book-4967.html
|
||||
24 [言情] 喜欢你,和她们 我们的幻想乡 8794 2024-10-28 22:49:12 https://aabook.xyz/book-5084.html
|
||||
25 [异能] 我有九千万亿舔狗金(系统帮我睡女人) 有何不可 120227 2024-10-28 22:43:18 https://aabook.xyz/book-4858.html
|
||||
26 [言情] 夜昙昼颜 sandian 3062 2024-10-28 22:29:31 https://aabook.xyz/book-5327.html
|
||||
27 [都市] 帮助妻子和女儿寻找属于她们自己的快乐 cahl 9946 2024-10-27 22:49:10 https://aabook.xyz/book-5326.html
|
||||
28 [异能] 邪月神女 平行线 1859 2024-10-27 22:14:01 https://aabook.xyz/book-4619.html
|
||||
29 [同人] 夜天子(加色版) weilehaowan 1692 2024-10-27 20:04:02 https://aabook.xyz/book-4926.html
|
||||
30 [仙侠] 御仙 清风霜雪 7078 2024-10-27 20:00:24 https://aabook.xyz/book-5303.html
|
||||
31 [都市] 律师女友的淫欲正义 深夜渔夫 19723 2024-10-27 19:39:49 https://aabook.xyz/book-5325.html
|
||||
32 [言情] 野火 夏多布里昂 8048 2024-10-26 20:01:50 https://aabook.xyz/book-5296.html
|
||||
33 [单篇] 补习:将极品校花母女征服胯下 烈焰狂徒 4087 2024-10-26 19:32:17 https://aabook.xyz/book-5324.html
|
||||
34 [校园] 掌中的美母 幕卷 52218 2024-10-26 15:56:58 https://aabook.xyz/book-4751.html
|
||||
35 [异能] 最渣之男穿越日本(渣男日娱) 黑色蓝调 3524 2024-10-26 15:04:55 https://aabook.xyz/book-4055.html
|
||||
36 [同人] NTR大作战 佚名 8429 2024-10-26 14:40:48 https://aabook.xyz/book-4178.html
|
||||
37 [官场] 警花娇妻的蜕变 小刀 10925 2024-10-26 00:12:17 https://aabook.xyz/book-3496.html
|
||||
38 [都市] 颖异的大冲 路过赏雪 1434 2024-10-20 00:40:19 https://aabook.xyz/book-4881.html
|
||||
39 [玄幻] 超越游戏 someguy1 3677 2024-10-20 00:32:00 https://aabook.xyz/book-3343.html
|
||||
40 [言情] 禁忌沉沦 周扶妖 11579 2024-10-14 00:05:23 https://aabook.xyz/book-5323.html
|
||||
41 [言情] 云之逸(性瘾的身体,性冷淡的我) 廖小姐的狗 7012 2024-10-13 23:52:11 https://aabook.xyz/book-5322.html
|
||||
42 [都市] 女友淫情 希希德 23144 2024-10-13 22:59:38 https://aabook.xyz/book-5321.html
|
||||
43 [都市] 龙飞凤舞(大战熟女记、欲肉龙凤缘) 佚名 147073 2024-10-13 19:59:04 https://aabook.xyz/book-255.html
|
||||
44 [言情] 【前世情人】 夭夭 1410 2024-10-13 19:55:49 https://aabook.xyz/book-5285.html
|
||||
45 [都市] 我爱邻家小仙女 紫禁云生 39942 2024-10-13 18:22:50 https://aabook.xyz/book-1015.html
|
||||
46 [都市] 校花女友琳琳的故事 qiyuan0911 3312 2024-10-13 18:02:21 https://aabook.xyz/book-4856.html
|
||||
47 [校园] 柔情母上 一帘风月 14843 2024-10-13 15:44:09 https://aabook.xyz/book-4532.html
|
||||
48 [武侠] 碧魔录 STURMGEIST 9276 2024-10-13 15:21:28 https://aabook.xyz/book-4673.html
|
||||
49 [同人] 纯爱后宫港区 想要一树梨花压海棠 1546 2024-10-13 15:16:13 https://aabook.xyz/book-4966.html
|
||||
50 [异能] 催眠清规 ttxshhxx(原文:爱欲ほね) 3956 2024-10-13 15:12:58 https://aabook.xyz/book-2669.html
|
||||
51 [同人] 父母爱情 往事怎能如烟 14390 2024-10-13 13:59:21 https://aabook.xyz/book-5320.html
|
||||
52 [言情] 挥发的爱 爱吃火锅 2746 2024-10-13 13:28:45 https://aabook.xyz/book-5297.html
|
||||
53 [都市] 妹妹日记浮世篇 人面春风 7476 2024-10-11 23:32:37 https://aabook.xyz/book-5295.html
|
||||
54 [惊悚] 末世逃缘 五颜 3081 2024-10-11 23:29:53 https://aabook.xyz/book-5308.html
|
||||
55 [都市] 那山,那人,那情 dearnyan 13224 2024-10-11 23:26:43 https://aabook.xyz/book-3786.html
|
||||
56 [武侠] 女侠们的肉玩具 佚名 11082 2024-10-11 23:18:14 https://aabook.xyz/book-4671.html
|
||||
57 [仙侠] 神女逍遥录 Kom-凡 33324 2024-10-11 23:14:05 https://aabook.xyz/book-5316.html
|
||||
58 [同人] 壮志凌云 孤独的大硬 3573 2024-10-06 21:09:04 https://aabook.xyz/book-5064.html
|
||||
59 [异能] 赘婿的荣耀 棺材里的笑声 617518 2024-10-06 21:06:28 https://aabook.xyz/book-5290.html
|
||||
64
scripts/aabook/tools_diff.py
Normal file
64
scripts/aabook/tools_diff.py
Normal file
@ -0,0 +1,64 @@
|
||||
import sys
|
||||
import csv
|
||||
|
||||
def compare_files(file_a, file_b):
|
||||
"""
|
||||
比较两个文件,并输出差异
|
||||
|
||||
Args:
|
||||
file_a (str): 文件 A 的路径
|
||||
file_b (str): 文件 B 的路径
|
||||
"""
|
||||
|
||||
try:
|
||||
# 创建输出文件
|
||||
with open('need_update.txt', 'w', newline='') as f_update, \
|
||||
open('old_only.txt', 'w', newline='') as f_b_only:
|
||||
writer_update = csv.writer(f_update, delimiter='\t')
|
||||
writer_b_only = csv.writer(f_b_only, delimiter='\t')
|
||||
|
||||
# 读取文件 A
|
||||
data_a = {} # 使用字典存储,key为开始链接编码,value为整行数据
|
||||
with open(file_a, 'r') as f:
|
||||
reader = csv.reader(f, delimiter='\t')
|
||||
for row in reader:
|
||||
data_a[row[6]] = row
|
||||
|
||||
# 读取文件 B
|
||||
data_b = {}
|
||||
with open(file_b, 'r') as f:
|
||||
reader = csv.reader(f, delimiter='\t')
|
||||
for row in reader:
|
||||
data_b[row[6]] = row
|
||||
|
||||
# 比较并输出
|
||||
for key, value in data_a.items():
|
||||
if key not in data_b:
|
||||
writer_update.writerow(value)
|
||||
else:
|
||||
if abs(int(value[8]) - int(data_b[key][8])) > 100:
|
||||
writer_update.writerow(value)
|
||||
|
||||
for key, value in data_b.items():
|
||||
if key not in data_a:
|
||||
writer_b_only.writerow(value)
|
||||
|
||||
except FileNotFoundError:
|
||||
print(f"文件不存在: {file_a} 或 {file_b}")
|
||||
except csv.Error as e:
|
||||
print(f"CSV文件读取错误: {e}")
|
||||
except Exception as e:
|
||||
print(f"发生未知错误: {e}")
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) != 3:
|
||||
print("Usage: python script.py file_a file_b")
|
||||
print("file_a : 新下载的列表,通常按照更新时间排序")
|
||||
print("file_b : 以前下载的列表")
|
||||
print("输出 need_update.txt : 需要更新的列表")
|
||||
print("输出 old_only.txt : 仅在较早下载列表中的行,通常不应该有")
|
||||
sys.exit(1)
|
||||
|
||||
file_a = sys.argv[1]
|
||||
file_b = sys.argv[2]
|
||||
compare_files(file_a, file_b)
|
||||
66
scripts/aabook/tools_dir.py
Normal file
66
scripts/aabook/tools_dir.py
Normal file
@ -0,0 +1,66 @@
|
||||
import os
|
||||
import shutil
|
||||
import argparse
|
||||
import re
|
||||
|
||||
def flatten_directory(source_dir):
|
||||
"""
|
||||
将指定目录下的所有txt文件移动到当前目录并重命名
|
||||
|
||||
Args:
|
||||
source_dir: 源目录
|
||||
"""
|
||||
|
||||
for root, dirs, files in os.walk(source_dir):
|
||||
for file in files:
|
||||
if file.endswith('.txt'):
|
||||
src_file = os.path.join(root, file)
|
||||
dst_file = os.path.join(source_dir, f"[{os.path.basename(root)}]_{file}")
|
||||
print(f'move {src_file} {dst_file}')
|
||||
shutil.move(src_file, dst_file)
|
||||
|
||||
def unflatten_directory(source_dir):
|
||||
"""
|
||||
将当前目录下的txt文件按照文件名中的目录信息进行分类
|
||||
|
||||
Args:
|
||||
source_dir: 源目录
|
||||
"""
|
||||
|
||||
for file in os.listdir(source_dir):
|
||||
if file.endswith('.txt'):
|
||||
#dir_name, filename = file.split(']', 1)[0][1:], file.split(']', 1)[1][1:]
|
||||
# 方法二:使用正则表达式
|
||||
match = re.match(r"\[(.*)]_(.*)", file)
|
||||
if match:
|
||||
dir_name, filename = match.groups()
|
||||
|
||||
dst_dir = os.path.join(source_dir, dir_name)
|
||||
dst_file = os.path.join(dst_dir, filename)
|
||||
src_file = os.path.join(source_dir, file)
|
||||
|
||||
# 创建目标目录
|
||||
os.makedirs(dst_dir, exist_ok=True)
|
||||
|
||||
# 移动文件
|
||||
print(f'move {src_file} {dst_file}')
|
||||
shutil.move(src_file, dst_file)
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(description='Flatten or unflatten a directory of txt files')
|
||||
parser.add_argument('-f', '--flatten', action='store_true', help='Flatten the directory')
|
||||
parser.add_argument('-u', '--unflatten', action='store_true', help='Unflatten the directory')
|
||||
parser.add_argument('directory', help='The directory to process')
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.flatten and args.unflatten:
|
||||
print("Please choose either --flatten or --unflatten, not both.")
|
||||
exit(1)
|
||||
|
||||
if args.flatten:
|
||||
flatten_directory(args.directory)
|
||||
elif args.unflatten:
|
||||
unflatten_directory(args.directory)
|
||||
else:
|
||||
print("Please specify either --flatten or --unflatten.")
|
||||
exit(1)
|
||||
61
scripts/aabook/tools_other.py
Normal file
61
scripts/aabook/tools_other.py
Normal file
@ -0,0 +1,61 @@
|
||||
import os
|
||||
|
||||
def rename_files(list_file, data_dir):
|
||||
"""
|
||||
重命名文件
|
||||
|
||||
Args:
|
||||
list_file: 存放 novel_id 和 novel_name 的文件路径
|
||||
data_dir: 需要重命名文件的目录
|
||||
"""
|
||||
|
||||
# 读取列表文件,构建一个字典,key为novel_name,value为novel_id
|
||||
id_dict = {}
|
||||
with open(list_file, 'r', encoding='utf-8') as f:
|
||||
for line in f:
|
||||
novel_id, novel_name = line.strip().split('\t')
|
||||
id_dict[novel_name] = novel_id
|
||||
|
||||
# 遍历 data 目录下的所有文件
|
||||
for root, dirs, files in os.walk(data_dir):
|
||||
for file in files:
|
||||
if file.endswith('.txt'):
|
||||
# 获取文件名(不含扩展名)
|
||||
novel_name = file[:-4]
|
||||
# 判断文件名是否在字典中
|
||||
if novel_name in id_dict:
|
||||
old_file = os.path.join(root, file)
|
||||
new_file = os.path.join(root, f"{id_dict[novel_name]}_{novel_name}.txt")
|
||||
os.rename(old_file, new_file)
|
||||
print(f"Renamed {old_file} to {new_file}")
|
||||
|
||||
|
||||
def check_and_record(data_dir, search_string, output_file):
|
||||
"""
|
||||
检查文件内容并记录
|
||||
|
||||
Args:
|
||||
data_dir: 需要检查的目录
|
||||
search_string: 需要搜索的字符串
|
||||
output_file: 记录结果的文件
|
||||
"""
|
||||
|
||||
with open(output_file, 'w', encoding='utf-8') as output:
|
||||
for root, dirs, files in os.walk(data_dir):
|
||||
for file in files:
|
||||
if file.endswith('.txt'):
|
||||
novel_name = file[:-4]
|
||||
file_path = os.path.join(root, file)
|
||||
with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:
|
||||
if search_string in f.read():
|
||||
output.write(novel_name + '\n')
|
||||
print(f"need update: {novel_name}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# rename_files("aabook_down_list.txt", "data")
|
||||
|
||||
data_dir = "data"
|
||||
search_string = "2005-2024 疯情书库"
|
||||
output_file = "aabook_need_update.txt"
|
||||
check_and_record(data_dir, search_string, output_file)
|
||||
Reference in New Issue
Block a user