Просмотр исходного кода

导入音乐的时候解析歌词非空判断

onecold 11 месяцев назад
Родитель
Сommit
59cff1b484

+ 1 - 0
entry/src/main/ets/common/util/MusicTagUtils.ets

@@ -89,6 +89,7 @@ export async function repairAudioMetadata(
   //额外再次添加下lyrics-XXX的歌词参数,以便其他音乐播放器可以识别歌词
   // 额外添加歌词自定义标签(修复后的核心代码)
   if (StrUtil.isNotEmpty(lyrics)) { // 确保歌词内容存在时才添加
+
     // 多种歌词标签格式
     const lyricTags = [
       `LYRICS=${lyrics}`,

+ 18 - 13
entry/src/main/ets/common/util/Utility.ets

@@ -865,8 +865,10 @@ export class Utility {
             let artist = tags.artist ||tags.ARTIST || '';
             let title = tags.title ||tags.TITLE || '';
             const album = tags.album ||tags.ALBUM|| '';
-
-
+            console.log(`onecold tags.tags:${JSON.stringify(tags)}`);
+            // console.log(`onecold tags.LYRICS:${tags.LYRICS}`);
+            // console.log(`onecold tags.lyrics:${tags.lyrics}`);
+            // console.log(`onecold tags.UNSYNCEDLYRICS:${tags.UNSYNCEDLYRICS}`);
             if(StrUtil.isEmpty(title)){
               //自动解析像这样的获取不到元数据的 周杰伦-七里香.mp3文件
               console.log(`onecold musicName为空:${file.name}`);
@@ -917,21 +919,24 @@ export class Utility {
             // 如果标准字段没有歌词,则尝试解析 `lyrics-` 字段
             // tags 必须是 Record<string, string | undefined>(或 any)
             // 如果还是没有歌词内容,尝试查找自定义的lyrics-开头的属性(电脑版音乐标签内嵌歌词就是lyrics-XXX)
-            const tagsRecord = tags as Record<string, string>;
-            const possibleKeys = Object.keys(tagsRecord);
-            for (let i = 0; i < possibleKeys.length;  i++) {
-              const key = possibleKeys[i];
-              if (key && key.toLowerCase().startsWith('lyrics-'))  {
-                //console.info('readMetaInfoFFmpeg  videoItem.key:  ', key);
-                // 通过转换后的 Record 类型安全访问属性
-                videoItem.lyricContent  = tagsRecord[key];
-                //console.info('readMetaInfoFFmpeg  videoItem.lyricContent2:  ', videoItem.lyricContent);
-                if (videoItem.lyricContent)  {
-                  break;
+            if(StrUtil.isEmpty( videoItem.lyricContent)){
+              const tagsRecord = tags as Record<string, string>;
+              const possibleKeys = Object.keys(tagsRecord);
+              for (let i = 0; i < possibleKeys.length;  i++) {
+                const key = possibleKeys[i];
+                if (key && key.toLowerCase().startsWith('lyrics-'))  {
+                  //console.info('readMetaInfoFFmpeg  videoItem.key:  ', key);
+                  // 通过转换后的 Record 类型安全访问属性
+                  videoItem.lyricContent  = tagsRecord[key];
+                  //console.info('readMetaInfoFFmpeg  videoItem.lyricContent2:  ', videoItem.lyricContent);
+                  if (videoItem.lyricContent)  {
+                    break;
+                  }
                 }
               }
             }
 
+
             videoItem.genre  = tags.genre||tags.GENRE|| '';
             videoItem.track  = tags.track||tags.TRACK|| '';