tweetlr 0.1.20 → 0.1.21
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -1
- data/.travis.yml +1 -0
- data/Gemfile +1 -1
- data/README.md +2 -3
- data/lib/tweetlr/core.rb +44 -35
- data/lib/tweetlr/processors/photo_service.rb +39 -55
- data/lib/tweetlr.rb +1 -1
- data/spec/combinators/twitter_tumblr_combinator_spec.rb +0 -4
- data/spec/processors/photo_services_processor_spec.rb +15 -15
- data/spec/spec_helper.rb +73 -594
- data/tweetlr.gemspec +1 -1
- metadata +72 -21
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#encoding: utf-8
|
2
2
|
require "bundler"
|
3
3
|
require "logger"
|
4
|
+
require "yaml"
|
4
5
|
require "#{File.dirname(__FILE__)}/../lib/tweetlr"
|
5
6
|
|
6
7
|
Bundler.require :default, :development, :test
|
@@ -10,8 +11,8 @@ logger.level = Logger::FATAL
|
|
10
11
|
Tweetlr::LogAware.log = logger
|
11
12
|
|
12
13
|
def check_pic_url_extraction(service)
|
13
|
-
image_url = Tweetlr::Processors::PhotoService
|
14
|
-
image_url
|
14
|
+
image_url = Tweetlr::Processors::PhotoService.find_image_url @links[service]
|
15
|
+
(image_url =~ Tweetlr::Processors::PhotoService::PIC_REGEXP).should be, "service #{service} not working, no picture extracted!"
|
15
16
|
end
|
16
17
|
|
17
18
|
def stub_oauth
|
@@ -42,32 +43,64 @@ def stub_twitter
|
|
42
43
|
end
|
43
44
|
|
44
45
|
def stub_twimg
|
45
|
-
Curl::Easy.any_instance.stub(:body_str).and_return %|<div class="
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
46
|
+
Curl::Easy.any_instance.stub(:body_str).and_return %|<div class="js-tweet-details-fixer tweet-details-fixer">
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
<div class="cards-media-container "><div data-card-url="//twitter.com/KSilbereisen/status/228035435237097472/photo/1/large" data-card-type="photo" class="cards-base cards-multimedia" data-element-context="platform_photo_card">
|
51
|
+
<div class="media">
|
52
|
+
|
53
|
+
<a class="twitter-timeline-link media-thumbnail" href="//twitter.com/KSilbereisen/status/228035435237097472/photo/1/large" data-url="https://pbs.twimg.com/media/AyolBSnCQAA0vdp.jpg:large" data-resolved-url-large="https://pbs.twimg.com/media/AyolBSnCQAA0vdp.jpg:large">
|
54
|
+
<img src="https://pbs.twimg.com/media/AyolBSnCQAA0vdp.jpg" alt="Embedded image permalink" width="281" height="375">
|
55
|
+
</a>
|
56
|
+
</div>
|
57
|
+
<div class="cards-content">
|
58
|
+
<div class="byline">
|
59
|
+
|
60
|
+
</div>
|
61
|
+
|
62
|
+
</div>
|
63
|
+
|
64
|
+
</div>
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
</div>
|
69
|
+
|
70
|
+
<div class="js-tweet-media-container "></div>
|
71
|
+
|
72
|
+
<div class="js-machine-translated-tweet-container"></div>
|
73
|
+
<div class="js-tweet-stats-container tweet-stats-container ">
|
74
|
+
</div>
|
75
|
+
<div class="client-and-actions">
|
76
|
+
<span class="metadata">
|
77
|
+
<span title="9:54 AM - 25 Jul 12">9:54 AM - 25 Jul 12</span>
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
<span class="flag-container flag-cards">
|
86
|
+
<button type="button" class="flaggable btn-link">
|
87
|
+
Flag media
|
88
|
+
</button>
|
89
|
+
<span class="flagged hidden">
|
90
|
+
Flagged
|
91
|
+
<span>
|
92
|
+
<a target="_blank" href="//support.twitter.com/articles/20069937">
|
93
|
+
(learn more)
|
94
|
+
</a>
|
95
|
+
</span>
|
96
|
+
</span>
|
97
|
+
</span>
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
</span>
|
102
|
+
</div>
|
103
|
+
</div>|
|
71
104
|
Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
|
72
105
|
end
|
73
106
|
|
@@ -130,6 +163,14 @@ Cache-Control: no-cache
|
|
130
163
|
Server: nginx/1.0.0 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
|
131
164
|
|
132
165
|
|
|
166
|
+
Curl::Easy.any_instance.stub(:body_str).and_return %|<div id="image-box">
|
167
|
+
<!-- / #the-image-container{ :'data-url' => @image.image.url(:large) } -->
|
168
|
+
<img alt="trending: laugenzopf camenbert. #wirsounterwegs " crossorigin="" id="the-image" src="http://s3.amazonaws.com/imgly_production/899582/large.jpg">
|
169
|
+
<div id="tagging-cursor"></div>
|
170
|
+
<form accept-charset="UTF-8" action="/peopletaggings" class="new_peopletagging" id="tag-people-form" method="post">
|
171
|
+
<div style="margin:0;padding:0;display:inline">
|
172
|
+
<input name="utf8" type="hidden" value="✓"><input name="authenticity_token" type="hidden" value="780G4Ra4X2R0AyNc01w2XKQHmd0122ZoIt478wIYeOI=">
|
173
|
+
</div>|
|
133
174
|
end
|
134
175
|
|
135
176
|
def stub_twitpic
|
@@ -172,11 +213,6 @@ end
|
|
172
213
|
|
173
214
|
#embedly powered lookups
|
174
215
|
|
175
|
-
def stub_foursquare
|
176
|
-
Curl::Easy.any_instance.stub(:body_str).and_return %|{"provider_url": "http://foursquare.com", "description": "See where your friends are, learn about the places they frequent, and unlock rewards as you travel. 8555 Fletcher PkwyLa Mesa, CA 91942(619) 589-0071", "title": "Matt S. checked in at Banbu Sushi Bar And Grill", "url": "https://playfoursquare.s3.amazonaws.com/pix/PNIBDBIPP5G2XGROCZXVCOHABOZP4MICHZVPJWZXZWAN3SEQ.jpg", "author_name": "Matt S.", "height": 345, "width": 460, "thumbnail_url": "https://playfoursquare.s3.amazonaws.com/pix/PNIBDBIPP5G2XGROCZXVCOHABOZP4MICHZVPJWZXZWAN3SEQ.jpg", "thumbnail_width": 460, "version": "1.0", "provider_name": "Foursquare", "type": "photo", "thumbnail_height": 345, "author_url": "https://foursquare.com/mjstraus"}|
|
177
|
-
Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
|
178
|
-
end
|
179
|
-
|
180
216
|
def stub_embedly
|
181
217
|
Curl::Easy.any_instance.stub(:body_str).and_return %|{"provider_url": "http://www.flickr.com/", "description": "Lady GaGa", "title": "Lady GaGa", "url": "http://farm6.static.flickr.com/5204/5319200155_c966f67dc3.jpg", "author_name": "mjcom18", "height": 468, "width": 307, "thumbnail_url": "http://farm6.static.flickr.com/5204/5319200155_c966f67dc3_t.jpg", "thumbnail_width": 66, "version": "1.0", "provider_name": "Flickr", "cache_age": 3600, "type": "photo", "thumbnail_height": 100, "author_url": "http://www.flickr.com/photos/57795463@N05/"}|
|
182
218
|
Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
|
@@ -465,569 +501,12 @@ end
|
|
465
501
|
|
466
502
|
def stub_foursquare
|
467
503
|
Curl::Easy.any_instance.stub(:perform).and_return Curl::Easy.new
|
468
|
-
Curl::Easy.any_instance.stub(:body_str).and_return
|
469
|
-
|
470
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
471
|
-
<html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:lift="http://liftweb.net" xmlns="http://www.w3.org/1999/xhtml">
|
472
|
-
<head>
|
473
|
-
<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
|
474
|
-
<meta content="foursquare" name="description" />
|
475
|
-
<meta content="foursquare" name="application-name" />
|
476
|
-
|
477
|
-
<meta content="Start the foursquare App" name="msapplication-tooltip" />
|
478
|
-
<meta content="/" name="msapplication-starturl" />
|
479
|
-
<meta content="width=1024;height=768" name="msapplication-window" />
|
480
|
-
<meta content="name=Recent Check-ins; action-uri=/; icon-uri=/favicon.ico" name="msapplication-task" />
|
481
|
-
<meta content="name=Profile;action-uri=/user;icon-uri=/favicon.ico" name="msapplication-task" />
|
482
|
-
<meta content="name=History;action-uri=/history;icon-uri=/favicon.ico" name="msapplication-task" />
|
483
|
-
<meta content="name=Badges;action-uri=/badges;icon-uri=/favicon.ico" name="msapplication-task" />
|
484
|
-
<meta content="name=Stats;action-uri=/stats;icon-uri=/favicon.ico" name="msapplication-task" />
|
485
|
-
|
486
|
-
|
487
|
-
<title>foursquare :: Sven @ kopiba</title>
|
488
|
-
<link href="https://static-s.foursquare.com/favicon-c62b82f6120e2c592a3e6f3476d66554.ico" type="image/x-icon" rel="icon" />
|
489
|
-
<link href="https://static-s.foursquare.com/favicon-c62b82f6120e2c592a3e6f3476d66554.ico" type="image/x-icon" rel="shortcut icon" />
|
490
|
-
<link href="https://static-s.foursquare.com/img/touch-icon-ipad-1d5a99e90171f6a0cc2f74920ec24021.png" sizes="72x72" rel="apple-touch-icon-precomposed" />
|
491
|
-
<link href="https://playfoursquare.s3.amazonaws.com/press/logo/foursquare-logo.svg" type="image/svg" rel="logo" />
|
492
|
-
<link href="https://static-s.foursquare.com/opensearch-6b463ddc6a73b41a3d4b1c705d814fcf.xml" title="foursquare" type="application/opensearchdescription+xml" rel="search" />
|
493
|
-
|
494
|
-
<link href="https://static-s.foursquare.com/styles/reset-ba1d59b0e53d380b12b3e97a428b3314.css" type="text/css" rel="stylesheet" />
|
495
|
-
<link href="https://static-s.foursquare.com/facebox/facebox-29383c5fc530ed391a05276abeb1959a.css" type="text/css" rel="stylesheet" />
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
<link href="https://static-s.foursquare.com/styles/master-redesign-e811ecb709c2414dbd8bbb382f312aa1.css" type="text/css" rel="stylesheet" />
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript" id="jquery"></script>
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
<script type="text/javascript">
|
511
|
-
var _kmq = _kmq || [];
|
512
|
-
function _kms(u){
|
513
|
-
setTimeout(function(){
|
514
|
-
var s = document.createElement('script'); var f = document.getElementsByTagName('script')[0]; s.type = 'text/javascript'; s.async = true;
|
515
|
-
s.src = u; f.parentNode.insertBefore(s, f);
|
516
|
-
}, 1);
|
517
|
-
}
|
518
|
-
// Use this for dev
|
519
|
-
//_kms('//i.kissmetrics.com/i.js');_kms('//doug1izaerwt3.cloudfront.net/0c1574f4c7da92b07e34862fcc6c505d531a957c.1.js');
|
520
|
-
</script>
|
521
|
-
|
522
|
-
|
523
|
-
<script type="text/javascript">
|
524
|
-
// Use this for production
|
525
|
-
_kms('//i.kissmetrics.com/i.js');_kms('//doug1izaerwt3.cloudfront.net/033f1ff04dc072af9d77e05e3fe10ed9b6ea4fcf.1.js');
|
526
|
-
</script>
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
<script src="https://static-s.foursquare.com/scripts/build/en/chrome/root-d0d815376f0111b37b1b2f3786ff5314.js" type="text/javascript"></script>
|
531
|
-
<script src="https://static-s.foursquare.com/scripts/build/en/foursquare/root-5c88202943112aa3305dcb2f9425a601.js" type="text/javascript"></script>
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
<script type="text/javascript">
|
546
|
-
(function() {
|
547
|
-
window.fourSq = window.fourSq || {};
|
548
|
-
window.fourSq.api = window.fourSq.api || {};
|
549
|
-
window.fourSq.fb = window.fourSq.fb || {};
|
550
|
-
window.fourSq.user = window.fourSq.user || {};
|
551
|
-
window.fourSq.debugLevel = function() { return fourSq.debug.Level.OFF; };
|
552
|
-
|
553
|
-
/**
|
554
|
-
* Setup API domain and token
|
555
|
-
*/
|
556
|
-
window.fourSq.api.config = {
|
557
|
-
API_BASE: 'https://api.foursquare.com/',
|
558
|
-
API_TOKEN: 'QEJ4AQPTMMNB413HGNZ5YDMJSHTOHZHMLZCAQCCLXIX41OMP',
|
559
|
-
API_IFRAME: 'https://api.foursquare.com/xdreceiver.html',
|
560
|
-
CLIENT_VERSION: '20111109'
|
561
|
-
};
|
562
|
-
|
563
|
-
/**
|
564
|
-
* Useful values for current user.
|
565
|
-
*/
|
566
|
-
window.fourSq.user.config = {
|
567
|
-
USER_PROFILE: undefined,
|
568
|
-
USER_LAT: 0,
|
569
|
-
USER_LNG: 0,
|
570
|
-
// Only used for display.
|
571
|
-
SU6: false,
|
572
|
-
LOCALE: 'en_US'
|
573
|
-
};
|
574
|
-
|
575
|
-
window.fourSq.fb.config = {
|
576
|
-
APP_ID: 86734274142,
|
577
|
-
SCOPE: 'offline_access,publish_stream,user_checkins,friends_checkins,user_location,user_birthday'
|
578
|
-
};
|
579
|
-
|
580
|
-
document.domain = 'foursquare.com';
|
581
|
-
})();
|
582
|
-
</script>
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
<script type="text/javascript">
|
587
|
-
$(function() {
|
588
|
-
$('a[rel*=facebox]').facebox();
|
589
|
-
$('.linkify').linkify();
|
590
|
-
|
591
|
-
var search = $('#search input').placeholder();
|
592
|
-
if ($.trim(search.val()) != '') {
|
593
|
-
search.keydown();
|
594
|
-
}
|
595
|
-
})
|
596
|
-
</script>
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
<meta content="NOINDEX" name="ROBOTS" />
|
602
|
-
|
603
|
-
|
604
|
-
<script src="https://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
|
605
|
-
|
606
|
-
|
607
|
-
<script src="https://static-s.foursquare.com/scripts/build/en/foursquare/comments-be605309e291ccdcaa2c7d2645743741.js" type="text/javascript"></script>
|
608
|
-
|
609
|
-
|
610
|
-
<script src="https://static-s.foursquare.com/scripts/build/en/foursquare/checkin-detail-page-2d377f73b6d6318b813cc6db39651fff.js" type="text/javascript"></script>
|
611
|
-
|
612
|
-
|
613
|
-
<script type="text/javascript">
|
614
|
-
$(function() {
|
615
|
-
var options = {
|
616
|
-
el: $('body')
|
617
|
-
}
|
618
|
-
|
619
|
-
options['lat'] = 53.558831084738;
|
620
|
-
options['lng'] = 9.963698387145996;
|
621
|
-
options['fuzzy'] = false;
|
622
|
-
options['venue'] = {"id":"v4b169255f964a52072ba23e3","venue":{"id":"4b169255f964a52072ba23e3","name":"kopiba","contact":{"phone":"4940343824","formattedPhone":"040\/343824","twitter":"kopiba"},"location":{"address":"Beim Grünen Jäger 24","lat":53.558831084738,"lng":9.963698387145996,"postalCode":"20357","city":"Hamburg","country":"Germany"},"categories":[{"id":"4bf58dd8d48988d16d941735","name":"Café","pluralName":"Cafés","shortName":"Café","icon":{"prefix":"https:\/\/foursquare.com\/img\/categories\/food\/cafe_","sizes":[32,44,64,88,256],"name":".png"},"primary":true}],"verified":true,"stats":{"checkinsCount":2903,"usersCount":478,"tipCount":26}}};
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
options['checkinId'] = '4f0c401ae4b020a8d96fb0b1';
|
627
|
-
|
628
|
-
|
629
|
-
if(typeof FRIENDS_PHOTOS_JSON != 'undefined') {
|
630
|
-
options = _.extend(options, {friendsPhotosJson: FRIENDS_PHOTOS_JSON});
|
631
|
-
}
|
632
|
-
|
633
|
-
if(typeof STREAM_PHOTOS_JSON != 'undefined') {
|
634
|
-
options = _.extend(options, {streamPhotosJson: STREAM_PHOTOS_JSON});
|
635
|
-
}
|
636
|
-
|
637
|
-
new fourSq.views.CheckinDetailPage(options);
|
638
|
-
});
|
639
|
-
</script>
|
640
|
-
|
641
|
-
|
642
|
-
</head>
|
643
|
-
<body>
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
<div id="wrapper">
|
648
|
-
|
649
|
-
|
650
|
-
<div id="header">
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
<div class="wrap loggedOut translate">
|
655
|
-
<a id="logo" href="/">foursquare</a>
|
656
|
-
<form id="search" method="get" action="/search">
|
657
|
-
<input placeholder="Search people and places..." name="q" type="text" />
|
658
|
-
<button>Search</button>
|
659
|
-
</form>
|
660
|
-
<div id="loginLink"><a href="/login">Log in</a></div>
|
661
|
-
<div id="menu"><a href="/signup">Sign up</a></div>
|
662
|
-
</div>
|
663
|
-
|
664
|
-
</div>
|
665
|
-
<div id="lift__noticesContainer__"></div>
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
<div class="translate wrap" id="signupPrompt">
|
672
|
-
<h3>foursquare helps you keep up with friends, discover what's nearby, save money & unlock rewards</h3>
|
673
|
-
<a class="greenButton biggerButton" href="/signup/?source=nav">Get Started Now</a>
|
674
|
-
<iframe scrolling="no" allowTransparency="true" src="https://www.facebook.com/plugins/facepile.php?app_id=86734274142&amp;width=600&amp;max_rows=1" style="border:none; overflow:hidden; width:600px; height: 70px;" frameborder="0"></iframe>
|
675
|
-
</div>
|
676
|
-
|
677
|
-
<style type="text/css">
|
678
|
-
#loginBeforeActionPopup {
|
679
|
-
padding: 10px;
|
680
|
-
width: 500px;
|
681
|
-
}
|
682
|
-
#loginBeforeActionPopup h2 {font-size: 21px;}
|
683
|
-
#loginBeforeActionPopup #signupPopup {}
|
684
|
-
#loginBeforeActionPopup #signupPopup p {
|
685
|
-
float: left;
|
686
|
-
line-height: 18px;
|
687
|
-
margin: 15px 0;
|
688
|
-
padding-top: 2px;
|
689
|
-
width: 330px;
|
690
|
-
}
|
691
|
-
#loginBeforeActionPopup #signupPopup .newGreenButton {
|
692
|
-
font-size: 18px;
|
693
|
-
height: 40px;
|
694
|
-
float: right;
|
695
|
-
line-height: 40px;
|
696
|
-
margin: 15px 0;
|
697
|
-
text-transform: none;
|
698
|
-
width: 140px;
|
699
|
-
}
|
700
|
-
#loginBeforeActionPopup #loginPopup {
|
701
|
-
border-top: 1px solid #d9d9d9;
|
702
|
-
padding-top: 10px;
|
703
|
-
}
|
704
|
-
#loginBeforeActionPopup #loginPopup .linkStyle {
|
705
|
-
border: none;
|
706
|
-
background: none;
|
707
|
-
color: #2398c9;
|
708
|
-
cursor: pointer;
|
709
|
-
font: inherit;
|
710
|
-
font-weight: bold;
|
711
|
-
padding: 0;
|
712
|
-
margin: 0;
|
713
|
-
}
|
714
|
-
#loginBeforeActionPopup #loginPopup .linkStyle:hover {text-decoration: underline;}
|
715
|
-
</style>
|
716
|
-
|
717
|
-
<div style="display:none;" class="translate" id="loginBeforeActionPopup">
|
718
|
-
|
719
|
-
<h2 class="newh2">Join foursquare to <span id="loginActionLabel">do that</span></h2>
|
720
|
-
<form method="POST" action="/signup/pre-signup">
|
721
|
-
<input value="" type="hidden" name="actionKey" id="loginActionKey" />
|
722
|
-
<input value="" type="hidden" name="source" id="loginSource" />
|
723
|
-
<input value="" type="hidden" name="continue" id="loginContinue" />
|
724
|
-
<div id="signupPopup">
|
725
|
-
<p>Foursquare helps you meet up with friends and find<br />new places to experience in your neighborhood.</p>
|
726
|
-
<input value="Get Started" name="signupSubmit" class="newGreenButton greenButton translate" type="submit" />
|
727
|
-
<div style="clear: both;"></div>
|
728
|
-
</div>
|
729
|
-
<div id="loginPopup">
|
730
|
-
<strong>Already a foursquare user?</strong> <input value="Log in" name="loginSubmit" class="linkStyle" type="submit" /> to continue.
|
731
|
-
</div>
|
732
|
-
</form>
|
733
|
-
|
734
|
-
</div>
|
735
|
-
|
736
|
-
|
737
|
-
|
504
|
+
Curl::Easy.any_instance.stub(:body_str).and_return %^<!DOCTYPE html><html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:og=\"http://opengraphprotocol.org/schema/\" xmlns:fb=\"http://www.facebook.com/2008/fbml\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /><meta name=\"application-name\" content=\"Foursquare\"/><meta name=\"msapplication-TileColor\" content=\"#0ca9c9\"/><meta name=\"msapplication-TileImage\" content=\"https://playfoursquare.s3.amazonaws.com/misc/foursquare-144-logo.png\"/><meta name=\"msapplication-tooltip\" content=\"Start the foursquare App\" /><meta name=\"msapplication-starturl\" content=\"/\" /><meta name=\"msapplication-window\" content=\"width=1024;height=768\" /><meta name=\"msapplication-task\" content=\"name=Recent Check-ins; action-uri=/; icon-uri=/favicon.ico\" /><meta name=\"msapplication-task\" content=\"name=Profile;action-uri=/user;icon-uri=/favicon.ico\" /><meta name=\"msapplication-task\" content=\"name=History;action-uri=/user/history;icon-uri=/favicon.ico\" /><meta name=\"msapplication-task\" content=\"name=Badges;action-uri=/user/badges;icon-uri=/favicon.ico\" /><meta name=\"msapplication-task\" content=\"name=Stats;action-uri=/user/stats;icon-uri=/favicon.ico\" /><link rel=\"icon\" href=\"/favicon.ico\" type=\"image/x-icon\"/><link rel=\"shortcut icon\" href=\"/favicon.ico\" type=\"image/x-icon\"/><link rel=\"apple-touch-icon-precomposed\" sizes=\"72x72\" href=\"/img/touch-icon-ipad.png\" /><link rel=\"apple-touch-icon-precomposed\" sizes=\"144x144\" href=\"/img/touch-icon-ipad-retina.png\" /><link rel=\"logo\" href=\"https://playfoursquare.s3.amazonaws.com/press/logo/foursquare-logo.svg\" type=\"image/svg\" /><link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"/opensearch.xml\" title=\"foursquare\" /><title>Sven @ kopiba</title><meta content=\"en\" http-equiv=\"Content-Language\" /><meta content=\"https://foursquare.com/sven_kr/checkin/4f0c401ae4b020a8d96fb0b1?ref=fb&source=openGraph&s=eU7t9fpmByekJgPb8IOuchQ9ibw\" property=\"og:url\" /><meta content=\"A check-in at kopiba\" property=\"og:title\" /><meta content=\"A check-in\" property=\"og:description\" /><meta content=\"playfoursquare:checkin\" property=\"og:type\" />
|
738
505
|
|
506
|
+
<meta content=\"https://irs0.4sqi.net/img/general/600x600/NKFGXXX41TIQJA0P25ZYSUYKUUROQLLWGUXXSA5ABUQFDDYE.jpg\" property=\"og:image\" />
|
739
507
|
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
<div class="twoColumns" id="checkinPage">
|
751
|
-
<div class="wideColumn">
|
752
|
-
|
753
|
-
|
754
|
-
<div id="userCheckin">
|
755
|
-
<div id="userPic">
|
756
|
-
<a href="/sven_kr"><img src="https://img-s.foursquare.com/userpix_thumbs/ZXPGHBJTWWSTMXN1.jpg" alt="Sven K." width="110" class="notranslate" height="110" /></a>
|
757
|
-
</div>
|
758
|
-
<div id="userDetails">
|
759
|
-
<h2><a href="/sven_kr">Sven K.</a> checked in to <a href="/v/kopiba/4b169255f964a52072ba23e3">kopiba</a> </h2>
|
760
|
-
<p class="shout linkify">#coffeediary</p>
|
761
|
-
|
762
|
-
<p class="date">
|
763
|
-
8 hours ago via <em><a href="https://foursquare.com/download/#/iphone">foursquare for iPhone</a></em>
|
764
|
-
</p>
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
</div>
|
778
|
-
</div>
|
779
|
-
|
780
|
-
|
781
|
-
<div>
|
782
|
-
<script type="text/javascript">
|
783
|
-
// <![CDATA[
|
784
|
-
var STREAM_PHOTOS_JSON = "{\"count\":1,\"items\":[{\"id\":\"4f0c4020e4b0261c93fd4ede\",\"createdAt\":1326202912,\"url\":\"https:\u005c/\u005c/img-s.foursquare.com\u005c/pix\u005c/NKFGXXX41TIQJA0P25ZYSUYKUUROQLLWGUXXSA5ABUQFDDYE.jpg\",\"sizes\":{\"count\":4,\"items\":[{\"url\":\"https:\u005c/\u005c/img-s.foursquare.com\u005c/pix\u005c/NKFGXXX41TIQJA0P25ZYSUYKUUROQLLWGUXXSA5ABUQFDDYE.jpg\",\"width\":537,\"height\":720},{\"url\":\"https:\u005c/\u005c/img-s.foursquare.com\u005c/derived_pix\u005c/NKFGXXX41TIQJA0P25ZYSUYKUUROQLLWGUXXSA5ABUQFDDYE_300x300.jpg\",\"width\":300,\"height\":300},{\"url\":\"https:\u005c/\u005c/img-s.foursquare.com\u005c/derived_pix\u005c/NKFGXXX41TIQJA0P25ZYSUYKUUROQLLWGUXXSA5ABUQFDDYE_100x100.jpg\",\"width\":100,\"height\":100},{\"url\":\"https:\u005c/\u005c/img-s.foursquare.com\u005c/derived_pix\u005c/NKFGXXX41TIQJA0P25ZYSUYKUUROQLLWGUXXSA5ABUQFDDYE_36x36.jpg\",\"width\":36,\"height\":36}\u005d},\"user\":{\"id\":\"304170\",\"firstName\":\"Sven\",\"lastName\":\"K.\",\"photo\":\"https:\u005c/\u005c/img-s.foursquare.com\u005c/userpix_thumbs\u005c/ZXPGHBJTWWSTMXN1.jpg\",\"gender\":\"male\",\"homeCity\":\"Hamburg, Germany\"},\"visibility\":\"friends\"}\u005d}";
|
785
|
-
// ]]>
|
786
|
-
</script>
|
787
|
-
<div id="comments">
|
788
|
-
|
789
|
-
<div id="4f0c4020e4b0261c93fd4ede" class="comment withPhoto">
|
790
|
-
<div class="commentLeft">
|
791
|
-
<a href="/sven_kr"><img src="https://img-s.foursquare.com/userpix_thumbs/ZXPGHBJTWWSTMXN1.jpg" alt="Sven K." width="60" class="notranslate" height="60" /></a>
|
792
|
-
</div>
|
793
|
-
<div class="commentPhoto">
|
794
|
-
<span title="Delete your image?" class="flagDelete">
|
795
|
-
|
796
|
-
</span>
|
797
|
-
<img src="https://img-s.foursquare.com/pix/NKFGXXX41TIQJA0P25ZYSUYKUUROQLLWGUXXSA5ABUQFDDYE.jpg" />
|
798
|
-
</div>
|
799
|
-
</div>
|
800
|
-
|
801
|
-
</div>
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
<div class="translate" id="cantComment">
|
811
|
-
Only <span class="notranslate">Sven's</span> friends can see comments and add their own.
|
812
|
-
</div>
|
813
|
-
|
814
|
-
|
815
|
-
</div>
|
816
|
-
|
817
|
-
</div>
|
818
|
-
|
819
|
-
<div class="narrowColumn">
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
<div id="venueDetails" class="box">
|
826
|
-
<div id="venueIcon">
|
827
|
-
<img src="https://static-s.foursquare.com/img/categories/food/cafe-f0c1523ad255a6e9e65e27c2ca02576c.png" class="thumb" />
|
828
|
-
<img src="https://static-s.foursquare.com/img/specials/check-in-f870bc36c0cc2a842fac06c35a6dccdf.png" class="specialImage" title="Check-in Special" />
|
829
|
-
</div>
|
830
|
-
<div class="vcard" id="venueName">
|
831
|
-
<h5 class="fn org"><a href="/v/kopiba/4b169255f964a52072ba23e3">kopiba</a></h5>
|
832
|
-
<p>Hamburg</p>
|
833
|
-
<div class="hiddenAddress">
|
834
|
-
<span class="adr"><span class="street-address">Beim Grünen Jäger 24</span><br /><span class="locality">Hamburg</span>, <span class="region"></span> <span class="postal-code">20357</span><br /><span class="tel">040/343824</span><br /></span>
|
835
|
-
</div>
|
836
|
-
</div>
|
837
|
-
<div id="listControlHolder"></div>
|
838
|
-
<div id="vmap"></div>
|
839
|
-
|
840
|
-
</div>
|
841
|
-
|
842
|
-
|
843
|
-
<div class="box">
|
844
|
-
<div class="statsBlock translate">
|
845
|
-
<div class="stat">
|
846
|
-
<strong>Total<br />People</strong><br /><span class="notranslate">478</span>
|
847
|
-
</div>
|
848
|
-
<div class="stat">
|
849
|
-
<strong>Total<br />Checkins</strong><br /><span class="notranslate">2903</span>
|
850
|
-
</div>
|
851
|
-
<div class="stat">
|
852
|
-
<strong>Here<br />Now</strong><br /><span class="notranslate">1</span>
|
853
|
-
</div>
|
854
|
-
</div>
|
855
|
-
</div>
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
</div>
|
867
|
-
<div style="clear: both;"></div>
|
868
|
-
</div>
|
869
|
-
|
870
|
-
<script type="text/javascript">
|
871
|
-
$('.delete').tooltip();
|
872
|
-
$('.flagDelete').tooltip();
|
873
|
-
</script>
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
<div id="containerFooter">
|
878
|
-
<div class="wideColumn">
|
879
|
-
<ul class="translate">
|
880
|
-
<li><a href="https://foursquare.com/about">About</a></li>
|
881
|
-
<li><a href="https://foursquare.com/apps">Apps</a></li>
|
882
|
-
<li><a href="http://blog.foursquare.com">Blog</a></li>
|
883
|
-
<li><a href="http://developers.foursquare.com">Developers</a></li>
|
884
|
-
<li><a href="http://foursquare.com/help">Help</a></li>
|
885
|
-
<li><a href="https://foursquare.com/jobs/">Jobs</a></li>
|
886
|
-
<li><a href="https://foursquare.com/legal/privacy">Privacy</a></li>
|
887
|
-
<li><a href="https://foursquare.com/legal/terms">Terms</a></li>
|
888
|
-
<li><a href="http://store.foursquare.com">Store</a></li>
|
889
|
-
<li>
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
<script type="text/javascript">
|
895
|
-
//<![CDATA[
|
896
|
-
// IMPORTANT: This is what does the redirect to the correct domain
|
897
|
-
fourSq.i18n.redirect();
|
898
|
-
// ]]>
|
899
|
-
</script>
|
900
|
-
|
901
|
-
|
902
|
-
<script type="text/javascript">
|
903
|
-
//<![CDATA[
|
904
|
-
$(function() {
|
905
|
-
$('#currentLanguage a').text(fourSq.i18n.currentLang());
|
906
|
-
});
|
907
|
-
// ]]>
|
908
|
-
</script>
|
909
|
-
|
910
|
-
<span id="currentLanguage">
|
911
|
-
<a rel="facebox" href="#languagesContainer"></a>
|
912
|
-
</span>
|
913
|
-
|
914
|
-
<div style="display:none" class="translate" id="languagesContainer">
|
915
|
-
Do none of the words on this site make sense to you? Select your
|
916
|
-
favorite language below for greater clarity:
|
917
|
-
<ul class="languages notranslate">
|
918
|
-
<li><a onclick="fourSq.i18n.setLang('en'); return false;" href="#">English</a></li><li><a onclick="fourSq.i18n.setLang('it'); return false;" href="#">Italiano</a></li><li><a onclick="fourSq.i18n.setLang('de'); return false;" href="#">Deutsch</a></li><li><a onclick="fourSq.i18n.setLang('es'); return false;" href="#">Español</a></li><li><a onclick="fourSq.i18n.setLang('fr'); return false;" href="#">Français</a></li><li><a onclick="fourSq.i18n.setLang('ja'); return false;" href="#">日本語</a></li><li><a onclick="fourSq.i18n.setLang('th'); return false;" href="#">ภาษาไทย</a></li><li><a onclick="fourSq.i18n.setLang('ko'); return false;" href="#">한국어</a></li><li><a onclick="fourSq.i18n.setLang('ru'); return false;" href="#">Русский</a></li><li><a onclick="fourSq.i18n.setLang('pt'); return false;" href="#">Português</a></li><li><a onclick="fourSq.i18n.setLang('id'); return false;" href="#">Bahasa Indonesia</a></li>
|
919
|
-
</ul>
|
920
|
-
</div>
|
921
|
-
</li>
|
922
|
-
</ul>
|
923
|
-
</div>
|
924
|
-
<div class="narrowColumn translate">
|
925
|
-
foursquare © 2011 <img src="https://static-s.foursquare.com/img/chrome/iconHeart-03e49accc507d9d99e7e4dfaa73868cb.png" height="9" width="11" alt="" /> Lovingly made in NYC & SF
|
926
|
-
</div>
|
927
|
-
</div>
|
928
|
-
</div>
|
929
|
-
</div>
|
930
|
-
|
931
|
-
<div id="footer">
|
932
|
-
<div style="display: none;" class="wrap">
|
933
|
-
<p class="right">Discover more brands in the <a href="/pages">page gallery</a>.</p>
|
934
|
-
<p>Follow these brands to unlock badges and find interesting tips around your city!</p>
|
935
|
-
|
936
|
-
|
937
|
-
<ul><li><a href="/vh1"><img src="https://static-s.foursquare.com/img/footer/vh1-bb870b187d4e4378457e4a8e7df33e28.png" height="50" /></a></li><li><a href="/luckymagazine"><img src="https://static-s.foursquare.com/img/footer/luckymagazine-81550ed80bb77ddf9fa7e09c94ef4ac3.png" height="50" /></a></li><li><a href="/askmen"><img src="https://static-s.foursquare.com/img/footer/askmen-32a19bae424cafba11d7131fbc763f6d.png" height="50" /></a></li><li><a href="/eater"><img src="https://static-s.foursquare.com/img/footer/eater-5a8d27da22828104e13b0a4a50a74db8.png" height="50" /></a></li><li><a href="/joinred"><img src="https://static-s.foursquare.com/img/footer/joinred-6b8edbfec8aeb5e256f7824ca757cb81.png" height="50" /></a></li><li><a href="/bbcamerica"><img src="https://static-s.foursquare.com/img/footer/bbcamerica-d777b112c51696700dbd348e1b1e6817.png" height="50" /></a></li></ul>
|
938
|
-
|
939
|
-
</div>
|
940
|
-
</div>
|
941
|
-
|
942
|
-
<div id="overlayFrame">
|
943
|
-
<div id="overlayPage">
|
944
|
-
<div id="photoDetails">
|
945
|
-
<div class="wrap">
|
946
|
-
<img src="https://static-s.foursquare.com/img/gallery-next-4fe893b7a611387276ef45cd74632759.png" height="32" width="32" alt="" class="navControl" id="next" />
|
947
|
-
<img src="https://static-s.foursquare.com/img/gallery-prev-6da401eecb2e8a276e2a89bea5ac3819.png" height="32" width="32" alt="" class="navControl" id="previous" />
|
948
|
-
<img width="32" height="32" alt="" src="" id="userPic" />
|
949
|
-
<h5 id="userName"><a href="#"></a></h5>
|
950
|
-
<p id="date"></p>
|
951
|
-
</div>
|
952
|
-
</div>
|
953
|
-
<div id="mainPhoto"></div>
|
954
|
-
|
955
|
-
<div style="display:none" class="flagFrame unknown">
|
956
|
-
<div class="flagForm translate">
|
957
|
-
<h3>Flag this Photo</h3>
|
958
|
-
<ul>
|
959
|
-
<li><input id="spam_scam" value="spam_scam" type="radio" name="problem" /> <label for="spam_scam">Spam/Scam</label></li>
|
960
|
-
<li><input id="nudity" value="nudity" type="radio" name="problem" /> <label for="nudity">Nudity</label></li>
|
961
|
-
<li><input id="hate_violence" value="hate_violence" type="radio" name="problem" /> <label for="hate_violence">Hate/Violence</label></li>
|
962
|
-
<li><input id="illegal" value="illegal" type="radio" name="problem" /> <label for="illegal">Illegal</label></li>
|
963
|
-
<li><input id="unrelated" value="unrelated" type="radio" name="problem" /> <label for="unrelated">Unrelated</label></li>
|
964
|
-
</ul>
|
965
|
-
<p class="noProblemMessage">Please select a problem.</p>
|
966
|
-
<p><input class="submitFlag greenButton" value="Submit Flag" name="submitFlag" type="button" name="problem" /></p>
|
967
|
-
</div>
|
968
|
-
<div class="flagStatus translate">
|
969
|
-
<div class="status success">
|
970
|
-
<h3>Flag this Photo</h3>
|
971
|
-
<p>Your flag was submitted successfully.</p>
|
972
|
-
</div>
|
973
|
-
<div class="status failure">
|
974
|
-
<h3>Flag this Photo</h3>
|
975
|
-
<p>Your flag did not submit. Please try again later.</p>
|
976
|
-
</div>
|
977
|
-
</div>
|
978
|
-
</div>
|
979
|
-
</div>
|
980
|
-
</div>
|
981
|
-
|
982
|
-
|
983
|
-
|
984
|
-
<script src="https://ssl.google-analytics.com/ga.js" type="text/javascript"></script>
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
<script type="text/javascript">
|
989
|
-
try {
|
990
|
-
var pageTracker = _gat._getTracker('UA-2322480-5');
|
991
|
-
pageTracker._trackPageview();
|
992
|
-
pageTracker._trackPageLoadTime();
|
993
|
-
} catch(err) {
|
994
|
-
}
|
995
|
-
</script>
|
996
|
-
<script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script>
|
997
|
-
<script type="text/javascript">
|
998
|
-
var _sf_async_config={uid:11280,domain:'foursquare.com'};
|
999
|
-
if (window.chartbeat_path) {
|
1000
|
-
_sf_async_config.path = chartbeat_path;
|
1001
|
-
}
|
1002
|
-
(function(){
|
1003
|
-
function loadChartbeat() {
|
1004
|
-
window._sf_endpt=(new Date()).getTime();
|
1005
|
-
var e = document.createElement('script');
|
1006
|
-
e.setAttribute('language', 'javascript');
|
1007
|
-
e.setAttribute('type', 'text/javascript');
|
1008
|
-
e.setAttribute('src',
|
1009
|
-
(('https:' == document.location.protocol) ? 'https://s3.amazonaws.com/' : 'http://') +
|
1010
|
-
'static.chartbeat.com/js/chartbeat.js');
|
1011
|
-
document.body.appendChild(e);
|
1012
|
-
}
|
1013
|
-
var oldonload = window.onload;
|
1014
|
-
window.onload = (typeof window.onload != 'function') ?
|
1015
|
-
loadChartbeat : function() { oldonload(); loadChartbeat(); };
|
1016
|
-
})();
|
1017
|
-
|
1018
|
-
</script>
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
<script src="/ajax_request/liftAjax.js" type="text/javascript"></script>
|
1026
|
-
|
1027
|
-
|
1028
|
-
</body>
|
1029
|
-
</html>
|
1030
|
-
^
|
508
|
+
<meta content=\"2012-01-10T13:41:46.000Z\" property=\"playfoursquare:date\" /><meta content=\"https://foursquare.com/v/kopiba/4b169255f964a52072ba23e3\" property=\"playfoursquare:place\" /><meta content=\"Foursquare\" property=\"og:site_name\" /><meta content=\"86734274142\" property=\"fb:app_id\" /><meta content=\"@foursquare\" name=\"twitter:site\" /><meta content=\"photo\" name=\"twitter:card\" /><meta content=\"Foursquare\" name=\"twitter:app:name:iphone\" /><meta content=\"Foursquare\" name=\"twitter:app:name:ipad\" /><meta content=\"Foursquare\" name=\"twitter:app:name:googleplay\" /><meta content=\"foursquare://checkins/4f0c401ae4b020a8d96fb0b1?s=eU7t9fpmByekJgPb8IOuchQ9ibw\" name=\"twitter:app:url:iphone\" /><meta content=\"foursquare://checkins/4f0c401ae4b020a8d96fb0b1?s=eU7t9fpmByekJgPb8IOuchQ9ibw\" name=\"twitter:app:url:ipad\" />
|
509
|
+
^
|
1031
510
|
end
|
1032
511
|
|
1033
512
|
def stub_eyeem
|