From 090c82dd405d16264604f4ff8675890ca6c64bdd Mon Sep 17 00:00:00 2001 From: aliveoutside <53598473+aliveoutside@users.noreply.github.com> Date: Fri, 16 Sep 2022 13:03:56 +0300 Subject: [PATCH] append id3 tags to downloaded tracks --- .../lite/downloaders/AudioDownloader.java | 2 +- .../java/ru/vtosters/lite/music/FFMpeg.java | 29 +++++++++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java index f7abe9bde..69f10b80a 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java @@ -73,7 +73,7 @@ public class AudioDownloader { public void onSuccess() { try { var fileName = track.toString(); - var success = FFMpeg.convert(downloadPath, musicPath + File.separator + fileName + ".mp3"); + var success = FFMpeg.convert(downloadPath, musicPath + File.separator + fileName + ".mp3", track); if (success) { notification .setContentText(AndroidUtils.getString("player_download_finished")) diff --git a/app/src/main/java/ru/vtosters/lite/music/FFMpeg.java b/app/src/main/java/ru/vtosters/lite/music/FFMpeg.java index a1848d30a..ade05b86b 100644 --- a/app/src/main/java/ru/vtosters/lite/music/FFMpeg.java +++ b/app/src/main/java/ru/vtosters/lite/music/FFMpeg.java @@ -6,6 +6,7 @@ import android.util.Log; import com.arthenica.ffmpegkit.FFmpegKit; import com.arthenica.ffmpegkit.ReturnCode; import com.vk.core.util.ToastUtils; +import com.vk.dto.music.MusicTrack; import java.io.ByteArrayOutputStream; import java.io.File; @@ -50,7 +51,7 @@ public class FFMpeg { } } - public static boolean convert(String in, String out) { + public static boolean convert(String in, String out, MusicTrack track) { checkFFMpegLibs(); var tsesList = new File(in).listFiles(); @@ -97,8 +98,30 @@ public class FFMpeg { // convert .ts file to .mp3 file via ffmpeg - // var session = FFmpegKit.execute("-i " + in + "/all.ts -f mp3 -acodec mp3 -q:a 0 -y '" + out + "'"); - var session = FFmpegKit.execute("-y -i " + in + "/all.ts -map 0 -dn -c copy '" + out + "'"); + var sb = new StringBuilder(); + sb.append("-y -i ").append(in).append("/all.ts -map 0 -dn "); + sb.append(" -loglevel error"); + sb.append(" -hide_banner"); + if (track.f != null) { + sb.append(" -metadata title='").append(track.f).append("'"); + } + if (track.C != null) { + sb.append(" -metadata artist='").append(track.C).append("'"); + } + if (track.I != null) { + sb.append(" -metadata album='").append(track.I.getTitle()).append("'"); + } +// +// if (track.L != null) { +// var artists = track.L.stream().map(Artist::w1).reduce((s, s2) -> s + ", " + s2).orElse(""); +// sb.append(" -metadata artist='").append(artists).append("'"); +// } + + sb.append(" -c copy '").append(out).append("'"); + + var command = sb.toString(); + + var session = FFmpegKit.execute(command); var rc = session.getReturnCode(); IOUtils.deleteRecursive(new File(in));