update_lib.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. const axios = require('axios');
  2. const fetch = require('node-fetch'); // Node.js 18以下版本需要安装 node-fetch
  3. const mysql = require('mysql2/promise');
  4. const config = require('../etc/config.json');
  5. const tools = require('../tools');
  6. let page_size = 50
  7. const dbConfig = config.isDebug?config.debug_mysql:config.release_mysql
  8. async function fetchSeriesList(page_index,last_d) {
  9. const cookieString = [
  10. 'store-region=cn-gd',
  11. 'passport_csrf_token=777699e0a85a3f179b3d49d1522f6534',
  12. 'sessionid=095d62d09558ad4413432fcd6e6f9f83',
  13. 'uid_tt=3d5c6ebd1397d1c638878c38a80b230f',
  14. 'csrf_session_id=cdc5b94ddec13774e679878ba18e230d'
  15. ].join('; ');
  16. const connection = await mysql.createConnection({
  17. ...dbConfig,
  18. multipleStatements: true
  19. });
  20. // let [rows] = await connection.execute("SELECT * FROM fq_dj_lib ORDER BY publish_time DESC LIMIT 1")
  21. // let last_d = rows[0].publish_time
  22. 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`;
  23. const headers = {
  24. "accept": "application/json",
  25. "appid": "30008807",
  26. "apptype": "4",
  27. "distributorid": "1823764273348612",
  28. "cookie": cookieString,
  29. "Referer": "https://www.changdunovel.com/sale/short-play/list"
  30. }
  31. try {
  32. const response = await axios.get(url, { headers });
  33. if(response.data.code!=0){
  34. console.error("错误请求")
  35. return 0
  36. }
  37. let list = response.data.data.data
  38. let num = await insertDB(last_d,connection,list)
  39. connection.end()
  40. if(num>0){
  41. return 1
  42. }else{
  43. return 0
  44. }
  45. } catch (error) {
  46. connection.end()
  47. console.error('Error fetching series list:', error);
  48. }
  49. }
  50. async function insertDB(last_d,connection,data) {
  51. try {
  52. // await processVideoTitles(connection, data.map(item => item.title));
  53. console.log("data:",data)
  54. let new_list = []
  55. for (let index = 0; index < data.length; index++) {
  56. const element = data[index];
  57. if(tools.diffTime(last_d,element.publish_time)==element.publish_time){
  58. new_list.push(element)
  59. }
  60. }
  61. if(new_list.length<=0){
  62. return 0
  63. }
  64. // 转换时间戳为MySQL datetime格式
  65. const values = new_list.map(item => [
  66. item.book_id,
  67. tools.getNewBookName(item.series_name),
  68. item.amount_limit_status,
  69. item.book_pool,
  70. item.category,
  71. item.category_text,
  72. item.creation_status,
  73. item.delivery_status,
  74. item.episode_amount,
  75. item.episode_price,
  76. item.free_episode_count,
  77. item.latest_update_time,
  78. item.need_show_publish_tag,
  79. item.on_shelf_time,
  80. item.original_thumb_url,
  81. item.permission_status,
  82. item.price_changed,
  83. item.publish_time,
  84. item.thumb_uri,
  85. item.thumb_url,
  86. item.wx_audit_status,
  87. item.wx_is_reject
  88. ]);
  89. let table_name = "fq_dj_lib"
  90. const insertSQL = `
  91. INSERT INTO ${table_name}
  92. (book_id, series_name, amount_limit_status, book_pool, category,
  93. category_text, creation_status, delivery_status, episode_amount,
  94. episode_price, free_episode_count, latest_update_time, need_show_publish_tag,
  95. on_shelf_time, original_thumb_url, permission_status, price_changed,
  96. publish_time, thumb_uri,thumb_url,wx_audit_status,wx_is_reject)
  97. VALUES ?
  98. ON DUPLICATE KEY UPDATE
  99. book_id = VALUES(book_id)
  100. `;
  101. await connection.query(insertSQL, [values]);
  102. console.log(`成功插入 ${values.length} 条记录到表 ${table_name}`);
  103. return new_list.length
  104. } catch (error) {
  105. console.error('处理消息失败:', error);
  106. return 0
  107. }
  108. }
  109. module.exports = {fetchSeriesList};