ali.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /*
  2. * @Author: samples jadehh@live.com
  3. * @Date: 2023-12-14 11:03:04
  4. * @LastEditors: samples jadehh@live.com
  5. * @LastEditTime: 2023-12-14 11:03:04
  6. * @FilePath: lib/ali.js
  7. * @Description: 阿里云盘Spider公共
  8. */
  9. import {
  10. getVod,
  11. initSome,
  12. clearFile,
  13. playerContent,
  14. playerContentByFlag,
  15. setShareId,
  16. setToken,
  17. getFileByShare, getTempFileId
  18. } from './ali_api.js';
  19. import {JadeLogging} from "./log.js";
  20. const JadeLog = new JadeLogging("阿里云盘")
  21. async function initAli(token) {
  22. await initSome();
  23. await setToken(token);
  24. await getTempFileId();
  25. // await clearFile();
  26. await JadeLog.info("阿里云盘初始化完成", true)
  27. }
  28. function getShareId(share_url) {
  29. let patternAli = /https:\/\/www\.alipan\.com\/s\/([^\\/]+)(\/folder\/([^\\/]+))?|https:\/\/www\.aliyundrive\.com\/s\/([^\\/]+)(\/folder\/([^\\/]+))?/
  30. let matches = patternAli.exec(share_url)
  31. const filteredArr = matches.filter(item => item !== undefined);
  32. if (filteredArr.length > 1) {
  33. return filteredArr[1]
  34. } else {
  35. return ""
  36. }
  37. }
  38. async function detailContent(share_url_list, type_name = "电影") {
  39. try {
  40. let video_items = [], sub_items = []
  41. for (const share_url of share_url_list) {
  42. let share_id = getShareId(share_url)
  43. let share_token = await setShareId(share_id)
  44. if (share_token !== undefined) {
  45. await getFileByShare(share_token, share_url, video_items, sub_items)
  46. }
  47. }
  48. if (video_items.length > 0) {
  49. await JadeLog.info(`获取播放链接成功,分享链接为:${share_url_list.join("\t")}`)
  50. } else {
  51. await JadeLog.error(`获取播放链接失败,检查分享链接为:${share_url_list.join("\t")}`)
  52. }
  53. return getVod(video_items, sub_items, type_name)
  54. } catch (e) {
  55. await JadeLog.error('获取阿里视频失败,失败原因为:' + e.message + ' 行数为:' + e.lineNumber);
  56. }
  57. }
  58. async function playContent(flag, id, flags) {
  59. if (flags.length > 0) {
  60. await JadeLog.info(`准备播放,播放类型为:${flag},播放文件Id为:${id},播放所有类型为:${flags.join("")}`)
  61. } else {
  62. await JadeLog.info(`准备播放,播放类型为:${flag},播放文件Id为:${id},播放所有类型为:${flags.join("")}`)
  63. }
  64. let file_id_list = id.split("+")
  65. let share_id = file_id_list[1]
  66. let file_id = file_id_list[0]
  67. let share_token = file_id_list[2]
  68. return flag === "原画" ? await playerContent(file_id, share_id, share_token) : await playerContentByFlag(file_id, flag, share_id, share_token);
  69. }
  70. export {
  71. initAli,
  72. detailContent,
  73. playContent
  74. };