From 3bdbe6091b7bd4e337a0a3c4d715ae1ab5e3ed91 Mon Sep 17 00:00:00 2001 From: project-majo Date: Tue, 26 Mar 2019 20:06:35 +0100 Subject: [PATCH 1/3] test to fix SB download --- .../ripper/rippers/SpankBangRipperTest.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/SpankBangRipperTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/SpankBangRipperTest.java index 19727e656..d07a5870e 100644 --- a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/SpankBangRipperTest.java +++ b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/SpankBangRipperTest.java @@ -2,8 +2,18 @@ import java.io.IOException; import java.net.URL; +import java.util.AbstractMap.SimpleEntry; +import java.util.Collection; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang.StringUtils; +import org.json.JSONObject; +import org.jsoup.Connection.Method; import com.rarchives.ripme.ripper.rippers.SpankbangRipper; +import com.rarchives.ripme.utils.Http; public class SpankBangRipperTest extends RippersTest { @@ -12,4 +22,38 @@ public void testSpankBangVideo() throws IOException { testRipper(ripper); } + public void testSBFix() throws IOException { + String url = "https://spankbang.com/2a7fh/video/mdb901"; + Http http = Http.url(url); + org.jsoup.nodes.Document doc = http.get(); + Map cookies = http.connection().response().cookies(); + String sb_csrf_session = cookies.get("sb_csrf_session"); + System.out.println(sb_csrf_session);// 9c5018459bb441fb6064e404acd0a2d17d9445ca32350b9ff437d7cae18e69ad + String contentUrl = new JSONObject(doc.select("script[type=application/ld+json]").first().data()) + .get("contentUrl").toString(); + System.out.println(contentUrl);// https://spankbang.com/stream/MzgzNTQyMQ.0JaO6IUfIXyR7Z41mbfYfABMp4s.mp4 + String id = contentUrl.substring(contentUrl.lastIndexOf('/') + 1, contentUrl.lastIndexOf('.')); + System.out.println(id);// MzgzNTQyMQ.0JaO6IUfIXyR7Z41mbfYfABMp4s + String infoUrl = url.substring(0, url.indexOf("/", 10)) + "/api/videos/stream"; + System.out.println(infoUrl); // https://spankbang.com/api/videos/stream + Map formData = new HashMap<>(); + formData.put("id", id); + formData.put("data", "0"); + formData.put("sb_csrf_session", sb_csrf_session); + Http infoHttp = Http.url(infoUrl); + infoHttp.data(formData).connection().method(Method.POST); + JSONObject infoJson = infoHttp.getJSON(); + System.out.println(infoJson); // print info sjon + Comparator reversed = Comparator.naturalOrder().reversed(); + @SuppressWarnings("unchecked") + String p = ((Collection) infoJson.keySet()).stream().filter(k -> k.startsWith("stream_url_")) + .filter(k -> StringUtils.isNotBlank(infoJson.get(k).toString())) + .map(k -> new SimpleEntry(k, + Integer.parseInt(k.replace("stream_url_", "").replace("p", "").replace("4k", "3840") + .replace("8k", "7680")))) + .sorted((e1, e2) -> reversed.compare(e1.getValue(), e2.getValue())).findFirst().get().getKey(); + System.out.println(p); // highest of 4k, 1080p, 720p, ... with prefix "stream_url_" as found in json + String actualUrl = infoJson.get(p).toString(); + System.out.println(actualUrl); // https://vcdn222.spankbang.com/3/8/3835421-480p.mp4?st=RebZLKtgRLPi16y-CnNt5g&e=1553711616 + } } From 22570832461bec0e63759005f57b8fa3d5a00090 Mon Sep 17 00:00:00 2001 From: project-majo Date: Tue, 26 Mar 2019 22:39:01 +0100 Subject: [PATCH 2/3] Beeg ripping test --- .../tst/ripper/rippers/BeegRipperTest.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/test/java/com/rarchives/ripme/tst/ripper/rippers/BeegRipperTest.java diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/BeegRipperTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/BeegRipperTest.java new file mode 100644 index 000000000..02715cbc7 --- /dev/null +++ b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/BeegRipperTest.java @@ -0,0 +1,61 @@ +package com.rarchives.ripme.tst.ripper.rippers; + +import java.io.IOException; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.json.JSONObject; + +import com.rarchives.ripme.utils.Http; + + +public class BeegRipperTest extends RippersTest { + public void test() throws IOException { + String url = "https://beeg.com/1958535"; + Http http = Http.url(url); + http.get(); + Map cookies = http.connection().response().cookies(); + String html = http.response().body(); + String beeg_version; + { + Pattern p = Pattern.compile("var beeg_version = (\\d++);"); + Matcher m = p.matcher(html); + m.find(); + beeg_version = m.group(1); + } + String actualUrl; + { + String u = "https://beeg.com/api/v6/" + beeg_version + "/video/" + url.substring(url.lastIndexOf("/") + 1); + System.out.println(u); + Http http2 = Http.url(u); + http2.cookies(cookies); + JSONObject struct = http2.getJSON(); + System.out.println(struct); + try { + actualUrl = struct.getString("2160p").toString(); + } catch (Exception ex1) { + try { + actualUrl = struct.getString("1080p").toString(); + } catch (Exception ex2) { + try { + actualUrl = struct.getString("720p").toString(); + } catch (Exception ex3) { + try { + actualUrl = struct.getString("480p").toString(); + } catch (Exception ex4) { + actualUrl = struct.getString("240p").toString(); + } + } + } + } + System.out.println(actualUrl); + } + { + actualUrl = "https:" + actualUrl.replace("{DATA_MARKERS}", "data=pc_"// + + "UK"//languagecode? + + "__" + beeg_version + "_"); + System.out.println(actualUrl); + } + } +} From 0fa5da796fd556ee959cc6935ca5995cbef0ec95 Mon Sep 17 00:00:00 2001 From: project-majo <48963760+project-majo@users.noreply.github.com> Date: Tue, 26 Mar 2019 22:56:23 +0100 Subject: [PATCH 3/3] pushed on wrong branch (new branch was created) --- .../tst/ripper/rippers/BeegRipperTest.java | 61 ------------------- 1 file changed, 61 deletions(-) delete mode 100644 src/test/java/com/rarchives/ripme/tst/ripper/rippers/BeegRipperTest.java diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/BeegRipperTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/BeegRipperTest.java deleted file mode 100644 index 02715cbc7..000000000 --- a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/BeegRipperTest.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.rarchives.ripme.tst.ripper.rippers; - -import java.io.IOException; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.json.JSONObject; - -import com.rarchives.ripme.utils.Http; - - -public class BeegRipperTest extends RippersTest { - public void test() throws IOException { - String url = "https://beeg.com/1958535"; - Http http = Http.url(url); - http.get(); - Map cookies = http.connection().response().cookies(); - String html = http.response().body(); - String beeg_version; - { - Pattern p = Pattern.compile("var beeg_version = (\\d++);"); - Matcher m = p.matcher(html); - m.find(); - beeg_version = m.group(1); - } - String actualUrl; - { - String u = "https://beeg.com/api/v6/" + beeg_version + "/video/" + url.substring(url.lastIndexOf("/") + 1); - System.out.println(u); - Http http2 = Http.url(u); - http2.cookies(cookies); - JSONObject struct = http2.getJSON(); - System.out.println(struct); - try { - actualUrl = struct.getString("2160p").toString(); - } catch (Exception ex1) { - try { - actualUrl = struct.getString("1080p").toString(); - } catch (Exception ex2) { - try { - actualUrl = struct.getString("720p").toString(); - } catch (Exception ex3) { - try { - actualUrl = struct.getString("480p").toString(); - } catch (Exception ex4) { - actualUrl = struct.getString("240p").toString(); - } - } - } - } - System.out.println(actualUrl); - } - { - actualUrl = "https:" + actualUrl.replace("{DATA_MARKERS}", "data=pc_"// - + "UK"//languagecode? - + "__" + beeg_version + "_"); - System.out.println(actualUrl); - } - } -}