Infinity-For-Reddit
Infinity-For-Reddit copied to clipboard
Streamable videos fail to load if mp4-mobile not available
Checklist
- [X] I have used the search function for open and closed issues to see if someone else has already submitted the same bug report.
- [X] I will describe the problem with as much detail as possible.
- [X] If the bug only occurs with a certain link, post, image..., I will include the URL.
App version
master
Where did you get the app from
Other
Android version
13
Device model
No response
First occurred
No response
Steps to reproduce
- Go to streamable video
- Toast
Streamable Video failed to load
, video does not play
Example post, link, markdown...
https://reddit.com/r/dreamcatcher/comments/14gx2p3 https://streamable.com/e2dg62
Streamable API does not return a mp4-mobile
field
{
"status": 2,
"percent": 100,
"url": "streamable.com/e2dg62",
"embed_code": "<div style=\"width: 100%; height: 0px; position: relative; padding-bottom: 177.778%;\"><iframe class=\"streamable-embed\" src=\"https://streamable.com/o/e2dg62\" frameborder=\"0\" scrolling=\"no\" style=\"width: 100%; height: 100%; position: absolute;\" allowfullscreen></iframe></div>",
"message": null,
"files": {
"mp4": {
"status": 2,
"url": "https://cdn-cf-east.streamable.com/video/mp4/e2dg62.mp4?Expires=1687792620&Signature=ARBjequUnKT0xmwKq15yFQPOAJq~sYWD2sjzgFNWFMo3UVL8zpELaG8d-YpD62umcgX2Wxz1yWvQs6eiw~pX9bAao7gMXHCGr5rgPTk9WnragOboBRjVzLgdm0cafsVDIZGhl8uuTA8qM0HythW-qmRk8U5wjrOkpN3LLH4u~ckrloF3CaAF1Cy5I33RX5OL4YGhdeevz~K~8JnJ5zXTEWdKBPIsog~DLns6AIqhY8Z8q440ZSV2DomaFrRuvGEoXY7rC8tow9VYSv4r4J-cO1yqW0zm5AqaBR1dzbJiaJji9LeUjdUxhvwN~Sr0oIjDEz-37ZPIAOgYb9D6wHQcIQ__&Key-Pair-Id=APKAIEYUVEN4EVB2OKEQ",
"framerate": 30,
"height": 1280,
"width": 720,
"bitrate": 3114249,
"size": 15973766,
"duration": 41.033333
},
"original": {
"framerate": 30,
"bitrate": 3114248,
"size": 15973758,
"duration": 41.033333,
"height": 1280,
"width": 720
}
},
"thumbnail_url": "//cdn-cf-east.streamable.com/image/e2dg62-screenshot815147.jpg?Expires=1687792620&Signature=f~WAb4o1Uc8PAJOFi0yY9dUfZ-snnVSQUx-IZAJDPlx7JGxPAebXjT9gCsP9C6sC5Gfna1OATPtxPq7428eagTcq1afxIKX~PrhiVg222DYS-5iACzUoAgNaCuGqGOvIiNCzf81zEj-EFFmhLNgX3DNbh-9I6iop-kmvKxLoJGwYGhzfKW3bec~cv6syRxEKdY3as3VP761EAngJRf4cpAC6B1CY7YT-9a-FZPMeDOSdSmF0W4CJ6LLBNENfz9eqoWVdIWo-T0GVa17lWNjjE-JZc9nIhiBzwiRQGjTEPkM9CsUoJQjQUv2RAlcP~XZhLMcebyH6P75~NwFnwLjl~Q__&Key-Pair-Id=APKAIEYUVEN4EVB2OKEQ",
"title": "EL WH RN WJN DC BVYGE (230623 TT)",
"source": null,
"audio_channels": 2
}
Expected behaviour
This patch seems to fix it. (I am not an Android or Java dev so this may be bad code)
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchStreamableVideo.java b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchStreamableVideo.java
index ef5629d4..cbc210b3 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchStreamableVideo.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchStreamableVideo.java
@@ -34,7 +34,11 @@ public class FetchStreamableVideo {
String title = jsonObject.getString(JSONUtils.TITLE_KEY);
JSONObject filesObject = jsonObject.getJSONObject(JSONUtils.FILES_KEY);
StreamableVideo.Media mp4 = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_KEY));
- StreamableVideo.Media mp4Mobile = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_MOBILE_KEY));
+ StreamableVideo.Media mp4MobileTemp = null;
+ try {
+ mp4MobileTemp = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_MOBILE_KEY));
+ } catch (JSONException e) {}
+ StreamableVideo.Media mp4Mobile = mp4MobileTemp;
handler.post(() -> fetchStreamableVideoListener.success(new StreamableVideo(title, mp4, mp4Mobile)));
} else {
handler.post(fetchStreamableVideoListener::failed);
@@ -56,7 +60,11 @@ public class FetchStreamableVideo {
String title = jsonObject.getString(JSONUtils.TITLE_KEY);
JSONObject filesObject = jsonObject.getJSONObject(JSONUtils.FILES_KEY);
StreamableVideo.Media mp4 = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_KEY));
- StreamableVideo.Media mp4Mobile = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_MOBILE_KEY));
+ StreamableVideo.Media mp4MobileTemp = null;
+ try {
+ mp4MobileTemp = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_MOBILE_KEY));
+ } catch (JSONException e) {}
+ StreamableVideo.Media mp4Mobile = mp4MobileTemp;
if (mp4 == null && mp4Mobile == null) {
handler.post(fetchStreamableVideoListener::failed);
return;
Current behaviour
No response
Logs
No response