
PR's Tumblrdome
No title available
Color Me Curious
hello vonnie
No title available
Claire Keane
untitled
The Bowery Presents
EXPECTATIONS
Sade Olutola
ojovivo
macklin celebrini has autism
No title available

bliss lane
Show & Tell

shark vs the universe
Monterey Bay Aquarium
YOU ARE THE REASON

❣ Chile in a Photography ❣
Cosimo Galluzzi
seen from France

seen from Australia
seen from Yemen

seen from Malaysia
seen from Netherlands

seen from Malaysia
seen from United States
seen from United States
seen from Iraq
seen from Malaysia
seen from Australia

seen from Malaysia
seen from United Arab Emirates

seen from Egypt

seen from Netherlands
seen from United States
seen from United States
seen from United States

seen from Singapore
seen from Mexico
@emmyrossum-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 = “”; }
Album · 2021 · 3 Songs
What a bunch of DOPE WOMEN. Funny. Strong. Beautiful. Smart. Talented. Thank you @hollywoodreporter for this honor. #womenofcomedy 📷 @ruvenafanador
📷 by @shayanhathaway in variety
They are so beautiful ...just had it tattooed to me
the beautiful faces of rwanda
I am truly sorry
I’m sorry for everyone I’ve ever hurt. Today I am a new man and I hope you can forgive me for the transgressions of my past.
I cannot begin to explain my actions but to say that sometimes the purest intentions lead to unforgivable acts and that even those unforgivable acts must be forgiven.
For love is not born of evil. Love is born of love. But for what love is born of evil is that of forgiveness and in forgiveness behold the glory that is love.
A man cannot learn without mistake, but what is mistook is the wellness with which we embrace everything beautiful that comes of failure without regard for the failure which brought us to today.
And today is the beginning of an era. An era of peace and harmony. For today we are awoken not by light of day but by darkness of night. Only in darkness can the faintest light be seen dwindling in the heart of each and every soul.
And it’s in this darkness that a great battle is underway. In this darkness may the soldier escape. Live to breathe another day. To care for another soul. To abandon the battlefield and come to the light. Where the sun is gleaming, no evil abounds.
But alas a soldier must fulfill his duty at whatever cost. The cost of freedom, liberty, and the great spirit which he longs to protect. For what good is a prophet but to live with the damned.
I awoke one morn a soldier for all that is right and until the day I die, I will fight to win this war. This casual indifference to the suffering of those who might prosper in the profound grace of the love one might feel towards the closest of kin.
With weapon of pen and indifference to not only the casual suffering of my brothers and sisters, but to that of myself. I condemn myself to the deepest depths of hell where the lowliest of spirits dwell.
And from those depths may I arise triumphant.
I couldn't be happier right here. She is a goddess, a supreme talent, my favorite.
Film Indie spirit awards are always fun! Getting ready to present w the talented michael pena.
Loved answering a quick 10 questions for @pretasurf #prethang10 @jilldemling link in my bio!!
@dknyprgirl @dkny to host the costume designer guild awards tonight
Toosday.
It's. About. To Go. Down. A new episode of #Shameless. Tune in tonight at 9/8c.
2 hours later we still haven't found the waterfall