nokaya 0.1.4 → 0.1.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7cf2e87f1e40279a1220f88f24ded051fc6cc509
4
- data.tar.gz: bbb1edd6c9f9ddc6feab833896d3273fa40052a8
3
+ metadata.gz: 032fd55336df4db4c3d02eda35164c36980a8f86
4
+ data.tar.gz: d42998381833d58c50f7de80f37812ae856035e9
5
5
  SHA512:
6
- metadata.gz: 5fa9df499c64231d4bd81e31e6970c480984ac6ce67134d1c2475d40e3c4f8e52b35211a120f980c90befc31125cf75a3f94f5b393b4b55b0e0fc962ceef70de
7
- data.tar.gz: 911bde52f46904c7c3960a346c8d9534db81f9182ea67fa35776bd7d879f349931086dcb0851c4e3e549a731f0f1ed6866ac0f7edcff4f5d08ebc900f8a480d7
6
+ metadata.gz: 9f7ed80acd7a065001c088300139658894562e15b19632a01a8a81f0232165e647586847c9618b8c2a2620c953c642eeb0c30d38f76d333cca36f5ad07ec712f
7
+ data.tar.gz: b6663dd0b77110947e8cf03430af0ec11f6097d6df715de7daf63b6c676a55e545113413c481a7c59d910b31f0e9fa4ada438951181a03cec111452ecdd42b04
@@ -0,0 +1 @@
1
+ service_name: travis-ci
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --fail-fast
@@ -0,0 +1,18 @@
1
+ language: ruby
2
+ cache: bundler
3
+
4
+ rvm:
5
+ - "2.1.2"
6
+ - "2.1.1"
7
+ - "2.1.0"
8
+ - "2.0.0"
9
+
10
+ script: 'bundle exec rake spec'
11
+
12
+ branches:
13
+ only:
14
+ - master
15
+
16
+ notifications:
17
+ email:
18
+ - ericdejonckheere@gmail.com
@@ -1,3 +1,8 @@
1
+ # 0.1.5 - 2014-09-21
2
+
3
+ - New: tvshow. Download poster + banner from (part of) a tvshow title.
4
+ - New tests suite.
5
+
1
6
  # 0.1.4
2
7
 
3
8
  - Fix: file extension for Movie.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Gem Version](https://badge.fury.io/rb/nokaya.svg)](http://badge.fury.io/rb/nokaya)
1
+ [![Gem Version](https://badge.fury.io/rb/nokaya.svg)](http://badge.fury.io/rb/nokaya) [![Build Status](https://travis-ci.org/ericdke/nokaya.svg?branch=master)](https://travis-ci.org/ericdke/nokaya)
2
2
 
3
3
  # Nokaya
4
4
 
@@ -24,7 +24,7 @@ Example:
24
24
 
25
25
  ### Movie
26
26
 
27
- Downloads a movie poster given (part of) a movie title.
27
+ Downloads a movie poster from (part of) a movie title.
28
28
 
29
29
  `nokaya movie title`
30
30
 
@@ -44,6 +44,26 @@ This is useful for remakes:
44
44
 
45
45
  (gives the 1972 version)
46
46
 
47
+ ### TV Show
48
+
49
+ Downloads a tvshow poster and banner from (part of) a movie title.
50
+
51
+ `nokaya tvshow title`
52
+
53
+ Example:
54
+
55
+ `nokaya tvshow battlestar galactica`
56
+
57
+ Use option `-a` to get an alternative.
58
+
59
+ `nokaya -tv battlestar galactica`
60
+
61
+ (gives the 1978 version)
62
+
63
+ `nokaya -tv -a battlestar galactica`
64
+
65
+ (gives the 2003 version)
66
+
47
67
  ### App store
48
68
 
49
69
  Downloads a set of icons and screenshots for a given app name.
data/Rakefile CHANGED
@@ -1,10 +1,6 @@
1
- require 'rspec/core/rake_task'
2
- require 'bundler/gem_tasks'
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
3
 
4
- # Default directory to look in is `/specs`
5
- # Run with `rake spec`
6
- RSpec::Core::RakeTask.new(:spec) do |task|
7
- task.rspec_opts = ['--color', '--format', 'nested']
8
- end
4
+ RSpec::Core::RakeTask.new(:spec)
9
5
 
10
6
  task :default => :spec
@@ -10,13 +10,13 @@ module Nokaya
10
10
  @type = :adn
11
11
  parsed = parse(args[0])
12
12
  @urls = [get_basic(parsed)].compact
13
- @author = author(parsed)
13
+ @author = author_name(parsed)
14
14
  @filenames = name_files()
15
15
  end
16
16
 
17
17
  private
18
18
 
19
- def author page
19
+ def author_name page
20
20
  page.css('.p-nickname')[0].text unless page.nil?
21
21
  end
22
22
 
@@ -5,7 +5,7 @@ module Nokaya
5
5
 
6
6
  package_name "Nokaya"
7
7
 
8
- %w{basic status movie workers instagram favd adn tumblr tumblr_album imgur_album flickr_album photonet deviantart imageshack_user apple appstore musicstore logs}.each {|file| require_relative "#{file}"}
8
+ %w{basic status movie workers instagram favd adn tumblr tumblr_album imgur_album flickr_album photonet deviantart imageshack_user apple appstore musicstore tvshow logs}.each {|file| require_relative "#{file}"}
9
9
 
10
10
  class_option :verbose, aliases: '-V', type: :boolean, default: true, desc: 'Enable verbose mode'
11
11
 
@@ -15,12 +15,23 @@ module Nokaya
15
15
  option :output, aliases: "-o", type: :string, desc: "Specify an output path"
16
16
  option :alt, aliases: "-a", type: :boolean, desc: "Find an alternative response"
17
17
  def movie *args
18
- puts Status.wait if options['verbose']
18
+ puts Status.wait_api if options['verbose']
19
19
  image = Movie.new(args, options)
20
20
  image.save
21
21
  puts Status.saved(image) if options['verbose']
22
22
  end
23
23
 
24
+ desc "tvshow TITLE", "Get the tvshow poster from TVdb (nokaya -tv title)"
25
+ map "-tv" => :tvshow
26
+ option :output, aliases: "-o", type: :string, desc: "Specify an output path"
27
+ option :alt, aliases: "-a", type: :boolean, desc: "Find an alternative response"
28
+ def tvshow *args
29
+ puts Status.wait_api if options['verbose']
30
+ image = TVShow.new(args, options)
31
+ image.save
32
+ puts Status.saved(image) if options['verbose']
33
+ end
34
+
24
35
  desc "appstore NAME", "Get a set of icons and screenshots for Apple apps (nokaya -as name)"
25
36
  map "-as" => :appstore
26
37
  option :output, aliases: "-o", type: :string, desc: "Specify an output path"
@@ -8,14 +8,14 @@ module Nokaya
8
8
  @type = :deviantart
9
9
  parsed = parse(args[0])
10
10
  @urls = album(parsed).compact
11
- @author = author()
11
+ @author = author_name()
12
12
  @path = "#{@path}/deviantart-#{@author}-#{@workers.timed}"
13
13
  @filenames = name_files()
14
14
  end
15
15
 
16
16
  private
17
17
 
18
- def author
18
+ def author_name
19
19
  @workers.sanitize(@args[0].split('.com/')[1].chomp('/'))
20
20
  end
21
21
 
@@ -10,13 +10,13 @@ module Nokaya
10
10
  @type = :favd
11
11
  parsed = parse(args[0])
12
12
  @urls = get_favd(parsed).compact
13
- @author = author(parsed)
13
+ @author = author_name(parsed)
14
14
  @filenames = name_files()
15
15
  end
16
16
 
17
17
  private
18
18
 
19
- def author page
19
+ def author_name page
20
20
  username = page.css('.username')
21
21
  username.empty? ? [] : username[0].text
22
22
  end
@@ -9,7 +9,7 @@ module Nokaya
9
9
  super(args, options)
10
10
  @type = :flickr
11
11
  parsed = parse(args[0])
12
- @author = author()
12
+ @author = author_name()
13
13
  @urls = album(parsed).compact
14
14
  @path = "#{@path}/flickr-#{@author}-#{title(parsed)}-#{@workers.timed}"
15
15
  @filenames = name_files()
@@ -27,7 +27,7 @@ module Nokaya
27
27
  refs.map {|l| l['data-defer-src']}
28
28
  end
29
29
 
30
- def author
30
+ def author_name
31
31
  /photos\/\w+/.match(@args[0]).to_s.split('/')[1]
32
32
  end
33
33
 
@@ -8,14 +8,14 @@ module Nokaya
8
8
  @type = :imageshack
9
9
  parsed = parse(args[0])
10
10
  @urls = album(parsed).compact
11
- @author = author()
11
+ @author = author_name()
12
12
  @path = "#{@path}/imageshack-#{@author}-#{@workers.timed}"
13
13
  @filenames = name_files()
14
14
  end
15
15
 
16
16
  private
17
17
 
18
- def author
18
+ def author_name
19
19
  @args[0].split('/').last.chomp('/')
20
20
  end
21
21
 
@@ -9,7 +9,7 @@ module Nokaya
9
9
  super(args, options)
10
10
  @type = :imgur
11
11
  parsed = parse(args[0])
12
- @author = author(parsed)
12
+ @author = author_name(parsed)
13
13
  @urls = album(parsed)
14
14
  @path = "#{@path}/imgur-#{@author}-#{@workers.timed}"
15
15
  @filenames = name_files()
@@ -23,7 +23,7 @@ module Nokaya
23
23
  refs.map {|l| "http:#{l['href']}"}
24
24
  end
25
25
 
26
- def author page
26
+ def author_name page
27
27
  return [] if page.nil?
28
28
  res = page.css('.description')[0].children[1].children.text
29
29
  @workers.sanitize(res)
@@ -10,13 +10,13 @@ module Nokaya
10
10
  @type = :instagram
11
11
  parsed = parse(args[0])
12
12
  @urls = [get_basic(parsed)].compact
13
- @author = author(parsed)
13
+ @author = author_name(parsed)
14
14
  @filenames = name_files()
15
15
  end
16
16
 
17
17
  private
18
18
 
19
- def author page
19
+ def author_name page
20
20
  return [] if page.nil?
21
21
  page.xpath("//meta[@property='instapp:owner_user_id']/@content")[0].value
22
22
  end
@@ -5,7 +5,8 @@ module Nokaya
5
5
  "\nDownloading #{img_link}, please wait...\n\n"
6
6
  end
7
7
  def self.saved object
8
- "Image saved in #{object.path}\n\n"
8
+ object.urls.size > 1 ? im = 'Images' : im = 'Image'
9
+ "#{im} saved in #{object.path}\n\n"
9
10
  end
10
11
  def self.saved_album object
11
12
  "Album saved in #{object.path}\n\n"
@@ -13,6 +14,9 @@ module Nokaya
13
14
  def self.no_can_do
14
15
  "Canceled: unable to get the page contents.\n\n"
15
16
  end
17
+ def self.no_data
18
+ "Canceled: unable to get content.\n\n"
19
+ end
16
20
  def self.no_cnx
17
21
  "Canceled: connexion error.\n\n"
18
22
  end
@@ -46,6 +50,9 @@ module Nokaya
46
50
  def self.wait
47
51
  "\nScraping the page. Downloads will start automatically. Please wait...\n\n"
48
52
  end
53
+ def self.wait_api
54
+ "\nGetting infos from the API. Downloads will start automatically. Please wait...\n\n"
55
+ end
49
56
  def self.album_done
50
57
  "\nAlbum downloaded.\n\n"
51
58
  end
@@ -0,0 +1,81 @@
1
+ # encoding: utf-8
2
+ module Nokaya
3
+
4
+ class TVShow < Basic
5
+
6
+ require 'tvdb_party'
7
+
8
+ NOKAYA_TVDB_API_KEY = 'C9493DA27231C706'
9
+
10
+ attr_accessor :language, :poster_url, :banner_url, :plot, :title
11
+
12
+ def initialize(args, options = {})
13
+ super(args, options)
14
+ @type = :tvshow
15
+ @language = 'en'
16
+ begin
17
+ @tvdb = TvdbParty::Search.new(NOKAYA_TVDB_API_KEY)
18
+ rescue SocketError
19
+ Logs.rec.error Status.no_cnx
20
+ return nil
21
+ end
22
+ terms = args.join(' ')
23
+ show_obj = find(terms, options)
24
+ return nil if show_obj.nil?
25
+ create_details(show_obj)
26
+ @urls = [@poster_url, @banner_url]
27
+ @filenames = name_files()
28
+ end
29
+
30
+ private
31
+
32
+ def name_files
33
+ @urls.map do |url|
34
+ "#{@type.to_s}-#{name}-#{File.basename(url)}"
35
+ end
36
+ end
37
+
38
+ def find(title, options)
39
+ res = @tvdb.search(title)
40
+ unless options[:alt]
41
+ if !res[0].nil?
42
+ return @tvdb.get_series_by_id(res[0]['seriesid'])
43
+ elsif !res[1].nil?
44
+ return @tvdb.get_series_by_id(res[1]['seriesid'])
45
+ end
46
+ else
47
+ if !res[1].nil?
48
+ return @tvdb.get_series_by_id(res[1]['seriesid'])
49
+ elsif !res[2].nil?
50
+ return @tvdb.get_series_by_id(res[2]['seriesid'])
51
+ end
52
+ end
53
+ return nil
54
+ end
55
+
56
+ def create_details(show_obj)
57
+ @title = show_obj.name
58
+ @name = @workers.sanitize(@title)
59
+ @poster_url = find_poster_url(show_obj)
60
+ @banner_url = find_banner_url(show_obj)
61
+ @plot = find_plot(show_obj)
62
+ @year = show_obj.first_aired.year
63
+ @ref_url = "http://imdb.com/title/#{show_obj.imdb_id}/"
64
+ end
65
+
66
+ def find_poster_url(show_obj)
67
+ poster = show_obj.posters(@language).first
68
+ return poster.url
69
+ end
70
+
71
+ def find_banner_url(show_obj)
72
+ banner = show_obj.series_banners(@language).first
73
+ return banner.url
74
+ end
75
+
76
+ def find_plot(show_obj)
77
+ show_obj.overview
78
+ end
79
+
80
+ end
81
+ end
@@ -1,3 +1,3 @@
1
1
  module Nokaya
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -21,10 +21,12 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency "thor", "~> 0.18"
22
22
  spec.add_dependency "nokogiri", '~> 1.6'
23
23
  spec.add_dependency "spotlite", "~> 0.8"
24
+ spec.add_dependency "tvdb_party", "~> 0.7"
24
25
 
25
26
  spec.add_development_dependency "bundler", "~> 1.6"
26
27
  spec.add_development_dependency "rake", "~> 10.3"
27
28
  spec.add_development_dependency "rspec", "~> 3.0"
28
29
  spec.add_development_dependency "guard", "~> 2.6"
29
30
  spec.add_development_dependency "guard-rspec", "~> 4.3"
31
+ spec.add_development_dependency "coveralls"
30
32
  end
@@ -0,0 +1,109 @@
1
+ <!DOCTYPE html>
2
+ <html class="no-js breakpoint-phone">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
+ <meta charset="utf-8">
6
+ <title>App.net | charl photo: Oops. BuzzFeedUK, meet the SEA! [files.app.net]</title>
7
+ <link rel="icon" type="image/x-icon" href="https://d2c01jv13s9if1.cloudfront.net/i/N/3/X/N3XbM8bGmJ1x0ZMcmYF4IE_mtag.ico">
8
+ <link rel="apple-touch-icon-precomposed" href="https://d2c01jv13s9if1.cloudfront.net/i/Y/l/w/YlwmDpLY0Cw0lV3OfrN68rDwYRs.png">
9
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
10
+ <meta name="HandheldFriendly" content="True">
11
+ <meta name="MobileOptimized" content="320">
12
+ <meta name="apple-mobile-web-app-capable" content="yes">
13
+ <!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading -->
14
+ <meta http-equiv="cleartype" content="on">
15
+ <meta name="description" content="Oops. BuzzFeedUK, meet the SEA! [files.app.net]">
16
+
17
+ <link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet" type="text/css">
18
+
19
+ <meta property="og:title" content="App.net | charl photo: Oops. BuzzFeedUK, meet the SEA! [files.app.net]">
20
+ <meta property="og:site_name" content="App.net">
21
+ <meta property="og:type" content="website">
22
+ <meta property="og:description" content="Oops. BuzzFeedUK, meet the SEA! [files.app.net]">
23
+ <meta property="og:image" content="https://files.app.net/1/1176038/aAzhGKr0HnF6Qvx0m5y4H3DRO8t3MRUWJshlLLfv4lcJ545lYdmY5ijA3CTfvZ1I8vJN0-gNuGXlLzpDjf5diwg3WZREDWMsiCKLEM1Rzi5XBPnIjUkixFpJ5_srdyjqA_tpw-9joHD8LkYLP9GFWrWd7cVs02ijwOdBlJ25-LfG1FIz9I-oCCiWamGjtcGUX">
24
+ <meta property="og:url" content="https://alpha.app.net/charl/post/30055986/photo/1">
25
+ <link rel="alternate" type="application/json+oembed" href="https://api.app.net/oembed?url=https%3A%2F%2Falpha.app.net%2Fcharl%2Fpost%2F30055986%2Fphoto%2F1" title="App.net oEmbed">
26
+ <link rel="stylesheet" href="https://d2c01jv13s9if1.cloudfront.net/c/p/f/7/pf71uAQzx-Y-QcueKcBW-Z5baGk.css" type="text/css" class="ac-css-adn_base">
27
+
28
+ <link rel="stylesheet" href="https://d2c01jv13s9if1.cloudfront.net/c/e/5/c/e5cEUKT89AFSceKEHLWkMPrhaD0.css" type="text/css" class="ac-css-pau_bootstrap">
29
+
30
+ <meta name="referrer" content="always">
31
+ <script>
32
+ /* grunticon Stylesheet Loader | https://github.com/filamentgroup/grunticon | (c) 2012 Scott Jehl, Filament Group, Inc. | MIT license. */
33
+ window.grunticon=function(e){if(e&&3===e.length){var t=window,n=!(!t.document.createElementNS||!t.document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect||!document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1")||window.opera&&-1===navigator.userAgent.indexOf("Chrome")),o=function(o){var r=t.document.createElement("link"),a=t.document.getElementsByTagName("script")[0];r.rel="stylesheet",r.href=e[o&&n?0:o?1:2],a.parentNode.insertBefore(r,a)},r=new t.Image;r.onerror=function(){o(!1)},r.onload=function(){o(1===r.width&&1===r.height)},r.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="}};
34
+ grunticon(["//d39zheejy3ckol.cloudfront.net/emoji/423105160813/icons/icons.data.svg.css", "//d39zheejy3ckol.cloudfront.net/emoji/423105160813/icons/icons.data.png.css", "//d39zheejy3ckol.cloudfront.net/emoji/423105160813/icons/icons.fallback.css"]);
35
+ </script>
36
+ <noscript><link href="icons.fallback.css" rel="stylesheet"></noscript>
37
+ <script type="text/javascript" src="https://d2c01jv13s9if1.cloudfront.net/j/9/E/7/9E7EfSjCpLES7HvyBhUGmS03j04_.js"></script>
38
+ </head>
39
+
40
+ <body class="">
41
+ <div id="pjax-container">
42
+ <meta name="adn-page-context" id="adn-page-context" data-adn-page-context='{"cookie_value":"1|1411251905|I7kLA4AjRlGzXNRg-4atjdksrwuaGXOoNbyea8lXE-Q","build_info":"lanai-master-tapp-build-12121-7bf82d6","subscribe_url":"//account.app.net/upgrade/","is_authenticated":false,"timestamp":1411251905000,"search_log_url":"https://app.net/log-search/","mixpanel_token":"585aa02b4948ab375523ca0e4b6eb57d","page_load_hooks":["utils.handle_resize","autocomplete.init","init_pau","init_post_delete","init_mute_user","init_post_report","init_star_post","init_repost","pau.init_help","pau.init_fixed_nav","photo.init"],"environment":"prod","autocomplete_url":"https://directory.app.net/universal-autocomplete/","upgrade_storage_url":"//account.app.net/settings/upgrade/storage/","api_options":{"avt":"8N6jzzQWTYXqjp3Q","api_base_url":"/omo-api-proxy/"},"is_pjax":null,"omo_is_authenticated":false,"autochrome_img_url_base":"//d2c01jv13s9if1.cloudfront.net","canvas_mode":"pau"}'>
43
+
44
+ <div class="photo-view">
45
+ <div class="top">
46
+ <div class="branding-container">
47
+ <a class="branding pull-left" href="//app.net/"></a>
48
+ <a class="see-conversation pull-right m-yui3-u-none" href="/charl/post/30055986">See conversation →</a>
49
+ <a class="see-conversation pull-right m-yui3-u t-yui3-u-none yui3-u-none" href="/charl/post/30055986">Conversation</a>
50
+ <a class="signup pull-right" href="//app.net/">Sign Up
51
+ </a>
52
+ </div>
53
+ </div>
54
+ <div class="middle">
55
+ <div class="image-container">
56
+ <div class="loader"><i class="icon-refresh icon-2x icon-spin"></i></div>
57
+ <img src="https://files.app.net/1/1176038/aAzhGKr0HnF6Qvx0m5y4H3DRO8t3MRUWJshlLLfv4lcJ545lYdmY5ijA3CTfvZ1I8vJN0-gNuGXlLzpDjf5diwg3WZREDWMsiCKLEM1Rzi5XBPnIjUkixFpJ5_srdyjqA_tpw-9joHD8LkYLP9GFWrWd7cVs02ijwOdBlJ25-LfG1FIz9I-oCCiWamGjtcGUX" data-full-width="576" data-full-height="1024">
58
+ </div>
59
+ </div>
60
+ <div class="bottom" data-post-container>
61
+ <div name="30055986" class="subpixel h-entry post-container" data-post-remove-from-page="1" data-post-author-id="46660" data-post-author-username="charl" data-post-id="30055986"><div class="content">
62
+ <div class="media"><a href="/charl" class="avatar" style="background-image:url(https://d2rfichhc2fb9n.cloudfront.net/image/5/mfUOQmuiuTOxkog_cJwphpbN_SN7InMiOiJzMyIsImIiOiJhZG4tdXNlci1hc3NldHMiLCJrIjoiYXNzZXRzL3VzZXIvMGIvNDkvOTAvMGI0OTkwMDAwMDAwMDAwMC5qcGciLCJvIjoiIn0?h=114&amp;w=114);"></a></div>
63
+ <div class="post-header">
64
+ <span class="username p-author h-card"><a href="/charl" class="u-url p-nickname">charl</a></span><ul class="unstyled ul-horizontal yui3-u fixed-right ta-right"></ul>
65
+ </div>
66
+ <div class="body"><div class="post-text"><span class="post-content e-content"><span itemscope="https://join.app.net/schemas/Post">Oops. <a href="https://files.app.net/24gxz--FY" target="_blank" rel="nofollow">BuzzFeedUK, meet the SEA!</a> [files.app.net]</span></span></div></div>
67
+ <div class="post-footer">
68
+ <ul class="unstyled ul-horizontal footer-top"></ul>
69
+ <ul class="unstyled ul-horizontal footer-bottom">
70
+ <li><a href="/charl/post/30055986" title="12:04 PM - 08 May 2014" class="u-url timestamp"><time datetime="12:04 PM - 08 May 2014" class="dt-published"><i class="yui3-u icon-time"></i> 08 May</time></a></li>
71
+ <li class="yui3-u show-on-hover post-source"><a href="http://wedge.natestedman.com" target="_blank" rel="nofollow"><i class="icon-share"></i> via Wedge</a></li>
72
+ </ul>
73
+ </div>
74
+ </div></div>
75
+ </div>
76
+ </div>
77
+ </div>
78
+
79
+ <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript" src="https://d2c01jv13s9if1.cloudfront.net/j/i/U/s/iUsdWaYGHrCGQAPkYRQE98NrHqY_.js"></script>
80
+
81
+ <script type="text/javascript" src="//d39zheejy3ckol.cloudfront.net/emoji/423105160813/emoji_replace.min.js"></script>
82
+
83
+ <script type="text/javascript">
84
+ var _gaq = _gaq || [];
85
+ _gaq.push(['_setAccount', 'UA-22213034-7']);
86
+ _gaq.push(['_trackPageview']);
87
+ (function() {
88
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
89
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
90
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
91
+ })();
92
+ </script>
93
+ <script type="text/javascript">
94
+ (function(d,c){var a,b,g,e;a=d.createElement("script");a.type="text/javascript";
95
+ a.async=!0;a.src=("https:"===d.location.protocol?"https:":"http:")+
96
+ '//api.mixpanel.com/site_media/js/api/mixpanel.2.js';b=d.getElementsByTagName("script")[0];
97
+ b.parentNode.insertBefore(a,b);c._i=[];c.init=function(a,d,f){var b=c;
98
+ "undefined"!==typeof f?b=c[f]=[]:f="mixpanel";g=['disable','track','track_pageview',
99
+ 'track_links','track_forms','register','register_once','unregister','identify',
100
+ 'name_tag','set_config'];
101
+ for(e=0;e<g.length;e++)(function(a){b[a]=function(){b.push([a].concat(
102
+ Array.prototype.slice.call(arguments,0)))}})(g[e]);c._i.push([a,d,f])};window.mixpanel=c}
103
+ )(document,[]);
104
+ mixpanel.init(page_context.mixpanel_token);
105
+ </script>
106
+
107
+
108
+ </body>
109
+ </html>