flickr_badge_maker 0.0.1

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.
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
4
+
5
+ require "flickr_badge_maker"
6
+
7
+ client = FlickrBadgeMaker::Client.new
8
+
9
+ case ARGV[0]
10
+ when "info"
11
+ client.get_set_info(ARGV[1])
12
+ when "yaml"
13
+ client.get_badge_yaml(ARGV[1])
14
+ when "badge"
15
+ client.make_badge(ARGV[1])
16
+ when "configure"
17
+ client.configure
18
+ else
19
+ puts "Usage: flickr_badge_maker <command> <options>\n"
20
+ puts "\nAvailable commands:"
21
+ puts " configure - Walks through the configuration process. *Do this first.*"
22
+ puts " info <set id> - Shows complete information for a photoset."
23
+ puts " yaml <set id> - Shows abbreviated yaml style info for a photoset."
24
+ puts " badge <set id> - Shows a HTML badge snippet for a photoset."
25
+ end
26
+
@@ -0,0 +1,2 @@
1
+ require 'flickr_badge_maker/maker'
2
+ require 'flickr_badge_maker/client'
@@ -0,0 +1,131 @@
1
+ require 'rubygems'
2
+ require 'flickr_badge_maker'
3
+ require 'yaml'
4
+ require 'ap'
5
+
6
+ module FlickrBadgeMaker
7
+ class Client
8
+
9
+ def initialize
10
+ @config_path = File.join(Dir.home, ".flickr_config")
11
+ config = read_config
12
+ @maker = Maker.new(config)
13
+ end
14
+
15
+ def configure
16
+ begin
17
+ puts "Enter your flickr API key. If you don't have one, you can request it at this url:"
18
+ puts " http://www.flickr.com/services/apps/create/apply"
19
+ print "Key>>"
20
+ api_key = STDIN.gets.strip
21
+
22
+ puts "\nNow enter the 'secret' code associated with the API Key."
23
+ print "Secret>> "
24
+ shared_secret = STDIN.gets.strip
25
+
26
+ config = @maker.config
27
+ config['api_key'] = api_key
28
+ config['shared_secret'] = shared_secret
29
+
30
+ # Reconfigure the maker now that we have the keys.
31
+ @maker.configure(config)
32
+
33
+ request_token = @maker.get_request_token
34
+ auth_url = @maker.get_authorize_url(request_token)
35
+
36
+ puts "Open this url in your web browser to complete the authentication process\n #{auth_url}\n"
37
+ puts "Copy and paste the number given when you complete the process."
38
+ print "Code>> "
39
+ verify_lambda = STDIN.gets.strip
40
+
41
+ access = @maker.authenticate(request_token, verify_lambda)
42
+ login = @maker.test_login
43
+ puts "\nSuccessfully authenticated as #{login.username}"
44
+
45
+ config['access_token'] = access[:access_token]
46
+ config['access_secret'] = access[:access_secret]
47
+
48
+ write_config(config)
49
+ rescue FlickRaw::FailedResponse => e
50
+ puts "Error>> Authentication failed : #{e.msg}"
51
+ end
52
+ end
53
+
54
+ def get_set_info(set)
55
+ begin
56
+ ap @maker.get_photos(set)
57
+ rescue FlickRaw::FailedResponse => e
58
+ puts "Error>> Flickr communication failed : #{e.msg}"
59
+ end
60
+ end
61
+
62
+ def get_badge_yaml(set)
63
+ begin
64
+ photos = @maker.get_photos(set)
65
+ display_info = get_display_info(photos)
66
+ print YAML.dump(display_info)
67
+ rescue FlickRaw::FailedResponse => e
68
+ puts "Error>> Flickr communication failed : #{e.msg}"
69
+ end
70
+ end
71
+
72
+ def make_badge(set)
73
+ begin
74
+ photos = @maker.get_photos(set)
75
+ photos = get_display_info(photos)
76
+ puts "<ul>"
77
+ photos.each do |p|
78
+ puts "<li><a href=\"#{p['enlarge_image_url']}\"><img src=\"#{p['preview_image_url']}\"/></a>"
79
+ puts "<br/><a href=\"#{p['view_url']}\">#{p['caption']}</a>"
80
+ end
81
+ puts "</ul>"
82
+ rescue FlickRaw::FailedResponse => e
83
+ puts "Error>> Flickr communication failed : #{e.msg}"
84
+ end
85
+ end
86
+
87
+ private
88
+
89
+ def read_config
90
+ if (File.exists?(@config_path))
91
+ config = YAML.load_file(@config_path)
92
+ else
93
+ config =
94
+ {
95
+ 'api_key' => '',
96
+ 'shared_secret' => '',
97
+ 'access_token' => '',
98
+ 'access_secret' => '',
99
+ 'display' =>
100
+ {
101
+ 'enlarge_image_url' => 'med_image_url',
102
+ 'preview_image_url' => 'small_image_url',
103
+ 'view_url' => 'view_url',
104
+ 'caption' => 'caption'
105
+ }
106
+ }
107
+ write_config(config)
108
+ end
109
+ config
110
+ end
111
+
112
+ def write_config(config)
113
+ puts "Creating config file in #{@config_path}."
114
+ File.open(@config_path, 'w') {|f| f.write(YAML.dump(config)) }
115
+ end
116
+
117
+ def get_display_info(photos)
118
+ display_mapping = @maker.config['display']
119
+ display_photos = []
120
+ photos.each do |photo|
121
+ display_info = {}
122
+ display_mapping.keys.each do |key|
123
+ display_info[key] = photo[display_mapping[key]]
124
+ end
125
+ display_photos << display_info
126
+ end
127
+ display_photos
128
+ end
129
+
130
+ end
131
+ end
@@ -0,0 +1,73 @@
1
+ require 'flickraw'
2
+
3
+ module FlickrBadgeMaker
4
+ class Maker
5
+ attr_reader :config
6
+
7
+ def initialize(config)
8
+ configure(config)
9
+ end
10
+
11
+ def configure(config)
12
+ @config = config
13
+ begin
14
+ FlickRaw.api_key=config['api_key']
15
+ FlickRaw.shared_secret=config['shared_secret']
16
+ flickr.access_token = config['access_token']
17
+ flickr.access_secret = config['access_secret']
18
+ rescue FlickRaw::FailedResponse => e
19
+ puts "Warning: Unable to initialize flickr library. Check your configuration."
20
+ end
21
+ end
22
+
23
+ def get_photos(set_id)
24
+ flickr_photos = flickr.photosets.getPhotos( :photoset_id => set_id )
25
+ build_full_photo_info(flickr_photos)
26
+ end
27
+
28
+ def get_request_token()
29
+ flickr.get_request_token
30
+ end
31
+
32
+ def get_authorize_url(request_token)
33
+ flickr.get_authorize_url(request_token['oauth_token'], :perms => 'read')
34
+ end
35
+
36
+ def authenticate(request_token, verify_lambda)
37
+ flickr.get_access_token(request_token['oauth_token'], request_token['oauth_token_secret'], verify_lambda)
38
+ {
39
+ :access_token => flickr.access_token,
40
+ :access_secret => flickr.access_secret
41
+ }
42
+ end
43
+
44
+ def test_login()
45
+ flickr.test.login
46
+ end
47
+
48
+ private
49
+
50
+
51
+ def build_full_photo_info(flickr_photos)
52
+ gallery_photos = []
53
+
54
+ flickr_photos.photo.each do |p|
55
+ info = flickr.photos.getInfo(:photo_id => p.id)
56
+
57
+ gallery_photos <<
58
+ {
59
+ 'squarethumb_image_url' => FlickRaw.url_s(info),
60
+ 'thumb_image_url' => FlickRaw.url_t(info),
61
+ 'small_image_url' => FlickRaw.url_m(info),
62
+ 'med_image_url' => FlickRaw.url(info),
63
+ 'large_image_url' => FlickRaw.url_b(info),
64
+ 'orig_image_url' => FlickRaw.url_o(info),
65
+ 'caption' => info.title,
66
+ 'host' => "Flickr",
67
+ 'view_url' => FlickRaw.url_photopage(info)
68
+ }
69
+ end
70
+ gallery_photos
71
+ end
72
+ end
73
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: flickr_badge_maker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - lynnfaraday@github
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-08-05 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: flickraw
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '0.9'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '0.9'
30
+ - !ruby/object:Gem::Dependency
31
+ name: awesome_print
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.0'
46
+ description: Convenient access to Flickr photosets for creating a photo gallery badge.
47
+ email:
48
+ executables:
49
+ - flickr_badge_maker
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - bin/flickr_badge_maker
54
+ - lib/flickr_badge_maker/client.rb
55
+ - lib/flickr_badge_maker/maker.rb
56
+ - lib/flickr_badge_maker.rb
57
+ homepage: http://github.com/lynnfaraday/flickr_badge_maker
58
+ licenses: []
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 1.8.24
78
+ signing_key:
79
+ specification_version: 3
80
+ summary: Flickr photo gallery badge helper.
81
+ test_files: []