multistockphoto 0.1.0

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,34 @@
1
+ desc 'Release the website and new gem version'
2
+ task :deploy => [:check_version, :website, :release] do
3
+ puts "Remember to create SVN tag:"
4
+ puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
5
+ "svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
6
+ puts "Suggested comment:"
7
+ puts "Tagging release #{CHANGES}"
8
+ end
9
+
10
+ desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
11
+ task :local_deploy => [:website_generate, :install_gem]
12
+
13
+ task :check_version do
14
+ unless ENV['VERSION']
15
+ puts 'Must pass a VERSION=x.y.z release version'
16
+ exit
17
+ end
18
+ unless ENV['VERSION'] == VERS
19
+ puts "Please update your version.rb to match the release version, currently #{VERS}"
20
+ exit
21
+ end
22
+ end
23
+
24
+ desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
25
+ task :install_gem_no_doc => [:clean, :package] do
26
+ sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
27
+ end
28
+
29
+ namespace :manifest do
30
+ desc 'Recreate Manifest.txt to include ALL files'
31
+ task :refresh do
32
+ `rake check_manifest | patch -p0 > Manifest.txt`
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ task :ruby_env do
2
+ RUBY_APP = if RUBY_PLATFORM =~ /java/
3
+ "jruby"
4
+ else
5
+ "ruby"
6
+ end unless defined? RUBY_APP
7
+ end
@@ -0,0 +1,17 @@
1
+ desc 'Generate website files'
2
+ task :website_generate => :ruby_env do
3
+ (Dir['website/**/*.txt'] - Dir['website/version*.txt']).each do |txt|
4
+ sh %{ #{RUBY_APP} script/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
5
+ end
6
+ end
7
+
8
+ desc 'Upload website files to rubyforge'
9
+ task :website_upload do
10
+ host = "#{rubyforge_username}@rubyforge.org"
11
+ remote_dir = "/var/www/gforge-projects/#{PATH}/"
12
+ local_dir = 'website'
13
+ sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
14
+ end
15
+
16
+ desc 'Generate and upload website files'
17
+ task :website => [:website_generate, :website_upload, :publish_docs]
@@ -0,0 +1,6 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/multistockphoto'
3
+
4
+ def after(d)
5
+ yield if DateTime.now > d
6
+ end
@@ -0,0 +1,177 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+
4
+ class TestMultistockphoto < Test::Unit::TestCase
5
+
6
+ REAL_TRANSFER = false
7
+
8
+ def setup
9
+ @fotolia_user = ENV['FOTOLIA_USER']
10
+ @fotolia_password = ENV['FOTOLIA_PASSWORD']
11
+ @fotolia_ftp_user = ENV['FOTOLIA_FTP_USER']
12
+ @fotolia_ftp_password = ENV['FOTOLIA_FTP_PASSWORD']
13
+ @zoonar_user = ENV['ZOONAR_USER']
14
+ @zoonar_password = ENV['ZOONAR_PASSWORD']
15
+ @aldi_user = ENV['ALDI_USER']
16
+ @aldi_password = ENV['ALDI_PASSWORD']
17
+ end
18
+
19
+
20
+ def test_call_msp
21
+ assert_equal "multistockphoto 0.0.1\n", `ruby bin/multistockphoto --version`
22
+ end
23
+
24
+ def test_transfer_all
25
+ if false
26
+ expected = "multistockphoto V. 0.1.0
27
+ end
28
+ end
29
+ transfering all photos
30
+ == transfering to fotolia.de
31
+ sending foto1.jpg ... OK
32
+ sending foto2.jpg ... OK
33
+ sending foto3.jpg ... OK
34
+ == transfering to site2.de
35
+ sending foto1.jpg ... OK
36
+ sending foto2.jpg ... OK
37
+ sending foto3.jpg ... OK
38
+ == transfering to site3.de
39
+ sending foto1.jpg ... OK
40
+ sending foto2.jpg ... OK
41
+ sending foto3.jpg ... OK
42
+ "
43
+
44
+ output = `system bin/multistockphoto --transfer-all`
45
+
46
+ assert_equal expected, output
47
+ end
48
+ end
49
+
50
+ def after(d)
51
+ yield if DateTime.now > d
52
+ end
53
+
54
+ def test_site_object
55
+ if false
56
+ site1 = Site.new("Fotolia")
57
+ assert_kind_of Site, site1
58
+ assert_equal "Fotolia", site1.name
59
+ end
60
+ end
61
+
62
+ def test_multistockphoto_group
63
+ if false
64
+ #msp = Multistockphoto::Transfer.new
65
+ fotolia = Fotolia.new
66
+ zoonar = Zoonar.new
67
+ msp.add_site fotolia
68
+ msp.add_site zoonar
69
+ msp.send_directory('upload')
70
+ assert ['fotolia','zoonar'], msp.sites
71
+ end
72
+ end
73
+
74
+ def test_fotolia
75
+ fotolia = Fotolia.new("Fotolia")
76
+ fotolia.ftp_user = @fotolia_ftp_user
77
+ fotolia.ftp_password = @fotolia_ftp_password
78
+
79
+ assert_kind_of Fotolia, fotolia
80
+ assert_equal "Fotolia", fotolia.name
81
+
82
+ fotolia.user = @fotolia_user
83
+ fotolia.password = @fotolia_password
84
+
85
+ assert_equal @fotolia_user, fotolia.user
86
+ assert_equal @fotolia_password, fotolia.password
87
+
88
+ end
89
+
90
+ def test_photo
91
+ photo = Photo.new("123.jpg")
92
+ assert_kind_of Photo, photo
93
+ assert_equal "123.jpg", photo.filename
94
+ end
95
+
96
+ def test_fotolia_transfer_1
97
+ if REAL_TRANSFER
98
+ fotolia = Fotolia.new("Fotolia")
99
+ fotolia.user = @fotolia_user
100
+ fotolia.password = @fotolia_password
101
+ photo = Photo.new("test/1234.jpg")
102
+ #assert fotolia.transfer(photo)
103
+ #TODO: zwei Gruende, warum das fehlschlagen kann:
104
+ # 1. Datei nicht vorhanden
105
+ # 2. Argument kein Photo-Objekt
106
+ # => bessere Tests
107
+ # assert_raise (RuntimeError) {
108
+ # fotolia.transfer("123.jpg")
109
+ # }
110
+ end
111
+ end
112
+
113
+ # def test_fotolia_transfer_existing_picture
114
+ # fotolia = Fotolia.new("Fotolia")
115
+ # fotolia.user = @fotolia_user
116
+ # fotolia.password = @fotolia_password
117
+ # photo = Photo.new("/media/LACIE/private/CF-Card/DCIM/119CANON/IMG_3267_zugeschnitten_blank_names.jpg")
118
+ # assert fotolia.transfer(photo)
119
+ # end
120
+
121
+ def test_fotolia_transfer_existing_no_duplicate_picture
122
+ if REAL_TRANSFER
123
+ fotolia = Fotolia.new("Fotolia")
124
+ fotolia.user = @fotolia_user
125
+ fotolia.password = @fotolia_password
126
+ fotolia.ftp_user = @fotolia_ftp_user
127
+ fotolia.ftp_password = @fotolia_ftp_password
128
+ photo = Photo.new("/media/LACIE/private/CF-Card/DCIM/119CANON/IMG_3267_zugeschnitten_blank_names.jpg")
129
+ assert_equal :duplicate, fotolia.transfer(photo)
130
+ end
131
+ end
132
+
133
+ def test_config_params_fotolia
134
+ fotolia = Fotolia.new("Fotolia Site")
135
+ assert fotolia.user
136
+ assert fotolia.password
137
+ assert fotolia.ftp_user
138
+ assert fotolia.ftp_password
139
+ assert_equal @fotolia_user, fotolia.user
140
+ assert_equal @fotolia_password, fotolia.password
141
+ assert_equal @fotolia_ftp_user, fotolia.ftp_user
142
+ assert_equal @fotolia_ftp_password, fotolia.ftp_password
143
+ end
144
+
145
+ def test_config_params_zoonar
146
+ zoonar = Zoonar.new("zoonar Site")
147
+ assert zoonar.user
148
+ assert zoonar.password
149
+ assert_equal @zoonar_user, zoonar.user
150
+ assert_equal @zoonar_password, zoonar.password
151
+ #kein ftp assert_equal @zoonar_ftp_user, zoonar.ftp_user
152
+ #kein ftp assert_equal @zoonar_ftp_password, zoonar.ftp_password
153
+ end
154
+
155
+ def test_aldi
156
+ site = Aldi.new("ALDI")
157
+
158
+ assert_kind_of Aldi, site
159
+ assert_equal "ALDI", site.name
160
+
161
+ site.user = @aldi_user
162
+ site.password = @aldi_password
163
+
164
+ assert site.user
165
+ assert site.password
166
+
167
+ assert_equal @aldi_user, site.user
168
+ assert_equal @aldi_password, site.password
169
+ end
170
+
171
+ def test_aldi_transfer
172
+ site = Aldi.new("ALDI")
173
+ photo = Photo.new("/media/LACIE/private/CF-Card/DCIM/119CANON/IMG_3267_zugeschnitten_blank_names.jpg")
174
+ site.transfer(photo)
175
+
176
+ end
177
+ end
@@ -0,0 +1,257 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <title>
8
+ multistockphoto
9
+ </title>
10
+ <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
+ <style>
12
+
13
+ </style>
14
+ <script type="text/javascript">
15
+ window.onload = function() {
16
+ settings = {
17
+ tl: { radius: 10 },
18
+ tr: { radius: 10 },
19
+ bl: { radius: 10 },
20
+ br: { radius: 10 },
21
+ antiAlias: true,
22
+ autoPad: true,
23
+ validTags: ["div"]
24
+ }
25
+ var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
+ versionBox.applyCornersToAll();
27
+ }
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="main">
32
+
33
+ <h1>multistockphoto</h1>
34
+ <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/multistockphoto"; return false'>
35
+ <p>Get Version</p>
36
+ <a href="http://rubyforge.org/projects/multistockphoto" class="numbers">0.1.0</a>
37
+ </div>
38
+ <h1>&#x2192; &#8216;multistockphoto&#8217;</h1>
39
+
40
+
41
+ <h2>What</h2>
42
+
43
+
44
+ <p>This program is intended to work with the german versions of the photo sites fotolia.de and zoonar.de.
45
+ Photographers can upload their photos to this sites.
46
+ Currently it works only with the german version. If you&#8217;re interested to adapt
47
+ it to other languages please email me.</p>
48
+
49
+
50
+ <p>Dieses Programm bietet bequemen Upload von eigenen Photos zu Photo-Seiten wie
51
+ fotolia.de, zoonar.de oder anderen, bei denen man eigene Bilder zum Verkauf
52
+ anbieten kann.
53
+ Neue Photos werden automatisch zu allen Seiten hochgeladen, bei denen man
54
+ registriert ist.</p>
55
+
56
+
57
+ <h2>Installing</h2>
58
+
59
+
60
+ <p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">multistockphoto</span></pre></p>
61
+
62
+
63
+ <h2>The basics</h2>
64
+
65
+
66
+ <p>Nach der Installation lege irgendwo einen Ordner namens &#8216;multistockphoto&#8217; an!
67
+ Innerhalb dieses Ordners lege bitte einen weiteren Ordner namens &#8216;upload&#8217; an!</p>
68
+
69
+
70
+ <p>Du benötigst jetzt noch eine Datei namens &#8216;config.yaml&#8217; mit folgendem Inhalt:</p>
71
+
72
+
73
+ <pre>
74
+ ---
75
+ :zoonar:
76
+ :password: 'lalala'
77
+ :user: 'hugo'
78
+ :fotolia:
79
+ :user: 'hugo'
80
+ :password: 'lalal9589'
81
+ :ftp_user: '34567798'
82
+ :ftp_password: 'hugolala19589'
83
+ </pre>
84
+
85
+ <p>Trage dort deine Zugangsdaten ein! Achtung: Die Einrückung links ist wichtig.
86
+ Im Gem-Directory ist eine Vorlage, die du kopieren kannst.
87
+ Wenn du nicht bei allen aufgelisteten Sites Mitglied bist oder die Bilder dort
88
+ hochladen möchtest, dann lösche einfach
89
+ die entsprechenden Abschnitte &#8211; du ersparst dir und den jeweiligen Servern
90
+ unnötige Last, die bei fehlerhaften Einloggversuchen vergeudet wird.</p>
91
+
92
+
93
+ <p>Wenn du ein oder mehrere neue Bilder hochladen willst, kopiere die Bilddateien
94
+ in den upload-Ordner!
95
+ Dann rufe (innerhalb des multistockphoto-Ordners) das Kommando</p>
96
+
97
+
98
+ <pre>
99
+ multistockphoto --send-all
100
+ </pre>
101
+
102
+ <p>auf! Dieses erledigt den Upload aller neuen Photos zu allen definierten
103
+ Photo-Sites.</p>
104
+
105
+
106
+ <p>Die Photo-Dateien im upload-Ordner müssen nach dem Upload nicht gelöscht
107
+ werden &#8211; bei einem weiteren Aufruf werden bereits gesendete Photos nicht noch
108
+ einmal gesendet.</p>
109
+
110
+
111
+ <p>Alle Dateien mit den Endungen .PNG, .JPG, .GIF, .JPEG werden hochgeladen. Groß-
112
+ oder Kleinschreibung ist egal.</p>
113
+
114
+
115
+ <p>Das Programm erstellt (im Directory multistockphoto) eine Datei namens
116
+ &#8216;sendeliste.dat&#8217;, in der die erfolgreichen Uploads mit Site, Dateiname und
117
+ Datum/Uhrzeit protokolliert werden. Diese Datei darf nicht gelöscht werden,
118
+ da diese Datei auch dazu dient, festzustellen, ob ein Datei schon gesendet
119
+ wurde.
120
+ Kurz: falls eine Photo-Datei in dieser Datei noch nicht auftaucht, wird
121
+ sie an die betreffende Seit gesendet. Bei Problemen bei einzelnen Uploads kann
122
+ man aber in dieser Datei z.B. eine Zeile löschen, was zur Folge hat, daß
123
+ diese Datei beim nächsten Aufruf erneut hochgeladen wird.</p>
124
+
125
+
126
+ <p>Je nach Photo-Site mußt du dann dort online noch Stichworte und ggf. andere
127
+ Daten zu den einzelnen Bildern eintragen.</p>
128
+
129
+
130
+ <p>Einzelne Sites handhaben dies unterschiedlich.</p>
131
+
132
+
133
+ <p>Beispiel: Bei fotolia.de mußt du deine Photos hochladen, dann noch Stichworte
134
+ und verschiedene Vertragsbedingungen festlegen. Dann erst werden deine Bilder
135
+ geprüft und entweder angenommen oder abgelehnt.</p>
136
+
137
+
138
+ <p>Bei zoonar.de wiederum läuft es so, daß du erst nur die Bilder hochlädst, dann
139
+ werden sie begutachtet; angenommen oder abgelehnt und erst wenn sie
140
+ angenommen wurden, kannst du Schlagworte vergeben. Dies hat natürlich den
141
+ Vorteil, daß man für abgelehnte Photos erst gar keine Schlagworte vergeben muß
142
+ (kann).</p>
143
+
144
+
145
+ <p>Diese Nachbearbeitung auf der jeweiligen Seite ist derzeit noch nötig, es ist aber
146
+ geplant, daß auch z.B. die Schlagworte von diesem Programm schon gesetzt werden
147
+ können.</p>
148
+
149
+
150
+ <h2>Demonstration of usage</h2>
151
+
152
+
153
+ <p>Wechseln in Arbeitsdirectory:</p>
154
+
155
+
156
+ <pre>$ cd multistockphoto
157
+ </pre>
158
+
159
+ <pre>
160
+ $ multistockphoto --help
161
+ Usage: multistockphoto [-hvsa]
162
+
163
+ Specific options:
164
+
165
+ Common options:
166
+ -h, --help Show this message
167
+ -v, --version Show version
168
+ -sa, --send-all Send all files
169
+ </pre>
170
+
171
+ <p>Senden aller noch nicht hochgeladenen Photos:</p>
172
+
173
+
174
+ <pre>
175
+ $ multistockphoto --send-all
176
+ send-all
177
+ upload/img_2746.jpg
178
+ fotolia:upload/img_2746.jpg
179
+ zoonar:upload/img_2746.jpg
180
+ </pre>
181
+
182
+ <h2>Forum</h2>
183
+
184
+
185
+ <p><a href="http://groups.google.com/group/multistockphoto">http://groups.google.com/group/multistockphoto</a></p>
186
+
187
+
188
+ <h2>How to submit patches</h2>
189
+
190
+
191
+ <p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people&#8217;s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
192
+
193
+
194
+ <p><span class="caps">TODO</span> &#8211; pick <span class="caps">SVN</span> or Git instructions</p>
195
+
196
+
197
+ <p>The trunk repository is <code>svn://rubyforge.org/var/svn/multistockphoto/trunk</code> for anonymous access.</p>
198
+
199
+
200
+ <p><span class="caps">OOOORRRR</span></p>
201
+
202
+
203
+ <p>You can fetch the source from either:</p>
204
+
205
+
206
+ <ul>
207
+ <li>rubyforge: <a href="http://rubyforge.org/scm/?group_id=6180">http://rubyforge.org/scm/?group_id=6180</a></li>
208
+ </ul>
209
+
210
+
211
+ <pre>git clone git://rubyforge.org/multistockphoto.git</pre>
212
+
213
+ <ul>
214
+ <li>github: <a href="http://github.com/GITHUB_USERNAME/multistockphoto/tree/master">http://github.com/GITHUB_USERNAME/multistockphoto/tree/master</a></li>
215
+ </ul>
216
+
217
+
218
+ <pre>git clone git://github.com/GITHUB_USERNAME/multistockphoto.git</pre>
219
+
220
+ <p><span class="caps">TODO</span> &#8211; add &#8220;github_username: username&#8221; to ~/.rubyforge/user-config.yml and newgem will reuse it for future projects.</p>
221
+
222
+
223
+ <ul>
224
+ <li>gitorious: <a href="git://gitorious.org/multistockphoto/mainline.git">git://gitorious.org/multistockphoto/mainline.git</a></li>
225
+ </ul>
226
+
227
+
228
+ <pre>git clone git://gitorious.org/multistockphoto/mainline.git</pre>
229
+
230
+ <h3>Build and test instructions</h3>
231
+
232
+
233
+ <pre>cd multistockphoto
234
+ rake test
235
+ rake install_gem</pre>
236
+
237
+ <h2>License</h2>
238
+
239
+
240
+ <p>This code is free to use under the terms of the <span class="caps">MIT</span> license.</p>
241
+
242
+
243
+ <h2>Contact</h2>
244
+
245
+
246
+ <p>Comments are welcome. Send an email to <a href="mailto:thopre@gmail.com">Thomas Preymesser</a> email
247
+ or via the <a href="http://groups.google.com/group/multistockphoto">forum</a></p>
248
+ <p class="coda">
249
+ <a href="FIXME email">FIXME full name</a>, 6th May 2008<br>
250
+ Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
251
+ </p>
252
+ </div>
253
+
254
+ <!-- insert site tracking codes here, like Google Urchin -->
255
+
256
+ </body>
257
+ </html>
data/website/index.txt ADDED
@@ -0,0 +1,188 @@
1
+ h1. multistockphoto
2
+
3
+ h1. &#x2192; 'multistockphoto'
4
+
5
+
6
+ h2. What
7
+
8
+ This program is intended to work with the german versions of the photo sites fotolia.de and zoonar.de.
9
+ Photographers can upload their photos to this sites.
10
+ Currently it works only with the german version. If you're interested to adapt
11
+ it to other languages please email me.
12
+
13
+ Dieses Programm bietet bequemen Upload von eigenen Photos zu Photo-Seiten wie
14
+ fotolia.de, zoonar.de oder anderen, bei denen man eigene Bilder zum Verkauf
15
+ anbieten kann.
16
+ Neue Photos werden automatisch zu allen Seiten hochgeladen, bei denen man
17
+ registriert ist.
18
+
19
+ h2. Installing
20
+
21
+ <pre syntax="ruby">sudo gem install multistockphoto</pre>
22
+
23
+ h2. The basics
24
+
25
+ Nach der Installation lege irgendwo einen Ordner namens 'multistockphoto' an!
26
+ Innerhalb dieses Ordners lege bitte einen weiteren Ordner namens 'upload' an!
27
+
28
+ Du benötigst jetzt noch eine Datei namens 'config.yaml' mit folgendem Inhalt:
29
+
30
+ <pre>
31
+ ---
32
+ :zoonar:
33
+ :password: 'lalala'
34
+ :user: 'hugo'
35
+ :fotolia:
36
+ :user: 'hugo'
37
+ :password: 'lalal9589'
38
+ :ftp_user: '34567798'
39
+ :ftp_password: 'hugolala19589'
40
+ </pre>
41
+
42
+ Trage dort deine Zugangsdaten ein! Achtung: Die Einrückung links ist wichtig.
43
+ Im Gem-Directory ist eine Vorlage, die du kopieren kannst.
44
+ Wenn du nicht bei allen aufgelisteten Sites Mitglied bist oder die Bilder dort
45
+ hochladen möchtest, dann lösche einfach
46
+ die entsprechenden Abschnitte - du ersparst dir und den jeweiligen Servern
47
+ unnötige Last, die bei fehlerhaften Einloggversuchen vergeudet wird.
48
+
49
+ Wenn du ein oder mehrere neue Bilder hochladen willst, kopiere die Bilddateien
50
+ in den upload-Ordner!
51
+ Dann rufe (innerhalb des multistockphoto-Ordners) das Kommando
52
+
53
+ <pre>
54
+ multistockphoto --send-all
55
+ </pre>
56
+
57
+ auf! Dieses erledigt den Upload aller neuen Photos zu allen definierten
58
+ Photo-Sites.
59
+
60
+ Die Photo-Dateien im upload-Ordner müssen nach dem Upload nicht gelöscht
61
+ werden - bei einem weiteren Aufruf werden bereits gesendete Photos nicht noch
62
+ einmal gesendet.
63
+
64
+ Alle Dateien mit den Endungen .PNG, .JPG, .GIF, .JPEG werden hochgeladen. Groß-
65
+ oder Kleinschreibung ist egal.
66
+
67
+ Das Programm erstellt (im Directory multistockphoto) eine Datei namens
68
+ 'sendeliste.dat', in der die erfolgreichen Uploads mit Site, Dateiname und
69
+ Datum/Uhrzeit protokolliert werden. Diese Datei darf nicht gelöscht werden,
70
+ da diese Datei auch dazu dient, festzustellen, ob ein Datei schon gesendet
71
+ wurde.
72
+ Kurz: falls eine Photo-Datei in dieser Datei noch nicht auftaucht, wird
73
+ sie an die betreffende Seit gesendet. Bei Problemen bei einzelnen Uploads kann
74
+ man aber in dieser Datei z.B. eine Zeile löschen, was zur Folge hat, daß
75
+ diese Datei beim nächsten Aufruf erneut hochgeladen wird.
76
+
77
+ Je nach Photo-Site mußt du dann dort online noch Stichworte und ggf. andere
78
+ Daten zu den einzelnen Bildern eintragen.
79
+
80
+ Einzelne Sites handhaben dies unterschiedlich.
81
+
82
+ Beispiel: Bei fotolia.de mußt du deine Photos hochladen, dann noch Stichworte
83
+ und verschiedene Vertragsbedingungen festlegen. Dann erst werden deine Bilder
84
+ geprüft und entweder angenommen oder abgelehnt.
85
+
86
+ Bei zoonar.de wiederum läuft es so, daß du erst nur die Bilder hochlädst, dann
87
+ werden sie begutachtet; angenommen oder abgelehnt und erst wenn sie
88
+ angenommen wurden, kannst du Schlagworte vergeben. Dies hat natürlich den
89
+ Vorteil, daß man für abgelehnte Photos erst gar keine Schlagworte vergeben muß
90
+ (kann).
91
+
92
+ Diese Nachbearbeitung auf der jeweiligen Seite ist derzeit noch nötig, es ist aber
93
+ geplant, daß auch z.B. die Schlagworte von diesem Programm schon gesetzt werden
94
+ können.
95
+
96
+ h2. Demonstration of usage
97
+
98
+ Wechseln in Arbeitsdirectory:
99
+
100
+ <pre>$ cd multistockphoto
101
+ </pre>
102
+
103
+ <pre>
104
+ $ multistockphoto --help
105
+ Usage: multistockphoto [-hvsa]
106
+
107
+ Specific options:
108
+
109
+ Common options:
110
+ -h, --help Show this message
111
+ -v, --version Show version
112
+ -sa, --send-all Send all files
113
+ </pre>
114
+
115
+ Senden aller noch nicht hochgeladenen Photos:
116
+
117
+ <pre>
118
+ $ multistockphoto --send-all
119
+ send-all
120
+ upload/img_2746.jpg
121
+ fotolia:upload/img_2746.jpg
122
+ zoonar:upload/img_2746.jpg
123
+ </pre>
124
+
125
+ h2. Forum
126
+
127
+ "http://groups.google.com/group/multistockphoto":http://groups.google.com/group/multistockphoto
128
+
129
+
130
+ h2. How to submit patches
131
+
132
+ Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
133
+
134
+ TODO - pick SVN or Git instructions
135
+
136
+ The trunk repository is <code>svn://rubyforge.org/var/svn/multistockphoto/trunk</code> for anonymous access.
137
+
138
+ OOOORRRR
139
+
140
+ You can fetch the source from either:
141
+
142
+ <% if rubyforge_project_id %>
143
+
144
+ * rubyforge: "http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>":http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>
145
+
146
+ <pre>git clone git://rubyforge.org/multistockphoto.git</pre>
147
+
148
+ <% else %>
149
+
150
+ * rubyforge: MISSING IN ACTION
151
+
152
+ TODO - You can not created a RubyForge project, OR have not run <code>rubyforge config</code>
153
+ yet to refresh your local rubyforge data with this projects' id information.
154
+
155
+ When you do this, this message will magically disappear!
156
+
157
+ Or you can hack website/index.txt and make it all go away!!
158
+
159
+ <% end %>
160
+
161
+ * github: "http://github.com/GITHUB_USERNAME/multistockphoto/tree/master":http://github.com/GITHUB_USERNAME/multistockphoto/tree/master
162
+
163
+ <pre>git clone git://github.com/GITHUB_USERNAME/multistockphoto.git</pre>
164
+
165
+
166
+ TODO - add "github_username: username" to ~/.rubyforge/user-config.yml and newgem will reuse it for future projects.
167
+
168
+
169
+ * gitorious: "git://gitorious.org/multistockphoto/mainline.git":git://gitorious.org/multistockphoto/mainline.git
170
+
171
+ <pre>git clone git://gitorious.org/multistockphoto/mainline.git</pre>
172
+
173
+ h3. Build and test instructions
174
+
175
+ <pre>cd multistockphoto
176
+ rake test
177
+ rake install_gem</pre>
178
+
179
+
180
+ h2. License
181
+
182
+ This code is free to use under the terms of the MIT license.
183
+
184
+ h2. Contact
185
+
186
+ Comments are welcome. Send an email to "Thomas Preymesser":mailto:thopre@gmail.com email
187
+ or via the "forum":http://groups.google.com/group/multistockphoto
188
+