diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/InstagramRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/InstagramRipper.java index ab44edfd..e78834ba 100644 --- a/src/main/java/com/rarchives/ripme/ripper/rippers/InstagramRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/InstagramRipper.java @@ -127,11 +127,11 @@ public class InstagramRipper extends AbstractHTMLRipper { return m.group(1); } - p = Pattern.compile("^https?://www.instagram.com/explore/tags/([^/]+)/?"); - m = p.matcher(url.toExternalForm()); - if (m.matches()) { - return m.group(1); - } +// p = Pattern.compile("^https?://www.instagram.com/explore/tags/([^/]+)/?"); +// m = p.matcher(url.toExternalForm()); +// if (m.matches()) { +// return m.group(1); +// } throw new MalformedURLException("Unable to find user in " + url); } @@ -212,7 +212,8 @@ public class InstagramRipper extends AbstractHTMLRipper { JSONArray datas = new JSONArray(); try { JSONArray profilePage = json.getJSONObject("entry_data").getJSONArray("ProfilePage"); - datas = profilePage.getJSONObject(0).getJSONObject("user").getJSONObject("media").getJSONArray("nodes"); + datas = profilePage.getJSONObject(0).getJSONObject("graphql").getJSONObject("user") + .getJSONObject("edge_owner_to_timeline_media").getJSONArray("edges"); } catch (JSONException e) { // Handle hashtag pages datas = json.getJSONObject("entry_data").getJSONArray("TagPage").getJSONObject(0) @@ -220,15 +221,16 @@ public class InstagramRipper extends AbstractHTMLRipper { } for (int i = 0; i < datas.length(); i++) { JSONObject data = (JSONObject) datas.get(i); - Long epoch = data.getLong("date"); + data = data.getJSONObject("node"); + Long epoch = data.getLong("taken_at_timestamp"); Instant instant = Instant.ofEpochSecond(epoch); String image_date = DateTimeFormatter.ofPattern("yyyy_MM_dd_hh:mm_").format(ZonedDateTime.ofInstant(instant, ZoneOffset.UTC)); if (data.getString("__typename").equals("GraphSidecar")) { try { - Document slideShowDoc = Http.url(new URL ("https://www.instagram.com/p/" + data.getString("code"))).get(); + Document slideShowDoc = Http.url(new URL("https://www.instagram.com/p/" + data.getString("shortcode"))).get(); List<String> toAdd = getPostsFromSinglePage(slideShowDoc); for (int slideShowInt=0; slideShowInt<toAdd.size(); slideShowInt++) { - addURLToDownload(new URL(toAdd.get(slideShowInt)), image_date + data.getString("code")); + addURLToDownload(new URL(toAdd.get(slideShowInt)), image_date + data.getString("shortcode")); } } catch (MalformedURLException e) { logger.error("Unable to download slide show, URL was malformed"); @@ -246,9 +248,9 @@ public class InstagramRipper extends AbstractHTMLRipper { addURLToDownload(new URL(getOriginalUrl(data.getString("thumbnail_src"))), image_date); } else { if (!Utils.getConfigBoolean("instagram.download_images_only", false)) { - addURLToDownload(new URL(getVideoFromPage(data.getString("code"))), image_date); + addURLToDownload(new URL(getVideoFromPage(data.getString("shortcode"))), image_date); } else { - sendUpdate(RipStatusMessage.STATUS.DOWNLOAD_WARN, "Skipping video " + data.getString("code")); + sendUpdate(RipStatusMessage.STATUS.DOWNLOAD_WARN, "Skipping video " + data.getString("shortcode")); } } } catch (MalformedURLException e) { @@ -319,7 +321,8 @@ public class InstagramRipper extends AbstractHTMLRipper { try { JSONObject json = getJSONFromPage(doc); JSONArray profilePage = json.getJSONObject("entry_data").getJSONArray("ProfilePage"); - JSONArray datas = profilePage.getJSONObject(0).getJSONObject("user").getJSONObject("media").getJSONArray("nodes"); + JSONArray datas = profilePage.getJSONObject(0).getJSONObject("graphql").getJSONObject("user") + .getJSONObject("edge_owner_to_timeline_media").getJSONArray("edges"); logger.info(datas.length()); if (datas.length() == 0) { return false;