From d02d6ceac16bd079617d5f87490d10d1465425bf Mon Sep 17 00:00:00 2001 From: aliveoutside <53598473+aliveoutside@users.noreply.github.com> Date: Mon, 19 Sep 2022 20:48:45 +0300 Subject: [PATCH] [music] use callback onfailure --- .../java/ru/vtosters/lite/music/M3UDownloader.java | 10 +++++++--- .../lite/music/callback/MusicCallbackBuilder.java | 3 ++- .../ru/vtosters/lite/music/converter/ts/FFMpeg.java | 3 ++- .../lite/music/downloader/PlaylistDownloader.java | 8 ++++++-- 4 files changed, 17 insertions(+), 7 deletions(-) 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 f319a203f..f759775a0 100644 --- a/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java @@ -39,7 +39,7 @@ public class M3UDownloader implements ITrackDownloader { client.a(request).a(new okhttp3.Callback() { @Override public void a(Call call, IOException e) { - + callback.onFailure(); } @Override @@ -86,14 +86,18 @@ public class M3UDownloader implements ITrackDownloader { IOUtils.writeToFile(tsDump, content); callback.onSizeReceived((long) content.length * tses.size(), parser.getHeapSize()); } catch (IOException | NoSuchPaddingException | NoSuchAlgorithmException | InvalidAlgorithmParameterException | InvalidKeyException e) { - e.printStackTrace(); callback.onFailure(); + throw new RuntimeException(e); } })); } var future = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); - future.thenApply(v -> TSMerger.merge(tsesDir, resultTs)) + future.exceptionally(throwable -> { + callback.onFailure(); + return null; + }) + .thenApply(v -> TSMerger.merge(tsesDir, resultTs)) .thenApply(mergeResult -> mergeResult && FFMpeg.convert(resultTs, resultMp3.getAbsolutePath(), track)) .thenApply(convertResult -> { if (convertResult) diff --git a/app/src/main/java/ru/vtosters/lite/music/callback/MusicCallbackBuilder.java b/app/src/main/java/ru/vtosters/lite/music/callback/MusicCallbackBuilder.java index e8214e0d6..abff8eabb 100644 --- a/app/src/main/java/ru/vtosters/lite/music/callback/MusicCallbackBuilder.java +++ b/app/src/main/java/ru/vtosters/lite/music/callback/MusicCallbackBuilder.java @@ -80,7 +80,8 @@ public class MusicCallbackBuilder { @Override public void onFailure() { - + notification.setContentText(getString("load_audio_error")).setProgress(0, 0, false); + notificationManager.notify(notificationId, notification.build()); } @Override 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 ad11033b3..18c7a6623 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 @@ -15,6 +15,7 @@ import java.io.InputStream; import java.util.stream.Collectors; import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.IOUtils; public class FFMpeg { private static final int BUFFER_SIZE = 2048; @@ -36,7 +37,7 @@ public class FFMpeg { sb.append(" -hide_banner"); sb.append(" -write_id3v2 1"); if (track.f != null) { - sb.append(" -metadata title=\"").append(track.f).append("\""); + sb.append(" -metadata title=\"").append(IOUtils.getValidFileName(track.f)).append("\""); } if (track.L != null) { diff --git a/app/src/main/java/ru/vtosters/lite/music/downloader/PlaylistDownloader.java b/app/src/main/java/ru/vtosters/lite/music/downloader/PlaylistDownloader.java index 6a4589ec3..7467cef1f 100644 --- a/app/src/main/java/ru/vtosters/lite/music/downloader/PlaylistDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/downloader/PlaylistDownloader.java @@ -39,7 +39,9 @@ public class PlaylistDownloader { } @Override - public void onFailure() {} + public void onFailure() { + callback.onFailure(); + } @Override public void onSizeReceived(long size, long header) {} @@ -63,7 +65,9 @@ public class PlaylistDownloader { } @Override - public void onFailure() {} + public void onFailure() { + callback.onFailure(); + } @Override public void onSizeReceived(long size, long header) {}