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/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::send "image_url_#{service}".to_sym, @links[service]
14
- image_url.should =~ Tweetlr::Processors::PhotoService::PIC_REGEXP
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="entities-media-container " style="min-height:580px">
46
- <div class="tweet-media">
47
- <div class="media-instance-container">
48
- <div class="twimg">
49
- <a target="_blank" href="http://twitter.com/KSilbereisen/status/228042798161596416/photo/1/large">
50
- <img src="https://p.twimg.com/Ayort3pCEAAHRrz.jpg">
51
- </a>
52
- </div>
53
- <span class="flag-container">
54
- <button type="button" class="flaggable btn-link">
55
- Flag this media
56
- </button>
57
- <span class="flagged hidden">
58
- Flagged
59
- <span>
60
- <a target="_blank" href="//support.twitter.com/articles/20069937">
61
- (learn more)
62
- </a>
63
- </span>
64
- </span>
65
- </span>
66
- <div class="media-attribution">
67
- <span>powered by</span> <img src="/phoenix/img/turkey-icon.png"> <a target="_blank" data-media-type="Twimg" class="media-attribution-link" href="http://photobucket.com/twitter">Photobucket</a>
68
- </div>
69
- </div>
70
- </div> </div>|
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 %^<?xml version="1.0" encoding="UTF-8"?>
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 &amp; 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;amp;width=600&amp;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&amp;source=openGraph&amp;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
- <div class="wrap" id="container">
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 &amp; 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