tweetlr 0.1.20 → 0.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|