private void getMyUsername() { // Use cache to load my username: if (JCache.isInCache(JCache.cache_auth_name, "me")) { myID = (String) JCache.get(JCache.cache_auth_name, "me"); return; } facecraper.scrape(L_LOGIN, L_HOME, null, "{'my_username': '******' }"); Matcher match = Pattern.compile("\\/.+?\\/(.+?)$").matcher(facecraper.elem("my_username", 0).attr("href")); if (match.find()) myID = match.group(1); // If the username doesn't exist prepend : "profile.php?id=" JCache.put(JCache.cache_auth_name, "me", myID); }
@SuppressWarnings("unchecked") public <T> T get(String path, Class<T> classtype, Object... params) { String[] path_split = path.split("/"); String who_what = path_split[0]; // Grab user/page: String link_user = L_HOME; boolean is_ID = Util.isNumeric(who_what); if (who_what.toLowerCase().equals("me")) { link_user += myID; who_what = myID; } else link_user += (is_ID ? "profile.php?id=" : "") + who_what; if (path_split.length == 1) { User new_user = new User(); new_user.construct( facecraper, link_user + (is_ID ? "%2Fabout&sk=about§ion=contact-info&pnref=about" : "/about?section=contact-info&pnref=about"), who_what); return (T) new_user; } else { switch (path_split[1].toLowerCase()) { case S_FRIENDS: int start = 0; int length = -1; try { start = (int) params[0]; } catch (Exception e) { } try { length = (int) params[1]; } catch (Exception e) { } if (path_split.length == 3) { try { return (T) User.constructFriends( facecraper, link_user + (is_ID ? "&sk=friends" : "/friends"), who_what, Integer.parseInt(path_split[2]), 1) .get(0); } catch (Exception e) { e.printStackTrace(); return null; } } else return (T) User.constructFriends( facecraper, link_user + (is_ID ? "&sk=friends" : "/friends"), who_what, start, length); case S_FEED: // Fetch all recent posts from a certain user: return (T) facecraper.scrape(L_LOGIN, link_user, null, T_FEEDS).elems("feeds"); case S_HOME: { facecraper.setProperty( WebScraper.Props.ENGINE_GET_CALLBACK, new EngineCallback() { public void before_get(PhantomJS ctx) {} public void after_get(PhantomJS ctx) { ctx.waitForLoad(ctx.getClient()); for (int i = 0; i < 10; i++) { ((JavascriptExecutor) ctx.getClient()) .executeScript("window.scrollTo(0, document.body.scrollHeight)"); try { Thread.sleep(500); } catch (Exception e) { } } } }); return (T) facecraper.scrape(L_LOGIN, L_HOME, null, T_HOME_FEEDS).elems("home"); } case S_PAGE: break; case S_PUBLISH: break; case S_SEARCH: break; case S_UNPUBLISH: break; } } return null; }
public void end() { facecraper.end(); }