From 57e8c32629a2da2c7a7836ab8b1f574ca1416ada Mon Sep 17 00:00:00 2001 From: iTaysonLab <9827543+iTaysonLab@users.noreply.github.com> Date: Fri, 16 Sep 2022 21:49:24 +0200 Subject: [PATCH] Implement libvkx playlist injecting --- .../itaysonlab/libvkx/ILibVkxService.aidl | 2 +- .../music/cache/injectors/PlaylistInjector.java | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl b/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl index 4e2cac6ca..206767f80 100644 --- a/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl +++ b/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl @@ -25,5 +25,5 @@ interface ILibVkxService { // Get cached library in Catalog2-like JSON String getCacheCatalog() = 11; - List getTracksInPlaylist(in int playlist_id, in int owner_id) = 12; + List getTracksInPlaylist(in String playlist_id, in String owner_id) = 12; } \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java b/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java index ce455cf35..49bf48663 100644 --- a/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java +++ b/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java @@ -44,8 +44,14 @@ public class PlaylistInjector { if (!eligibleForOfflineCaching()) return null; var requestArgs = audioGetPlaylist.b(); + var id = requestArgs.get("id"); - if (TextUtils.isEmpty(id) || !id.equals("-1") && !id.equals("-2")) + var ownerId = requestArgs.get("owner_id"); + var accessKey = requestArgs.get("access_key"); + boolean isVirtualPlaylist = accessKey != null && (accessKey.equals("vkx") || accessKey.equals("cache")); + boolean isAlbumVirtualPlaylist = accessKey != null && (accessKey.equals("cacheAlbum")); + + if (TextUtils.isEmpty(id) || (!isVirtualPlaylist && !isAlbumVirtualPlaylist)) return null; return Observable.a((ObservableOnSubscribe) observableEmitter -> { @@ -54,7 +60,7 @@ public class PlaylistInjector { response.b = PlaylistHelper.createCachedPlaylistMetadata(); LibVKXClient.getInstance().runOnService((service) -> { try { - List cache = service.getCache(); + List cache = service.getTracksInPlaylist(id, ownerId); ArrayList tracks = new ArrayList<>(); for (String json : cache) { tracks.add(new MusicTrack(new JSONObject(json))); @@ -68,13 +74,15 @@ public class PlaylistInjector { }); return; } - if (id.equals("-1")) { + + if (isVirtualPlaylist) { response.c = (ArrayList) TracklistHelper.getTracks(); response.b = PlaylistHelper.createCachedPlaylistMetadata(); } else { response.c = (ArrayList) TracklistHelper.getTracks(requestArgs.get("owner_id")); response.b = PlaylistHelper.createCachedPlaylistMetadata(requestArgs.get("owner_id")); } + observableEmitter.b(response); }); } catch (Exception e) {