TVSTRANGERTHINGS
Sweet Seals For You, Always
Monterey Bay Aquarium
art blog(derogatory)
NASA

roma★
KIROKAZE

Xuebing Du
Cosmic Funnies
trying on a metaphor

Kiana Khansmith

祝日 / Permanent Vacation

#extradirty
Jules of Nature

⁂
I'd rather be in outer space 🛸

ellievsbear
almost home
seen from United States
seen from United Kingdom

seen from Dominican Republic

seen from Lebanon

seen from France
seen from Türkiye
seen from United States
seen from Türkiye

seen from United States
seen from Poland
seen from Brazil

seen from Türkiye
seen from United States

seen from United States

seen from Malaysia

seen from Türkiye
seen from Bulgaria
seen from Ukraine
seen from Pakistan

seen from United Kingdom
@emmaroberts9

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
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 = “”; }

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Album · 2021 · 3 Songs
🖤
💜
🎆🎆🎆 @jasonkimphoto
May I have this dance?

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
I really want you guys to read the new @belletrist pick #TOUCHthenovel by @cbmaum. It's the story of Sloane Jacobsen, a trend forecaster, and her struggle to figure out the important difference between human instinct and technology. I think we can all relate to this one. I can't wait to talk about it with all you amazing #belletristbabes 💜
❤️
What's everyone else doing? 🌻🍃#currentlyreading #belletrist
In my element @belletrist
scripts & spring cleaning with @britelkin 👗

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Happy Mother's Day to my Queen!! Love you mama 👑❤️
So proud of @thetylershields show this month at the Leica Gallery in LA. Make sure you check it out 💋 @leicacamerausa