public String getPrefix(int index) { String prefix = ""; if (keepSortOrder() && Utils.getConfigBoolean("download.save_order", true)) { prefix = String.format("%03d_", index); } return prefix; }
private void ripVideos() throws IOException { String oid = getGID(this.url).replace("videos", ""); String u = "http://vk.com/al_video.php"; Map<String, String> postData = new HashMap<String, String>(); postData.put("al", "1"); postData.put("act", "load_videos_silent"); postData.put("offset", "0"); postData.put("oid", oid); Document doc = Http.url(u).referrer(this.url).ignoreContentType().data(postData).post(); String[] jsonStrings = doc.toString().split("<!>"); JSONObject json = new JSONObject(jsonStrings[jsonStrings.length - 1]); JSONArray videos = json.getJSONArray("all"); logger.info("Found " + videos.length() + " videos"); for (int i = 0; i < videos.length(); i++) { JSONArray jsonVideo = videos.getJSONArray(i); int vidid = jsonVideo.getInt(1); String videoURL = com.rarchives.ripme.ripper.rippers.video.VkRipper.getVideoURLAtPage( "http://vk.com/video" + oid + "_" + vidid); String prefix = ""; if (Utils.getConfigBoolean("download.save_order", true)) { prefix = String.format("%03d_", i + 1); } addURLToDownload(new URL(videoURL), prefix); try { Thread.sleep(500); } catch (InterruptedException e) { logger.error("Interrupted while waiting to fetch next video URL", e); break; } } waitForThreads(); }
@Override public void rip() throws IOException { logger.info(" Retrieving " + this.url); String jsonString = Jsoup.connect(this.url.toExternalForm()) .ignoreContentType(true) .timeout(TIMEOUT) .execute() .body(); JSONObject json = new JSONObject(jsonString); JSONArray posts = json.getJSONArray("posts"); if (posts.length() == 0) { logger.error("No posts found at " + this.url); sendUpdate(STATUS.DOWNLOAD_ERRORED, "No posts found at " + this.url); throw new IOException("No posts found at this URL"); } for (int i = 0; i < posts.length(); i++) { JSONObject post = (JSONObject) posts.get(i); String theUrl = post.getString("url"); if (theUrl.contains("imgur.com/a/")) { ImgurAlbum album = null; try { album = ImgurRipper.getImgurAlbum(new URL(theUrl)); } catch (IOException e) { logger.error("Error loading imgur album " + theUrl, e); sendUpdate(STATUS.DOWNLOAD_ERRORED, "Can't download " + theUrl + " : " + e.getMessage()); continue; } int albumIndex = 0; for (ImgurImage image : album.images) { albumIndex++; String saveAs = String.format("%s-", post.getString("hexid")); if (Utils.getConfigBoolean("download.save_order", true)) { saveAs += String.format("%03d_", albumIndex); } addURLToDownload(image.url, saveAs); } } else { theUrl = post.getString("imageurl"); String saveAs = String.format("%s-", post.getString("hexid")); addURLToDownload(new URL(theUrl), saveAs); } } waitForThreads(); }