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 +4 -4
- data/.coveralls.yml +1 -0
- data/.rspec +3 -0
- data/.travis.yml +18 -0
- data/CHANGELOG.md +5 -0
- data/README.md +22 -2
- data/Rakefile +3 -7
- data/lib/nokaya/adn.rb +2 -2
- data/lib/nokaya/app.rb +13 -2
- data/lib/nokaya/deviantart.rb +2 -2
- data/lib/nokaya/favd.rb +2 -2
- data/lib/nokaya/flickr_album.rb +2 -2
- data/lib/nokaya/imageshack_user.rb +2 -2
- data/lib/nokaya/imgur_album.rb +2 -2
- data/lib/nokaya/instagram.rb +2 -2
- data/lib/nokaya/status.rb +8 -1
- data/lib/nokaya/tvshow.rb +81 -0
- data/lib/nokaya/version.rb +1 -1
- data/nokaya.gemspec +2 -0
- data/spec/mock/adn.page +109 -0
- data/spec/mock/deviantart.page +1023 -0
- data/spec/mock/favd.page +443 -0
- data/spec/mock/flickr.page +1629 -0
- data/spec/mock/imguralbum.page +1655 -0
- data/spec/mock/instagram.page +261 -0
- data/spec/mock/movie.marshal +0 -0
- data/spec/mock/musicstore.json +54 -0
- data/spec/mock/photonet.page +772 -0
- data/spec/mock/tumblr.page +1269 -0
- data/spec/mock/tumblralbum.page +1884 -0
- data/spec/nokaya_spec.rb +147 -8
- data/spec/spec_helper.rb +4 -1
- metadata +56 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 032fd55336df4db4c3d02eda35164c36980a8f86
|
4
|
+
data.tar.gz: d42998381833d58c50f7de80f37812ae856035e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f7ed80acd7a065001c088300139658894562e15b19632a01a8a81f0232165e647586847c9618b8c2a2620c953c642eeb0c30d38f76d333cca36f5ad07ec712f
|
7
|
+
data.tar.gz: b6663dd0b77110947e8cf03430af0ec11f6097d6df715de7daf63b6c676a55e545113413c481a7c59d910b31f0e9fa4ada438951181a03cec111452ecdd42b04
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.rspec
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
[](http://badge.fury.io/rb/nokaya)
|
1
|
+
[](http://badge.fury.io/rb/nokaya) [](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
|
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
|
2
|
-
require
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
3
|
|
4
|
-
|
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
|
data/lib/nokaya/adn.rb
CHANGED
@@ -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 =
|
13
|
+
@author = author_name(parsed)
|
14
14
|
@filenames = name_files()
|
15
15
|
end
|
16
16
|
|
17
17
|
private
|
18
18
|
|
19
|
-
def
|
19
|
+
def author_name page
|
20
20
|
page.css('.p-nickname')[0].text unless page.nil?
|
21
21
|
end
|
22
22
|
|
data/lib/nokaya/app.rb
CHANGED
@@ -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.
|
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"
|
data/lib/nokaya/deviantart.rb
CHANGED
@@ -8,14 +8,14 @@ module Nokaya
|
|
8
8
|
@type = :deviantart
|
9
9
|
parsed = parse(args[0])
|
10
10
|
@urls = album(parsed).compact
|
11
|
-
@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
|
18
|
+
def author_name
|
19
19
|
@workers.sanitize(@args[0].split('.com/')[1].chomp('/'))
|
20
20
|
end
|
21
21
|
|
data/lib/nokaya/favd.rb
CHANGED
@@ -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 =
|
13
|
+
@author = author_name(parsed)
|
14
14
|
@filenames = name_files()
|
15
15
|
end
|
16
16
|
|
17
17
|
private
|
18
18
|
|
19
|
-
def
|
19
|
+
def author_name page
|
20
20
|
username = page.css('.username')
|
21
21
|
username.empty? ? [] : username[0].text
|
22
22
|
end
|
data/lib/nokaya/flickr_album.rb
CHANGED
@@ -9,7 +9,7 @@ module Nokaya
|
|
9
9
|
super(args, options)
|
10
10
|
@type = :flickr
|
11
11
|
parsed = parse(args[0])
|
12
|
-
@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
|
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 =
|
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
|
18
|
+
def author_name
|
19
19
|
@args[0].split('/').last.chomp('/')
|
20
20
|
end
|
21
21
|
|
data/lib/nokaya/imgur_album.rb
CHANGED
@@ -9,7 +9,7 @@ module Nokaya
|
|
9
9
|
super(args, options)
|
10
10
|
@type = :imgur
|
11
11
|
parsed = parse(args[0])
|
12
|
-
@author =
|
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
|
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)
|
data/lib/nokaya/instagram.rb
CHANGED
@@ -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 =
|
13
|
+
@author = author_name(parsed)
|
14
14
|
@filenames = name_files()
|
15
15
|
end
|
16
16
|
|
17
17
|
private
|
18
18
|
|
19
|
-
def
|
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
|
data/lib/nokaya/status.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/nokaya/version.rb
CHANGED
data/nokaya.gemspec
CHANGED
@@ -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
|
data/spec/mock/adn.page
ADDED
@@ -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&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>
|