Merge pull request #682 from kevin51jiang/master

VSCO member profile fix
This commit is contained in:
Kevin Jiang 2018-06-09 00:45:14 -04:00 committed by GitHub
commit 17741899ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 10 deletions

View File

@ -2,17 +2,14 @@ package com.rarchives.ripme.ripper.rippers;
import com.rarchives.ripme.ripper.AbstractHTMLRipper; import com.rarchives.ripme.ripper.AbstractHTMLRipper;
import com.rarchives.ripme.utils.Http; import com.rarchives.ripme.utils.Http;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.*; import java.util.*;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import org.json.JSONObject; import org.json.JSONObject;
import org.jsoup.Jsoup; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document; import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element; import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import org.jsoup.select.Elements;
@ -119,7 +116,7 @@ public class VscoRipper extends AbstractHTMLRipper {
} }
private String getUserName() { private String getUserName() {
Pattern p = Pattern.compile("^https?://vsco.co/([a-zA-Z0-9]+)/images/[0-9]+"); Pattern p = Pattern.compile("^https?://vsco.co/([a-zA-Z0-9-]+)/images/[0-9]+");
Matcher m = p.matcher(url.toExternalForm()); Matcher m = p.matcher(url.toExternalForm());
if (m.matches()) { if (m.matches()) {
@ -170,7 +167,7 @@ public class VscoRipper extends AbstractHTMLRipper {
result = givenURL; result = givenURL;
LOGGER.debug("Found image URL: " + givenURL); LOGGER.debug("Found image URL: " + givenURL);
break;//immediatly stop after getting URL (there should only be 1 image to be downloaded) break;//immediately stop after getting URL (there should only be 1 image to be downloaded)
} }
} }
@ -192,7 +189,7 @@ public class VscoRipper extends AbstractHTMLRipper {
public String getGID(URL url) throws MalformedURLException { public String getGID(URL url) throws MalformedURLException {
//Single Image //Single Image
Pattern p = Pattern.compile("^https?://vsco\\.co/([a-zA-Z0-9]+)/media/([a-zA-Z0-9]+)"); Pattern p = Pattern.compile("^https?://vsco\\.co/([a-zA-Z0-9-]+)/media/([a-zA-Z0-9]+)");
Matcher m = p.matcher(url.toExternalForm()); Matcher m = p.matcher(url.toExternalForm());
if (m.matches()){ if (m.matches()){
@ -203,7 +200,7 @@ public class VscoRipper extends AbstractHTMLRipper {
} }
//Member profile (Usernames should all be different, so this should work. //Member profile (Usernames should all be different, so this should work.
p = Pattern.compile("^https?://vsco.co/([a-zA-Z0-9]+)/images/[0-9]+"); p = Pattern.compile("^https?://vsco.co/([a-zA-Z0-9-]+)/images/[0-9]+");
m = p.matcher(url.toExternalForm()); m = p.matcher(url.toExternalForm());
if (m.matches()){ if (m.matches()){

View File

@ -7,7 +7,7 @@ import java.net.URL;
public class VscoRipperTest extends RippersTest { public class VscoRipperTest extends RippersTest {
/** /**
* Testing Rip. * Testing single image.
* @throws IOException * @throws IOException
*/ */
public void testSingleImageRip() throws IOException { public void testSingleImageRip() throws IOException {
@ -15,6 +15,25 @@ public class VscoRipperTest extends RippersTest {
testRipper(ripper); testRipper(ripper);
} }
/**
* Tests profile rip.
* @throws IOException
*/
public void testProfileRip() throws IOException {
VscoRipper ripper = new VscoRipper(new URL("https://vsco.co/jonathangodoy/images/1"));
testRipper(ripper);
}
/**
* Prevents Bug #679 from happening again.
* https://github.com/RipMeApp/ripme/issues/679
* @throws IOException
*/
public void testHyphenatedRip() throws IOException {
VscoRipper ripper = new VscoRipper(new URL("https://vsco.co/jolly-roger/images/1"));
testRipper(ripper);
}
/** /**
* Make sure it names the folder something sensible. * Make sure it names the folder something sensible.
* @throws IOException * @throws IOException