nokaya 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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>