123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- const axios = require('axios');
- const fetch = require('node-fetch'); // Node.js 18以下版本需要安装 node-fetch
- const mysql = require('mysql2/promise');
- const config = require('../etc/config.json');
- const tools = require('../tools');
- let page_size = 50
- const dbConfig = config.isDebug?config.debug_mysql:config.release_mysql
- async function fetchSeriesList(page_index,last_d) {
- const cookieString = [
- 'store-region=cn-gd',
- 'passport_csrf_token=777699e0a85a3f179b3d49d1522f6534',
- 'sessionid=095d62d09558ad4413432fcd6e6f9f83',
- 'uid_tt=3d5c6ebd1397d1c638878c38a80b230f',
- 'csrf_session_id=cdc5b94ddec13774e679878ba18e230d'
- ].join('; ');
- const connection = await mysql.createConnection({
- ...dbConfig,
- multipleStatements: true
- });
-
- // let [rows] = await connection.execute("SELECT * FROM fq_dj_lib ORDER BY publish_time DESC LIMIT 1")
- // let last_d = rows[0].publish_time
- const url = `https://www.changdunovel.com/novelsale/distributor/content/series/list/v1?permission_statuses=3%2C4&delivery_status=1&sort_type=1&sort_field=3&page_index=${page_index}&page_size=${page_size}&msToken=g9s9IjJh6cjk2VuAxnwUe04TggCtc2fErgLwbMEqiBaAoIt4cA4sGFc2E31QeiUYL4zEsE3I1FgMqwWSReCk8Di4EqVYoHo5xVYjPzdNYEuoGeD-fimIYOAVN7SFqLhnpgT5TpG92rQk78-QLLhD_y47q0rcDZD0eS_FudHEl8SthA%3D%3D&a_bogus=myU5hqXLQp5jCplb8csT9UFUiHEMNTuyIlidSyt9SxxzThMaeuenqradcoLsmRNWUWpPqLp7qEa%2FJVdcKKwTZy5kqmZfSphjlUQAIXfLZHpsGGkhI16NCESEqvsnUATYTK94i3iXAt0e2g53E15hA2OyeKFP58bM%2F3N6dr4l9x2Bg4iYro2ESxR%3D`;
- const headers = {
- "accept": "application/json",
- "appid": "30008807",
- "apptype": "4",
- "distributorid": "1823764273348612",
- "cookie": cookieString,
- "Referer": "https://www.changdunovel.com/sale/short-play/list"
- }
-
- try {
- const response = await axios.get(url, { headers });
- if(response.data.code!=0){
- console.error("错误请求")
- return 0
- }
- let list = response.data.data.data
- let num = await insertDB(last_d,connection,list)
- connection.end()
- if(num>0){
- return 1
- }else{
- return 0
- }
- } catch (error) {
- connection.end()
- console.error('Error fetching series list:', error);
- }
- }
- async function insertDB(last_d,connection,data) {
- try {
- // await processVideoTitles(connection, data.map(item => item.title));
- console.log("data:",data)
- let new_list = []
- for (let index = 0; index < data.length; index++) {
- const element = data[index];
- if(tools.diffTime(last_d,element.publish_time)==element.publish_time){
- new_list.push(element)
- }
- }
- if(new_list.length<=0){
- return 0
- }
- // 转换时间戳为MySQL datetime格式
- const values = new_list.map(item => [
- item.book_id,
- tools.getNewBookName(item.series_name),
- item.amount_limit_status,
- item.book_pool,
- item.category,
- item.category_text,
- item.creation_status,
- item.delivery_status,
- item.episode_amount,
- item.episode_price,
- item.free_episode_count,
- item.latest_update_time,
- item.need_show_publish_tag,
- item.on_shelf_time,
- item.original_thumb_url,
- item.permission_status,
- item.price_changed,
- item.publish_time,
- item.thumb_uri,
- item.thumb_url,
- item.wx_audit_status,
- item.wx_is_reject
- ]);
- let table_name = "fq_dj_lib"
- const insertSQL = `
- INSERT INTO ${table_name}
- (book_id, series_name, amount_limit_status, book_pool, category,
- category_text, creation_status, delivery_status, episode_amount,
- episode_price, free_episode_count, latest_update_time, need_show_publish_tag,
- on_shelf_time, original_thumb_url, permission_status, price_changed,
- publish_time, thumb_uri,thumb_url,wx_audit_status,wx_is_reject)
- VALUES ?
- ON DUPLICATE KEY UPDATE
- book_id = VALUES(book_id)
- `;
-
- await connection.query(insertSQL, [values]);
- console.log(`成功插入 ${values.length} 条记录到表 ${table_name}`);
- return new_list.length
- } catch (error) {
- console.error('处理消息失败:', error);
- return 0
- }
- }
- module.exports = {fetchSeriesList};
|