JSON合集.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // http://localhost:5757/parse/JSON合集?url=https://v.qq.com/x/cover/mzc00200vkqr54u/v4100qp69zl.html
  2. const {requestJson} = $.require('./_lib.request.js');
  3. const {getRandomFromList, shuffleArray} = $.require('./_lib.random.js');
  4. const jx = {
  5. type: 3,
  6. ext: {
  7. 'flag': [
  8. "qiyi",
  9. "imgo",
  10. "爱奇艺",
  11. "奇艺",
  12. "qq",
  13. "qq 预告及花絮",
  14. "腾讯",
  15. "youku",
  16. "优酷",
  17. "pptv",
  18. "PPTV",
  19. "letv",
  20. "乐视",
  21. "leshi",
  22. "mgtv",
  23. "芒果",
  24. "sohu",
  25. "xigua",
  26. "fun",
  27. "风行"
  28. ]
  29. },
  30. }
  31. async function lazy(input, params) {
  32. log('input:', input);
  33. let parse_list = [
  34. "https://zy.qiaoji8.com/gouzi.php?url=",
  35. "http://1.94.221.189:88/algorithm.php?url="
  36. ]
  37. let realUrls = [];
  38. const tasks = parse_list.map((_url, index) => {
  39. let task_id = _url + input;
  40. return {
  41. func: async function parseTask({_url, task_id}) {
  42. let json = await requestJson(task_id);
  43. let url = pjfh(json, '$.url');
  44. if (!json.code || json.code === 200 || ![-1, 404, 403].includes(json.code)) {
  45. if (url) {
  46. let lastIndex = url.lastIndexOf('/');
  47. let lastLength = url.slice(lastIndex + 1).length;
  48. // log('lastLength:', lastLength);
  49. if (lastLength > 10) {
  50. // log(`code:${json.code} , url:${json.url}`);
  51. return json
  52. }
  53. }
  54. throw new Error(`${_url} 解析 ${input} 失败: ${JSON.stringify(json)}`);
  55. } else {
  56. throw new Error(`${_url} 解析 ${input} 失败`);
  57. }
  58. },
  59. param: {_url, task_id},
  60. id: task_id
  61. }
  62. });
  63. const listener = {
  64. func: (param, id, error, result) => {
  65. if (error) {
  66. // console.error(`Task ${id} failed with error: ${error.message}`);
  67. } else if (result) {
  68. // log(`Task ${id} succeeded with result: `, result);
  69. realUrls.push({original: id, ...result});
  70. }
  71. // 中断逻辑示例
  72. if (param.stopOnFirst && result && result.url) {
  73. return 'break';
  74. }
  75. },
  76. param: {stopOnFirst: true},
  77. }
  78. await batchExecute(tasks, listener, 1);
  79. return realUrls[0]
  80. }