cloud.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /**
  2. * File: h:\PycharmProjects\Github\TVSpider\lib\cloud.js
  3. * Project: h:\PycharmProjects\Github\TVSpider
  4. * Created Date: Tuesday, May 21st 2024, 2:01:09 pm
  5. * Author: jade
  6. * -----
  7. * Last Modified: Tue May 21 2024
  8. * Modified By: jade
  9. * -----
  10. * Copyright (c) 2024 samples
  11. * ------------------------------------
  12. * Javascript will save your soul!
  13. */
  14. import {initAli,detailContentAli,playContentAli, aliPlayFormatList,aliName} from "./ali.js"
  15. import { initQuark,detailContentQuark,playContentQuark,quarkPlayFormatList,quarkName,getQuarkHeaders} from "./quark.js"
  16. import * as Utils from "./utils.js";
  17. import {_} from "../lib/cat.js";
  18. async function initCloud(cfg){
  19. initAli(cfg["aliToken"])
  20. initQuark(cfg["quarkCookie"])
  21. }
  22. async function detailContent(share_url_list,type_name="电影"){
  23. let ali_share_url_list = [],quark_share_url_list = []
  24. const playVod = {}
  25. for (const shareUrl of share_url_list){
  26. let aliMatches = shareUrl.match(Utils.patternAli);
  27. if (!_.isEmpty(aliMatches)) {
  28. ali_share_url_list.push(aliMatches[1])
  29. }
  30. let quarkMatches = shareUrl.match(Utils.patternQuark);
  31. if (!_.isEmpty(quarkMatches)){
  32. quark_share_url_list.push(quarkMatches[1])
  33. }
  34. }
  35. let aliItems = await detailContentAli(ali_share_url_list)
  36. let quarkItems = await detailContentQuark(quark_share_url_list)
  37. await getVod(aliPlayFormatList,aliName,playVod,aliItems.video_items,aliItems.sub_items,type_name)
  38. await getVod(quarkPlayFormatList,quarkName,playVod,quarkItems.video_items,quarkItems.sub_items,type_name)
  39. return playVod
  40. }
  41. async function getVod(play_foramt_list,cloud_name,playVod,video_item_list, sub_item_list, type_name) {
  42. if (video_item_list.length ==0){
  43. return
  44. }
  45. for (let i=0; i<video_item_list.slice(-1)[0].shareIndex;i++){
  46. for (let index = 0; index < play_foramt_list.length; index++) {
  47. let vodItems = []
  48. for (const video_item of video_item_list) {
  49. if (video_item.shareIndex === i + 1){
  50. vodItems.push( video_item.getEpisodeUrl(type_name)+ findSubs(video_item.getName(), sub_item_list)); }
  51. }
  52. playVod[`${cloud_name}-${i+1}-${play_foramt_list[index]}`] = vodItems.join("#")
  53. }
  54. }
  55. }
  56. //字幕匹配
  57. function pair(name, item_list, sub_item_list) {
  58. for (const item of item_list) {
  59. const sub_name = Utils.removeExt(item.getName()).toLowerCase();
  60. if (name.indexOf(sub_name) > -1 || sub_name.indexOf(name) > -1) {
  61. sub_item_list.push(item);
  62. }
  63. }
  64. }
  65. //找出所有字幕
  66. function findSubs(name, item_list) {
  67. let sub_item_list = [];
  68. pair(Utils.removeExt(name).toLowerCase(), item_list, sub_item_list);
  69. if (sub_item_list.length === 0) {
  70. for (const item of item_list) {
  71. sub_item_list.push(item);
  72. }
  73. }
  74. let sub_str = "";
  75. for (const item of sub_item_list) {
  76. sub_str += "+" + Utils.removeExt(item.getName()) + "@@@" + item.getExt() + "@@@" + item.getFileId();
  77. }
  78. return sub_str;
  79. }
  80. async function playContent(flag,id,flags){
  81. if (flag.indexOf(aliName) > -1) {
  82. return await playContentAli(flag, id, flags)
  83. }else if (flag.indexOf(quarkName) > -1){
  84. return await playContentQuark(flag,id,flags)
  85. }
  86. }
  87. function getHeaders(flag){
  88. if (flag.indexOf(aliName) > -1) {
  89. return {}
  90. }else if (flag.indexOf(quarkName) > -1){
  91. return getQuarkHeaders()
  92. }
  93. }
  94. export {initCloud,detailContent,playContent,getHeaders,aliName,quarkName}