From 9e5eae49d10de86424d802ce01b7206ac0302ce9 Mon Sep 17 00:00:00 2001 From: k1zn <46452865+k1zn@users.noreply.github.com> Date: Sat, 8 Oct 2022 19:19:36 +0500 Subject: [PATCH 1/3] remove shadow from attachments --- smali/res/layout/attach_comment_photo.xml | 1 - smali/res/layout/attach_comment_video.xml | 1 - 2 files changed, 2 deletions(-) diff --git a/smali/res/layout/attach_comment_photo.xml b/smali/res/layout/attach_comment_photo.xml index 3e31df755..c889588c4 100644 --- a/smali/res/layout/attach_comment_photo.xml +++ b/smali/res/layout/attach_comment_photo.xml @@ -12,7 +12,6 @@ android:layout_marginBottom="8.0dip" android:contentDescription="@string/photo" app:actualImageScaleType="centerCrop" - app:overlayImage="@drawable/scrim_bottom_16percent" app:placeholderImage="?placeholder_icon_background" app:roundedCornerRadius="4.0dip" /> \ No newline at end of file diff --git a/smali/res/layout/attach_comment_video.xml b/smali/res/layout/attach_comment_video.xml index 16488465d..86916a2c0 100644 --- a/smali/res/layout/attach_comment_video.xml +++ b/smali/res/layout/attach_comment_video.xml @@ -9,7 +9,6 @@ android:layout_width="120.0dip" android:layout_height="80.0dip" app:actualImageScaleType="centerCrop" - app:overlayImage="@drawable/scrim_bottom_16percent" app:roundedCornerRadius="4.0dip" /> Date: Sat, 8 Oct 2022 14:44:44 +0300 Subject: [PATCH 2/3] [music] move temp tses dir to app internal storage --- app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 480467915..15e234f72 100644 --- a/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java @@ -23,6 +23,7 @@ import ru.vtosters.lite.music.converter.ts.FFMpeg; import ru.vtosters.lite.music.converter.ts.TSMerger; import ru.vtosters.lite.music.downloader.ThumbnailDownloader; import ru.vtosters.lite.music.interfaces.ITrackDownloader; +import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.IOUtils; public class M3UDownloader implements ITrackDownloader { @@ -62,7 +63,8 @@ public class M3UDownloader implements ITrackDownloader { AtomicInteger progress = new AtomicInteger(0); List> futures = new ArrayList<>(tses.size()); - var tsesDir = new File(outDir, String.valueOf(track.d)); + var filesDir = AndroidUtils.getGlobalContext().getFilesDir(); + var tsesDir = new File(filesDir, String.valueOf(track.d)); tsesDir.mkdirs(); var resultTs = new File(tsesDir, "result.ts"); From baba2c000955d121dfe8037f11e0caf10970d1d5 Mon Sep 17 00:00:00 2001 From: aliveoutside <53598473+aliveoutside@users.noreply.github.com> Date: Sat, 8 Oct 2022 17:45:29 +0300 Subject: [PATCH 3/3] [music] download playlist synchronously --- .../ru/vtosters/lite/music/M3UDownloader.java | 62 ++++++++----------- 1 file changed, 25 insertions(+), 37 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 15e234f72..c05748152 100644 --- a/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java @@ -10,15 +10,15 @@ import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; import javax.crypto.NoSuchPaddingException; import java8.util.concurrent.CompletableFuture; -import okhttp3.Call; import okhttp3.OkHttpClient; import okhttp3.Request; -import okhttp3.Response; import ru.vtosters.lite.music.converter.ts.FFMpeg; import ru.vtosters.lite.music.converter.ts.TSMerger; import ru.vtosters.lite.music.downloader.ThumbnailDownloader; @@ -28,35 +28,29 @@ import ru.vtosters.lite.utils.IOUtils; public class M3UDownloader implements ITrackDownloader { private static final OkHttpClient client = new OkHttpClient(); + private ExecutorService executorService = Executors.newSingleThreadExecutor(); public static M3UDownloader getInstance() { return Holder.INSTANCE; } public void downloadTrack(MusicTrack track, File outDir, Callback callback, boolean cache) { - var request = new Request.a() - .b(track.D) - .a(); - client.a(request).a(new okhttp3.Callback() { - @Override - public void a(Call call, IOException e) { - callback.onFailure(); - } - - @Override - public void a(Call call, Response response) throws IOException { - parse(response.a().g(), outDir, callback, track, cache); - } - }); + var request = new Request.a().b(track.D).a(); + try { + var response = client.a(request).execute().a().g(); + parse(response, outDir, callback, track, cache); + } catch (IOException e) { + e.printStackTrace(); + callback.onFailure(); + } } private void parse(String payload, File outDir, Callback callback, MusicTrack track, boolean cache) { - if (cache) - try { - ThumbnailDownloader.downloadThumbnails(track); - } catch (IOException e) { - e.printStackTrace(); - } + if (cache) try { + ThumbnailDownloader.downloadThumbnails(track); + } catch (IOException e) { + e.printStackTrace(); + } VKM3UParser parser = new VKM3UParser(payload); List tses = parser.getTransportStreams(); @@ -98,8 +92,7 @@ public class M3UDownloader implements ITrackDownloader { 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) { + } catch (IOException | NoSuchPaddingException | NoSuchAlgorithmException | InvalidAlgorithmParameterException | InvalidKeyException e) { callback.onFailure(); throw new RuntimeException(e); } @@ -107,19 +100,14 @@ public class M3UDownloader implements ITrackDownloader { } var future = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); 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) - callback.onProgress(10 + Math.round(80.0f * progress.addAndGet(1) / tses.size())); - else callback.onFailure(); - return convertResult; - }) - .thenRun(() -> IOUtils.deleteRecursive(tsesDir)) - .thenRun(callback::onSuccess); + callback.onFailure(); + return null; + }).thenApply(v -> TSMerger.merge(tsesDir, resultTs)).thenApply(mergeResult -> mergeResult && FFMpeg.convert(resultTs, resultMp3.getAbsolutePath(), track)).thenApply(convertResult -> { + if (convertResult) + callback.onProgress(10 + Math.round(80.0f * progress.addAndGet(1) / tses.size())); + else callback.onFailure(); + return convertResult; + }).thenRun(() -> IOUtils.deleteRecursive(tsesDir)).thenRun(callback::onSuccess); } // Initialization-on-demand