flickr_offline_gallery 0.0.1 → 0.0.2

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: 7d4ef914ca24ac0dcb26664919d275d97c91568f
4
- data.tar.gz: 9db952754cf9040551478c733989e2f31bfaf6d4
3
+ metadata.gz: 9a580d31666a5ee5d84f2b08dc630443b36da3f6
4
+ data.tar.gz: a545a7e7bef7d3f5e1ba4f3f5dc981563845d9d0
5
5
  SHA512:
6
- metadata.gz: 8b8233697f3c093b928e0459ebb91233b2018b7180faed26c77f1543a55dd04e58343c0f55c207d26ebe572ce12f11c42adfd4c234a04bfbe78a6e5b138e7b8d
7
- data.tar.gz: 070ddb4019f6f63ff1a89415d5447c063accc642e776268b8cb664706cdcc6564b769bae83dbb3d05dde791e915692fbd63df5e6b432d02dae87ed17489dc9f0
6
+ metadata.gz: e6ac5c2eed4dcf6bf7f961e8dcd0d978ab0d145ade7d9ef560e5d3f4e5448368fdbdd25d10874692eafe8c8eb91646b199e366cc0bc64723a5083661e12dc3e0
7
+ data.tar.gz: 1d997dac1dba5737959984232b8130c3c5eb3ff0eef1cc95e6cfc795baef0843223cfbdf9124bb48081fa05f5a6e445b26a93aa4ea69249ba9de833e943d27cf
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # FlickrOfflineGallery
2
2
 
3
3
  A tool to cache an offline copy of a flickr photoset, complete with all the html
4
- embed fragments for all available sizes, allowing you to pick out photos for
4
+ embed snippets for all available sizes, allowing you to pick out photos for
5
5
  blog posts/etc even without an internet connection.
6
6
 
7
7
  ## Installation
@@ -10,7 +10,7 @@ blog posts/etc even without an internet connection.
10
10
 
11
11
  ## Usage
12
12
 
13
- $ flickr_offline_gallery <Flickr photoset id>
13
+ $ FLICKR_API_KEY='<api_key>' FLICKR_SHARED_SECRET='<shared_secret>' flickr_offline_gallery <Flickr photoset id>
14
14
 
15
15
  In a url like
16
16
  `http://www.flickr.com/photos/83213379@N00/sets/72157636831703404/`, the
@@ -5,14 +5,18 @@ require 'flickr_offline_gallery'
5
5
  FlickRaw.api_key = "#{ENV["FLICKR_API_KEY"]}"
6
6
  FlickRaw.shared_secret = "#{ENV["FLICKR_SHARED_SECRET"]}"
7
7
 
8
- if ARGV.size != 1
8
+ if ARGV.size == 0
9
9
  puts "FlickrOfflineGallery"
10
10
  puts "--------------------"
11
- puts "Create a local mirror of a Flickr photoset, complete with html embed fragments"
11
+ puts "Create a local mirror of a Flickr photoset, complete with html embed snippets"
12
+ puts ""
12
13
  puts "\tUsage:"
13
- puts "\t\tflickr_offline_gallery <flickr_photoset_id>"
14
+ puts ""
15
+ puts "\t\tFLICKR_API_KEY='<api_key>' FLICKR_SHARED_SECRET='<shared_secret>' flickr_offline_gallery <Flickr photoset id> [size to download]"
16
+ puts ""
17
+ puts "\t- size is optional, and defaults to medium_800. Available sizes depend on the Photoset"
14
18
  exit
15
19
  end
16
20
 
17
- photoset = FlickrOfflineGallery::Photoset.new(ARGV.first)
18
- FlickrOfflineGallery.render_photoset(photoset)
21
+ photoset = FlickrOfflineGallery::Photoset.new(ARGV[0])
22
+ FlickrOfflineGallery.render_photoset(photoset, ARGV[1] || "medium_800")
data/erb/photo.html.erb CHANGED
@@ -1,13 +1,71 @@
1
1
  <html>
2
- <head></head>
2
+ <head>
3
+ <style>
4
+ body {
5
+ background-color: dimgrey;
6
+ }
7
+ textarea {
8
+ height: 200px;
9
+ width:500px;
10
+ }
11
+ h4 {
12
+ text-align: center;
13
+ margin: 5 0 5 0;
14
+ }
15
+ .right-panel {
16
+ display: inline-block;
17
+ vertical-align: top;
18
+ width:500px;
19
+ }
20
+ .html-snippets {
21
+ display: inherit;
22
+ }
23
+ .selectors {
24
+ display: inherit;
25
+ margin-top: 10px
26
+ }
27
+ </style>
28
+ </head>
3
29
  <body>
4
- <img src="<%= source %>" />
5
- <% sizes.each do |size| %>
6
- <p><%= size.label %> </p>
7
- <textarea style="height: 60px; width:800px;">
8
- <a href="<%= photo_url %>" title="<%= title %> by <%= author %>, on Flickr"><img src="<%= size.source %>" width="<%= size.width %>" height="<%= size.height %>" alt="<%= title %>"></a>
9
- </textarea>
10
- <% end %>
30
+ <img src="<%= source %>" />
31
+ <span class="right-panel">
32
+ <span class="html-snippets">
33
+ <% sizes.each do |size| %>
34
+ <span class="snippet" id="<%= size.key %>">
35
+ <h4><%= size.label %></h4>
36
+ <textarea>&lt;a href="<%= photo_url %>" title="<%= title %> by <%= author %>, on Flickr"&gt;&lt;img src="<%= size.source %>" width="<%= size.width %>" height="<%= size.height %>" alt="<%= title %>"&gt;&lt;/a&gt;</textarea>
37
+ </span>
38
+ <% end %>
39
+ </span>
40
+
41
+ <span class="selectors">
42
+ <% sizes.each do |size| %>
43
+ <button onclick="script:showId('<%= size.key %>');"><%= size.label %> </button>
44
+ <% end %>
45
+ </span>
46
+ </span>
47
+ <script>
48
+ function hideSnippets() {
49
+ var tags = document.getElementsByClassName('snippet'),
50
+ i = tags.length;
51
+ while(i--)
52
+ {
53
+ tags[i].style.display = "none";
54
+ }
55
+ };
56
+
57
+ function showId(id) {
58
+ hideSnippets();
59
+ var section = document.getElementById(id);
60
+ section.style.display = "";
61
+ section.getElementsByTagName("textarea")[0].select();
62
+ };
63
+ <% if sizes["medium_800"].nil? %>
64
+ showId("original");
65
+ <% else %>
66
+ showId("medium_800");
67
+ <% end %>
68
+ </script>
11
69
  </body>
12
70
  </html>
13
71
 
@@ -1,11 +1,19 @@
1
1
  <html>
2
- <head></head>
2
+ <head>
3
+ <style>
4
+ body { background-color: dimgrey; }
5
+ img {
6
+ height: 200px;
7
+ padding: 0px;
8
+ margin: 0px;
9
+ border: 1px solid black;
10
+ }
11
+ </style>
12
+ </head>
3
13
  <body>
4
- Photoset: <%= photoset.title %> by <% photoset.username %>
14
+ <h1><%= photoset.title %> by <%= photoset.username %></h1>
5
15
  <% photos.each do |photo| %>
6
16
  <a href="<%= photo.local_html_path %>"><img src="<%= photo.local_jpg_path %>"
7
- width="<%= photo.sizes[size].width %>"
8
- height="<%= photo.sizes[size].height %>"
9
17
  /></a>
10
18
  <% end %>
11
19
  </body>
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Lucas Parry"]
10
10
  spec.email = ["lparry@gmail.com"]
11
11
  spec.summary = %q{Build a local copy of a flickr photoset}
12
- spec.description = %q{Build a local copy of a flickr photoset, including html embed codes for all image sizes, for the purpose off picking photos for your blog even when there's no internet}
12
+ spec.description = %q{Build a local copy of a flickr photoset, including html embed snippets for all image sizes, for the purpose off picking photos for your blog even when there's no internet}
13
13
  spec.homepage = ""
14
14
  spec.license = "MIT, unless you're the NSA"
15
15
 
@@ -16,12 +16,12 @@ module FlickrOfflineGallery
16
16
  end
17
17
  end
18
18
 
19
- def self.download(photoset)
20
- PhotosetDownloader.new(photoset).download
19
+ def self.download(photoset, size = "medium_800")
20
+ PhotosetDownloader.new(photoset, size).download
21
21
  end
22
22
 
23
- def self.render_photoset(photoset)
24
- download(photoset)
23
+ def self.render_photoset(photoset, size)
24
+ download(photoset, size)
25
25
  render_photo_pages(photoset)
26
26
  render_photoset_index_page(photoset)
27
27
  end
@@ -30,6 +30,7 @@ module FlickrOfflineGallery
30
30
  File.open("#{photoset.slug}.html", "w") do |f|
31
31
  f.write render_erb("photoset", :photoset => photoset, :photos => photoset.photos, :size => "medium")
32
32
  end
33
+ puts "#{photoset.slug}.html"
33
34
  end
34
35
 
35
36
  def self.render_photo_pages(photoset)
@@ -42,6 +43,7 @@ module FlickrOfflineGallery
42
43
  File.open(photo.local_html_path, "w") do |f|
43
44
  f.write render_erb("photo", :source => photo.img_filename, :sizes => photo.sizes, :photo_url => photo.url, :title => photo.title, :author => photo.author)
44
45
  end
46
+ puts "Rendered #{photo.local_html_path}"
45
47
  end
46
48
 
47
49
  def self.render_erb(template, locals)
@@ -7,7 +7,8 @@ module FlickrOfflineGallery
7
7
  @id = horrible_flickraw_response_junk["id"]
8
8
  @secret = horrible_flickraw_response_junk["secret"]
9
9
  @set = photoset_id
10
- puts "Initialized #{@id}"
10
+ eager_load
11
+ puts "Fetched data about photo #{title}"
11
12
  end
12
13
 
13
14
  def title
@@ -52,6 +53,11 @@ module FlickrOfflineGallery
52
53
 
53
54
  private
54
55
 
56
+ def eager_load
57
+ info
58
+ raw_sizes
59
+ end
60
+
55
61
  def info
56
62
  @info ||= OpenStruct.new(flickr.photos.getInfo(:photo_id => @id).to_hash)
57
63
  end
@@ -4,5 +4,9 @@ module FlickrOfflineGallery
4
4
  def initialize(horrible_flickraw_response_junk)
5
5
  super(horrible_flickraw_response_junk.to_hash)
6
6
  end
7
+
8
+ def key
9
+ label.downcase.gsub(" ", "_")
10
+ end
7
11
  end
8
12
  end
@@ -2,7 +2,10 @@ module FlickrOfflineGallery
2
2
  class PhotoSizes < OpenStruct
3
3
  # commont attrs: large large_1600 large_2048 large_square medium medium_640 medium_800 original small small_320 square thumbnail
4
4
  def initialize(raw_sizes)
5
- super Hash[raw_sizes.map{|s| [s["label"].downcase.gsub(" ", "_"), PhotoSize.new(s)] }]
5
+ super Hash[raw_sizes.map do |s|
6
+ size = PhotoSize.new(s)
7
+ [size.key, size]
8
+ end]
6
9
  end
7
10
 
8
11
  def each
@@ -6,7 +6,7 @@ module FlickrOfflineGallery
6
6
  end
7
7
 
8
8
  def username
9
- info.username
9
+ info.ownername
10
10
  end
11
11
 
12
12
  def title
@@ -19,7 +19,8 @@ module FlickrOfflineGallery
19
19
 
20
20
  def photos
21
21
  raise "photoset has more than 500 images and I'm too lazy to handle that right now" if info.pages > 1
22
- @photos ||= info.photo.map { |raw_response| Photo.new(raw_response, @photoset_id) }
22
+ puts "Initializing photoset... " unless @photos
23
+ @photos ||= info.photo.map { |raw_response| Photo.new(raw_response, @photoset_id) }.tap{ puts "Finished initializing photoset!"}
23
24
  end
24
25
 
25
26
  private
@@ -1,6 +1,6 @@
1
1
  module FlickrOfflineGallery
2
2
  class PhotosetDownloader
3
- def initialize(photoset, size = "medium_800")
3
+ def initialize(photoset, size)
4
4
  @photoset = photoset
5
5
  @size = size
6
6
  end
@@ -14,6 +14,7 @@ module FlickrOfflineGallery
14
14
  unless File.exist?(local_path)
15
15
  #TODO: this is lazy, so sue me
16
16
  `curl --location -so "#{local_path}" "#{url}"`
17
+ puts "Downloaded #{local_path}"
17
18
  end
18
19
  end
19
20
  end
@@ -1,3 +1,3 @@
1
1
  module FlickrOfflineGallery
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flickr_offline_gallery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Parry
@@ -52,9 +52,9 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- description: Build a local copy of a flickr photoset, including html embed codes for
56
- all image sizes, for the purpose off picking photos for your blog even when there's
57
- no internet
55
+ description: Build a local copy of a flickr photoset, including html embed snippets
56
+ for all image sizes, for the purpose off picking photos for your blog even when
57
+ there's no internet
58
58
  email:
59
59
  - lparry@gmail.com
60
60
  executables: