From 1a3017e0f57f5d12db1067007238f228c23d421a Mon Sep 17 00:00:00 2001 From: udhayarajan Date: Sun, 23 Jul 2023 12:44:09 +0530 Subject: [PATCH] fix(Facebook): crash when carousel post passed --- build.gradle.kts | 2 +- .../kotlin/com/mugames/vidsnapkit/extractor/Facebook.kt | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 58df0549..ab29e357 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -28,7 +28,7 @@ plugins { } group = "io.github.udhayarajan" -version = "5.6.8" +version = "5.6.9" // Version Naming incremented if ".." // Priority on incrementing Feature > BugFix > Beta diff --git a/src/commonMain/kotlin/com/mugames/vidsnapkit/extractor/Facebook.kt b/src/commonMain/kotlin/com/mugames/vidsnapkit/extractor/Facebook.kt index e0316e64..9d2566a7 100644 --- a/src/commonMain/kotlin/com/mugames/vidsnapkit/extractor/Facebook.kt +++ b/src/commonMain/kotlin/com/mugames/vidsnapkit/extractor/Facebook.kt @@ -378,6 +378,10 @@ class Facebook internal constructor(url: String) : Extractor(url) { return searchFromRequireArray(jsonString?.toJSONObjectOrNull()?.getJSONArray("require")) } + private fun getVideoFromVideoGridRenderer(media: JSONObject): Formats { + return parseGraphqlVideo(media.getJSONObject("video_grid_renderer").getJSONObject("video"), false) + } + private fun parseGraphqlVideo(media: JSONObject, hasCreationStory: Boolean = true): Formats { if (media.getNullableJSONObject("creation_story") != null && hasCreationStory) { return extractFromCreationStory(media) @@ -385,6 +389,9 @@ class Facebook internal constructor(url: String) : Extractor(url) { val scopedFormats = localFormats.copy( title = "", videoData = mutableListOf(), audioData = mutableListOf(), imageData = mutableListOf() ) + if (media.getNullableJSONObject("video_grid_renderer") != null) { + return getVideoFromVideoGridRenderer(media) + } val thumbnailUrl = media.getNullableJSONObject("thumbnailImage")?.getString("uri") ?: media.getNullableJSONObject("preferred_thumbnail")?.getJSONObject("image")?.getString("uri") ?: ""