From 7138e5dc92340994dc488d92ae2e1eb8a3ffe7d5 Mon Sep 17 00:00:00 2001 From: cyian-1756 Date: Sat, 26 Jan 2019 03:54:32 -0500 Subject: [PATCH 1/2] Fixed gfycat ripper --- .../ripme/ripper/rippers/GfycatRipper.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/GfycatRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/GfycatRipper.java index 9c2db859..5bbef13d 100644 --- a/src/main/java/com/rarchives/ripme/ripper/rippers/GfycatRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/GfycatRipper.java @@ -10,7 +10,11 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import com.rarchives.ripme.ripper.AbstractSingleFileRipper; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import com.rarchives.ripme.utils.Http; @@ -73,12 +77,14 @@ public class GfycatRipper extends AbstractSingleFileRipper { @Override public List getURLsFromPage(Document doc) { List result = new ArrayList<>(); - Elements videos = doc.select("source"); - String vidUrl = videos.first().attr("src"); - if (vidUrl.startsWith("//")) { - vidUrl = "http:" + vidUrl; + Elements videos = doc.select("script"); + for (Element el : videos) { + String json = el.html(); + if (json.startsWith("{")) { + JSONObject page = new JSONObject(json); + result.add(page.getJSONObject("video").getString("contentUrl")); + } } - result.add(vidUrl); return result; } From 4a8602faaddc35cbec936987756d363f9b1f804e Mon Sep 17 00:00:00 2001 From: cyian-1756 Date: Sat, 26 Jan 2019 05:07:32 -0500 Subject: [PATCH 2/2] Fixed gfycat ripper --- .../ripme/ripper/rippers/GfycatRipper.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/GfycatRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/GfycatRipper.java index 5bbef13d..49544df8 100644 --- a/src/main/java/com/rarchives/ripme/ripper/rippers/GfycatRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/GfycatRipper.java @@ -101,14 +101,14 @@ public class GfycatRipper extends AbstractSingleFileRipper { url = new URL(url.toExternalForm().replace("/gifs/detail", "")); Document doc = Http.url(url).get(); - Elements videos = doc.select("source"); - if (videos.isEmpty()) { - throw new IOException("Could not find source at " + url); + Elements videos = doc.select("script"); + for (Element el : videos) { + String json = el.html(); + if (json.startsWith("{")) { + JSONObject page = new JSONObject(json); + return page.getJSONObject("video").getString("contentUrl"); + } } - String vidUrl = videos.first().attr("src"); - if (vidUrl.startsWith("//")) { - vidUrl = "http:" + vidUrl; - } - return vidUrl; + throw new IOException(); } } \ No newline at end of file