ali.js 2.8 KB

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