diff --git a/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java b/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java index f759775a0..f878160e9 100644 --- a/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java @@ -62,10 +62,20 @@ public class M3UDownloader implements ITrackDownloader { AtomicInteger progress = new AtomicInteger(0); List> futures = new ArrayList<>(); - var tsesDir = new File(outDir, String.valueOf(payload.hashCode())); + var tsesDir = new File(outDir, String.valueOf(track.d)); tsesDir.mkdirs(); var resultTs = new File(tsesDir, "result.ts"); - var fileName = IOUtils.getValidFileName((cache ? "track" : track.toString()) + ".mp3"); + + String title = null; + + if (track.f != null) { + title = track.f; + if (!track.g.isEmpty()) { + title += " (" + track.g + ")"; + } + } + + var fileName = IOUtils.getValidFileName((cache ? "track" : track.C + " - " + title) + ".mp3"); var resultMp3 = new File(outDir, fileName); callback.onProgress(5); @@ -84,6 +94,7 @@ public class M3UDownloader implements ITrackDownloader { } File tsDump = new File(tsesDir, ts.getName()); IOUtils.writeToFile(tsDump, content); + callback.onProgress(10 + Math.round(80.0f * progress.addAndGet(1) / tses.size())); callback.onSizeReceived((long) content.length * tses.size(), parser.getHeapSize()); } catch (IOException | NoSuchPaddingException | NoSuchAlgorithmException | InvalidAlgorithmParameterException | InvalidKeyException e) { callback.onFailure(); @@ -91,7 +102,6 @@ public class M3UDownloader implements ITrackDownloader { } })); } - var future = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); future.exceptionally(throwable -> { callback.onFailure(); diff --git a/app/src/main/java/ru/vtosters/lite/music/converter/ts/FFMpeg.java b/app/src/main/java/ru/vtosters/lite/music/converter/ts/FFMpeg.java index 18c7a6623..5a735d0cc 100644 --- a/app/src/main/java/ru/vtosters/lite/music/converter/ts/FFMpeg.java +++ b/app/src/main/java/ru/vtosters/lite/music/converter/ts/FFMpeg.java @@ -33,11 +33,21 @@ public class FFMpeg { var sb = new StringBuilder(); sb.append("-y -i \"").append(in.getAbsolutePath()).append("\""); sb.append(" -map 0 -dn "); - sb.append(" -loglevel error"); + //sb.append(" -loglevel error"); sb.append(" -hide_banner"); sb.append(" -write_id3v2 1"); + + String title = null; + if (track.f != null) { - sb.append(" -metadata title=\"").append(IOUtils.getValidFileName(track.f)).append("\""); + title = track.f; + if (!track.g.isEmpty()) { + title += " (" + track.g + ")"; + } + } + + if (title != null) { + sb.append(" -metadata title=\"").append(IOUtils.getValidFileName(title)).append("\""); } if (track.L != null) {