texiao.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. const fs = require('fs').promises;
  2. const path = require('path');
  3. const { v4: uuidv4 } = require('uuid');
  4. /**
  5. * 读取当前目录下所有的 .json 文件并返回其内容的数组
  6. * @returns {Promise<Array<Object>>} 包含所有 JSON 文件内容的数组
  7. */
  8. async function readAllJsonFiles() {
  9. try {
  10. // 获取当前脚本目录路径
  11. const directoryPath = __dirname;
  12. // 读取目录内容
  13. const files = await fs.readdir(directoryPath);
  14. // 过滤出 .json 文件
  15. const jsonFiles = files.filter(file => path.extname(file).toLowerCase() === '.json');
  16. // 创建一个读取 JSON 文件的 Promise 数组
  17. const readPromises = jsonFiles.map(async (file) => {
  18. const filePath = path.join(directoryPath, file);
  19. // 异步读取 JSON 文件
  20. const data = await fs.readFile(filePath, 'utf8');
  21. return JSON.parse(data);
  22. });
  23. // 等待所有 JSON 文件读取完成并返回内容数组
  24. return await Promise.all(readPromises);
  25. } catch (err) {
  26. console.error("Error reading JSON files:", err);
  27. throw err;
  28. }
  29. }
  30. //mode = 0 非vip mode = 1 vip mode = 2 all
  31. async function get_all_texiao_Effects(mode=0){
  32. let vip_effects = []
  33. let effects = []
  34. const contents = await readAllJsonFiles();
  35. for (let content of contents) {
  36. let tmp_effects = content.data.CategoryEffects.Effects;
  37. for (let effect of tmp_effects) {
  38. let adjust_params = []
  39. if(effect.SdkExtra){
  40. adjust_params = JSON.parse(effect.SdkExtra).setting.effect_adjust_params
  41. }
  42. let tmp = {
  43. "adjust_params": adjust_params,
  44. "algorithm_artifact_path": "",
  45. "apply_target_type": 2,
  46. "apply_time_range": null,
  47. "category_id": "",
  48. "category_name": "",
  49. "common_keyframes": [],
  50. "disable_effect_faces": [],
  51. "effect_id": effect.EffectId,
  52. "formula_id": "",
  53. "id": uuidv4(),
  54. "name": effect.Name,
  55. "path": "",
  56. "platform": "all",
  57. "render_index": 0,
  58. "request_id": "",
  59. "resource_id": effect.ResourceId,
  60. "source_platform": 0,
  61. "time_range": null,
  62. "track_render_index": 0,
  63. "type": "video_effect",
  64. "value": 1.0,
  65. "version": "",
  66. "icon_url":effect.IconUrl.UrlList[0]
  67. }
  68. let extra = JSON.parse(effect.Extra)
  69. if (extra.is_vip) {
  70. tmp.is_vip = 1
  71. vip_effects.push(tmp)
  72. } else {
  73. tmp.is_vip = 0
  74. effects.push(tmp)
  75. }
  76. }
  77. }
  78. if(mode==0 ){
  79. return effects
  80. }else if(mode == 1){
  81. return vip_effects
  82. }else{
  83. return [...vip_effects,...effects]
  84. }
  85. }
  86. async function find_texiao_animation_by_resource_id(resource_id){
  87. let effects = await get_all_texiao_Effects(2);
  88. for(let info of effects){
  89. if(info.resource_id == resource_id){
  90. return info
  91. }
  92. }
  93. return null
  94. }
  95. // (async () => {
  96. // try {
  97. // const contents = await find_texiao_animation_by_resource_id('7348707427165934107')
  98. // console.log(" contents:", contents);
  99. // } catch (err) {
  100. // console.error(err);
  101. // }
  102. // })();
  103. module.exports = { get_all_texiao_Effects , find_texiao_animation_by_resource_id };