occasionally subtle
No title available

PR's Tumblrdome
ojovivo
$LAYYYTER
Interview Vampire Daily
cherry valley forever

Andulka

No title available
Misplaced Lens Cap

Origami Around
Sade Olutola
TMBGareOK. The Official They Might Be Giants tumblr
EXPECTATIONS
Cosmic Funnies

titsay
h
No title available
Cosimo Galluzzi
hello vonnie
seen from Vietnam

seen from United States
seen from United States

seen from Bangladesh
seen from Japan
seen from United States

seen from Colombia
seen from France

seen from Brazil

seen from Brazil

seen from Mexico

seen from Nepal
seen from Brazil

seen from Colombia
seen from Philippines

seen from Libya

seen from Sweden
seen from Venezuela

seen from United States
seen from Jordan
@nickiminaj-instagram
package ti;
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.nio.charset.Charset; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern;
import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document;
import com.google.common.base.Joiner; import com.google.common.base.Splitter; import com.google.common.collect.Collections2; import com.google.common.collect.Lists;
public class InstagramReplicator { public static InstagramReplicator newInstance(String instagramUser, String tumblrUser, String tagName) throws IOException { return new InstagramReplicator(instagramUser, tumblrUser, tagName); } public void doUpdate() throws IOException { System.out.println(“Checking for updates: instagramUser=” + instagramUser); for(String instagramUrl : loadInstagramUrls()) { if(!currentImages.contains(instagramUrl)) { submitPostToTumblr ( loadInstagramPost(instagramUrl) ); currentImages.add(instagramUrl); if(currentImages.size() > 100) { currentImages.remove(currentImages.get(0)); } } } } private List<String> loadInstagramUrls() throws IOException { List<String> instagramUrls = findMatches ( Jsoup.connect(“http://instagram.com/” + instagramUser).get().outerHtml(), ""link":"(http:\\/\\/instagram\.com\\/p\\/[^\\]*\\/)"“, true ); Collections.reverse(instagramUrls); //System.out.println(instagramUser + ” - “ + instagramUrls); return instagramUrls; } private Post loadInstagramPost(String postUrl) throws IOException { System.out.println("Loading post: postUrl=” + postUrl); String docText = Jsoup.connect(postUrl).get().outerHtml(); //System.out.println(“doctext=” + docText); String caption = “<p>” + findMatch(docText, “"caption":"(.*?[^\\])"”, false) + “</p>”; String tagRegEx = “#([A-Za-z0-9_]+)”; String userRegEx = “@([A-Za-z0-9_]+)”; List<String> tags = Lists.newArrayList(); tags.addAll(findMatches(caption, tagRegEx, false)); tags.addAll(findMatches(caption, userRegEx, false)); //caption = caption.replaceAll(tagRegEx, “<a href=\\"http://www.gramfeed.com/instagram/tags#$1\\">$0</a>”); caption = caption.replaceAll(userRegEx, “<a href=\\"http://instagram.com/$1\\">$0</a>”); if(docText.contains(“"is_video":true”)) { caption += “<p><a href=\"” + postUrl + “\">Watch Video</a></p>”; } return new Post ( postUrl, findMatch(docText, “"display_src":"([^"]*)"”, true), //imageUrl caption, Joiner.on(“,”).join(tags) ); } private void submitPostToTumblr(Post post) throws IOException { System.out.println(“Submitting post: post=” + post); try { HttpURLConnection connection = (HttpURLConnection) new URL(“http://www.tumblr.com/svc/post/update”).openConnection();
connection.setDoOutput(true); connection.setDoInput(true); connection.setInstanceFollowRedirects(false); connection.setRequestMethod(“POST”); connection.setRequestProperty(“Cookie”, tumblrCookie); connection.setRequestProperty(“X-tumblr-puppies”, getSecureFormKey()); connection.setRequestProperty(“X-tumblr-form-key”,“OdhVH6QQTBzl9IZZDViXwyj5vOU”); connection.setRequestProperty(“Origin”,“http://www.tumblr.com”); connection.setRequestProperty(“Accept-Encoding”,“gzip,deflate,sdch”); connection.setRequestProperty(“Host”,“www.tumblr.com”); connection.setRequestProperty(“Accept-Language”,“en-US,en;q=0.8”); connection.setRequestProperty(“User-Agent”,“Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36”); connection.setRequestProperty(“Content-Type”,“application/json”); connection.setRequestProperty(“Accept”,“application/json, text/javascript, */*; q=0.01”); connection.setRequestProperty(“Referer”,“http://www.tumblr.com/new/photo”); connection.setRequestProperty(“X-Requested-With”,“XMLHttpRequest”); connection.setRequestProperty(“Connection”,“keep-alive”); connection.setRequestProperty(“DNT”,“1”); connection.setUseCaches(false);
OutputStream output = connection.getOutputStream(); output.write ( (“{"form_key":"OdhVH6QQTBzl9IZZDViXwyj5vOU","context_id":"","context_page":"dashboard",” + “"editor_type":"rich","is_rich_text[one]":"0","is_rich_text[two]":"1","is_rich_text[three]":"0",” + “"channel_id":"” + tumblrUser + "","post[slug]":"",“ + ”"post[source_url]":"“ + post.postUrl + ”","post[date]":"","post[three]":"“ + post.postUrl + ”","MAX_FILE_SIZE":"10485760","post[type]":"photo",“ + ”"post[two]":"“ + post.caption + ”","post[tags]":"“ + Joiner.on(”,“).join(userTags, post.tags, instagramUser, "instagram”).replace(’_’, ’ ’) + "","post[publish_on]":"","post[state]":"0 3","post[photoset_layout]":"1","post[photoset_order]":"o1",“ + ”"images[o1]":"“ + post.imageUrl + ”","photo_src[]":"“ + post.imageUrl + ”"}“).getBytes(Charset.forName("UTF-8”)) ); output.close();
InputStream input = connection.getInputStream(); while(input.read() != -1) {}
System.out.println(“Post submission complete, httpStatusCode=” + connection.getResponseCode());
input.close(); } catch (IOException e) { if(consecutiveTumblrErrors++ > 10) { System.err.println(“FATAL: Too many consecutive tumblr failures, shutting down”); System.exit(1); } throw e; } consecutiveTumblrErrors = 0; } private String getSecureFormKey() throws IOException { Connection connection = Jsoup.connect(“http://www.tumblr.com/svc/secure_form_key”) .header(“Cookie”, tumblrCookie) .header(“X-tumblr-form-key”,“OdhVH6QQTBzl9IZZDViXwyj5vOU”) .header(“Origin”,“http://www.tumblr.com”) .header(“Accept-Encoding”,“gzip,deflate,sdch”) .header(“Host”,“www.tumblr.com”) .header(“Accept-Language”,“en-US,en;q=0.8”) .header(“User-Agent”,“Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36”) .header(“Content-Type”,“application/json”) .header(“Accept”,“application/json, text/javascript, */*; q=0.01”) .header(“Referer”,“http://www.tumblr.com/new/photo”) .header(“X-Requested-With”,“XMLHttpRequest”) .header(“Connection”,“keep-alive”) .header(“DNT”,“1”) .header(“Content-Length”, “0”); connection.post(); String secureFormKey = connection.response().header(“X-tumblr-secure-form-key”); System.out.println(“secureFormKey=” + secureFormKey);
return secureFormKey; }
private String findMatch(String string, String regex, boolean isUrl) { List<String> matches = findMatches(string, regex, isUrl); if(matches.isEmpty()) { return “”; } return matches.get(0); } private List<String> findMatches(String string, String regex, boolean isUrl) { Matcher matcher = Pattern .compile(regex) .matcher(string);
List<String> matches = Lists.newArrayList();
while(matcher.find()) { matches.add ( matcher .group(1) .replace ( (isUrl ? “\” : “”), “” ) ); }
return matches; } //nested classes private class Post { public Post(String postUrl, String imageUrl, String caption, String tags) { this.postUrl = postUrl; this.imageUrl = imageUrl; this.caption = caption; this.tags = tags; } @Override public String toString() { return “Post [postUrl=” + postUrl + “, imageUrl=” + imageUrl + “, caption=” + caption + “, tags=” + tags + “]”; }
private final String postUrl; private final String imageUrl; private final String caption; private final String tags; } //constructors
private InstagramReplicator(String instagramUser, String tumblrUser, String tagName) throws IOException { this.instagramUser = instagramUser; this.tumblrUser = tumblrUser; this.userTags = tagName; currentImages = loadInstagramUrls();
/* currentImages.removeAll ( Splitter .on(’,’) .trimResults() .omitEmptyStrings() .splitToList ( ) );*/
}
//attributes
private final String instagramUser; private final String tumblrUser; private final String userTags; private final List<String> currentImages;
//static
public static void main(String[] args) throws IOException { Executors.newScheduledThreadPool(0).scheduleWithFixedDelay ( new Runnable() { List<InstagramReplicator> replicators = Lists.newArrayList ( InstagramReplicator.newInstance(“willaaaahh”, “willaaaahhh”, “willa holland”), InstagramReplicator.newInstance(“emmaroberts”, “emmaroberts9”, “emma roberts”), InstagramReplicator.newInstance(“tfarm7”, “tfarm11”, “taissa farmiga”), InstagramReplicator.newInstance(“taylorswift”, “taylorswift26”, “taylor swift,taylorswift13”), InstagramReplicator.newInstance(“yelyahwilliams”, “yelyahwilliams-instagram”, “hayley williams”),
InstagramReplicator.newInstance(“MileyCyrus”, “mileycyrus-instagram”, “miley cyrus”), //InstagramReplicator.newInstance(“badgalriri”, “badgalriri-instagram”, “rihanna”), InstagramReplicator.newInstance(“beyonce”, “beyonce-instagram”, “beyonce knowles”), InstagramReplicator.newInstance(“caradelevingne”, “caradelevingne-instagram”, “cara delevingne”), InstagramReplicator.newInstance(“nickiminaj”, “nickiminaj-instagram”, “nicki minaj”), InstagramReplicator.newInstance(“emmyrossum”, “emmyrossum-instagram”, “emmy rossum”), InstagramReplicator.newInstance(“tigersjaw”, “tigersjaw-instagram”, “tigers jaw,brianna collins”), InstagramReplicator.newInstance(“tayjardine”, “tayjardine-instagram”, “tay jardine,taylor jardine,we are the in crowd”), InstagramReplicator.newInstance(“lordemusic”, “lordemusic-instagram”, “lorde”) );
Iterator<InstagramReplicator> replicatorIterator = replicators.iterator();
@Override public void run() { if(!replicatorIterator.hasNext()) { replicatorIterator = replicators.iterator(); }
InstagramReplicator replicator = replicatorIterator.next();
try { replicator.doUpdate(); } catch (Throwable e) { e.printStackTrace(); } } }, 0, 5, TimeUnit.SECONDS ); } private static int consecutiveTumblrErrors = 0; private static final String tumblrCookie = “”; }
Eternity - SoundCloud
Listen to Eternity by Adam on #SoundCloud
God Freestyle
Album · 2021 · 3 Songs
And now a word from @kyliejenner & 2 other bad btchs at the Mike Epps show @eppsie 🤣😜
Young Money til da death of me #HappyFathersDay fellas 🎀
A btch out in Atlanta eatin dem peaches!!!!🍑 Me & La Flare performing #MakeLove #BadBtchsONLY 👅🎀
A T L A N T A
Queen of carrying cups
Easy breezy beautiful thugger girls