lyrics-ebook 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. data/LICENSE +340 -0
  2. data/README +46 -0
  3. data/bin/lyrics-ebook +47 -0
  4. data/lib/eeepub/LICENSE +20 -0
  5. data/lib/eeepub/README.md +77 -0
  6. data/lib/eeepub/Rakefile +49 -0
  7. data/lib/eeepub/VERSION +1 -0
  8. data/lib/eeepub/examples/files/bar.html +42 -0
  9. data/lib/eeepub/examples/files/foo.html +42 -0
  10. data/lib/eeepub/examples/simple_epub.rb +25 -0
  11. data/lib/eeepub/lib/eeepub.rb +17 -0
  12. data/lib/eeepub/lib/eeepub/container_item.rb +108 -0
  13. data/lib/eeepub/lib/eeepub/easy.rb +100 -0
  14. data/lib/eeepub/lib/eeepub/maker.rb +127 -0
  15. data/lib/eeepub/lib/eeepub/ncx.rb +68 -0
  16. data/lib/eeepub/lib/eeepub/ocf.rb +112 -0
  17. data/lib/eeepub/lib/eeepub/opf.rb +148 -0
  18. data/lib/eeepub/spec/eeepub/easy_spec.rb +66 -0
  19. data/lib/eeepub/spec/eeepub/maker_spec.rb +124 -0
  20. data/lib/eeepub/spec/eeepub/ncx_spec.rb +80 -0
  21. data/lib/eeepub/spec/eeepub/ocf_spec.rb +43 -0
  22. data/lib/eeepub/spec/eeepub/opf_spec.rb +262 -0
  23. data/lib/eeepub/spec/eeepub_spec.rb +4 -0
  24. data/lib/eeepub/spec/spec_helper.rb +12 -0
  25. data/lib/lyrics_ebook.rb +71 -0
  26. data/lib/lyrics_ebook/cache2html.rb +33 -0
  27. data/lib/lyrics_ebook/cache_manager.rb +77 -0
  28. data/lib/lyrics_ebook/lyric.rb +32 -0
  29. data/lib/lyrics_ebook/lyric_download.rb +50 -0
  30. data/lib/lyrics_ebook/lyrics2html.rb +106 -0
  31. data/lib/lyrics_ebook/mini_lyrics_parser.rb +26 -0
  32. data/lib/lyrics_ebook/mp3_parser.rb +37 -0
  33. data/lib/wiki_lyrics/amarok/COPYING +340 -0
  34. data/lib/wiki_lyrics/amarok/README +51 -0
  35. data/lib/wiki_lyrics/amarok/amarok.rb +355 -0
  36. data/lib/wiki_lyrics/amarok/pluginadapter.rb +113 -0
  37. data/lib/wiki_lyrics/amarok/plugins.rb +95 -0
  38. data/lib/wiki_lyrics/amarok/wikilyrics.rb +578 -0
  39. data/lib/wiki_lyrics/amarok/wikilyrics.spec +4 -0
  40. data/lib/wiki_lyrics/amarok/wikipluginadapter.rb +392 -0
  41. data/lib/wiki_lyrics/cli/optionsparser.rb +228 -0
  42. data/lib/wiki_lyrics/cli/pluginadapter.rb +56 -0
  43. data/lib/wiki_lyrics/cli/plugins.rb +79 -0
  44. data/lib/wiki_lyrics/cli/wikilyrics.rb +178 -0
  45. data/lib/wiki_lyrics/cli/wikipluginadapter.rb +140 -0
  46. data/lib/wiki_lyrics/docs/COPYING +340 -0
  47. data/lib/wiki_lyrics/docs/ChangeLog +293 -0
  48. data/lib/wiki_lyrics/docs/HOWTO.pdf +0 -0
  49. data/lib/wiki_lyrics/docs/HOWTO.tex +151 -0
  50. data/lib/wiki_lyrics/docs/HOWTO.txt +139 -0
  51. data/lib/wiki_lyrics/docs/README +45 -0
  52. data/lib/wiki_lyrics/docs/TODO +12 -0
  53. data/lib/wiki_lyrics/gui/gui-gtk.rb +945 -0
  54. data/lib/wiki_lyrics/gui/gui-qt3.rb +785 -0
  55. data/lib/wiki_lyrics/gui/gui-qt4.rb +845 -0
  56. data/lib/wiki_lyrics/gui/gui-tk.rb +1104 -0
  57. data/lib/wiki_lyrics/gui/gui.rb +268 -0
  58. data/lib/wiki_lyrics/gui/test.rb +74 -0
  59. data/lib/wiki_lyrics/i18n/README +1 -0
  60. data/lib/wiki_lyrics/i18n/en.rb +181 -0
  61. data/lib/wiki_lyrics/i18n/es.rb +181 -0
  62. data/lib/wiki_lyrics/i18n/i18n.rb +126 -0
  63. data/lib/wiki_lyrics/i18n/sk.rb +174 -0
  64. data/lib/wiki_lyrics/itrans/COPYRIGHT +31 -0
  65. data/lib/wiki_lyrics/itrans/itrans +0 -0
  66. data/lib/wiki_lyrics/itrans/itrans.txt +8 -0
  67. data/lib/wiki_lyrics/itrans/lyric.txt +23 -0
  68. data/lib/wiki_lyrics/itrans/udvng.ifm +206 -0
  69. data/lib/wiki_lyrics/lyrics.rb +567 -0
  70. data/lib/wiki_lyrics/lyrics_AZLyrics.rb +113 -0
  71. data/lib/wiki_lyrics/lyrics_DarkLyrics.rb +124 -0
  72. data/lib/wiki_lyrics/lyrics_Giitaayan.rb +124 -0
  73. data/lib/wiki_lyrics/lyrics_Jamendo.rb +166 -0
  74. data/lib/wiki_lyrics/lyrics_LeosLyrics.rb +142 -0
  75. data/lib/wiki_lyrics/lyrics_LoudSongs.rb +135 -0
  76. data/lib/wiki_lyrics/lyrics_LyricWiki.rb +329 -0
  77. data/lib/wiki_lyrics/lyrics_LyricsDownload.rb +118 -0
  78. data/lib/wiki_lyrics/lyrics_LyricsMania.rb +141 -0
  79. data/lib/wiki_lyrics/lyrics_Lyriki.rb +287 -0
  80. data/lib/wiki_lyrics/lyrics_SeekLyrics.rb +108 -0
  81. data/lib/wiki_lyrics/lyrics_Sing365.rb +103 -0
  82. data/lib/wiki_lyrics/lyrics_TerraLetras.rb +126 -0
  83. data/lib/wiki_lyrics/mediawikilyrics.rb +1464 -0
  84. data/lib/wiki_lyrics/tests/plugin_tests.rb +161 -0
  85. data/lib/wiki_lyrics/tests/tests.rb +74 -0
  86. data/lib/wiki_lyrics/utils/formdata.rb +56 -0
  87. data/lib/wiki_lyrics/utils/htmlentities.rb +291 -0
  88. data/lib/wiki_lyrics/utils/http.rb +198 -0
  89. data/lib/wiki_lyrics/utils/itrans.rb +160 -0
  90. data/lib/wiki_lyrics/utils/kde.rb +88 -0
  91. data/lib/wiki_lyrics/utils/logger.rb +123 -0
  92. data/lib/wiki_lyrics/utils/strings.rb +378 -0
  93. data/lib/wiki_lyrics/utils/xmlhash.rb +111 -0
  94. data/lib/wiki_lyrics/wikilyrics.kdevelop +152 -0
  95. data/lib/wiki_lyrics/wikilyrics.kdevses +18 -0
  96. data/lib/wiki_lyrics/win/gtk_fix.bat +3 -0
  97. data/lib/wiki_lyrics/win/tk_fix.bat +3 -0
  98. data/lib/wiki_lyrics/win/wikilyrics.bat +4 -0
  99. data/lib/wiki_lyrics/win/win_fix.rb +52 -0
  100. data/templates/art_.erb.xhtml +29 -0
  101. data/templates/artists.erb.xhtml +19 -0
  102. data/templates/cover.erb.xhtml +22 -0
  103. data/test/cache_manager_test.rb +73 -0
  104. data/test/data/artist name/title name.lyric +6 -0
  105. data/test/lyric_test.rb +41 -0
  106. metadata +194 -0
@@ -0,0 +1,268 @@
1
+ # Copyright (C) 2006-2008 by Sergio Pistone
2
+ # sergio_pistone@yahoo.com.ar
3
+ #
4
+ # This program is free software; you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation; either version 2 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program; if not, write to the
16
+ # Free Software Foundation, Inc.,
17
+ # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
+
19
+ require File.expand_path( File.dirname( __FILE__ ) + "/../utils/xmlhash" )
20
+ require "tempfile"
21
+
22
+ module GUI
23
+
24
+ @@toolkits = []
25
+ @@run_out_of_process = false
26
+ @@running_out_of_process = false
27
+
28
+ def GUI.run_out_of_process?()
29
+ return @@run_out_of_process
30
+ end
31
+
32
+ def GUI.set_run_out_of_process( value )
33
+ @@run_out_of_process = value
34
+ end
35
+
36
+ def GUI.set_running_out_of_process( value )
37
+ @@running_out_of_process = value
38
+ end
39
+
40
+ def GUI.set_toolkit_priority( toolkits )
41
+ toolkits.each() do |toolkit|
42
+ if @@toolkits.include?( toolkit )
43
+ # check if the toolkit is already loaded (and change it's priority)
44
+ @@toolkits.delete( toolkit )
45
+ @@toolkits.insert( 0, toolkit )
46
+ return toolkit
47
+ elsif GUI.load_toolkit( toolkit ) # try to load the toolkit
48
+ @@toolkits.insert( 0, toolkit )
49
+ return toolkit
50
+ end
51
+ end
52
+ return GUI.get_current_toolkit()
53
+ end
54
+
55
+ def GUI.load_toolkit( toolkit )
56
+ toolkit = toolkit.downcase()
57
+ if toolkit == "qt" || toolkit == "qt4"
58
+ begin
59
+ return require( File.expand_path( File.dirname( __FILE__ ) + "/gui-qt4" ) )
60
+ rescue LoadError => e
61
+ $stderr << "Error loading Qt4 GUI backend: #{e}\n"
62
+ end
63
+ elsif toolkit == "qt3"
64
+ begin
65
+ return require( File.expand_path( File.dirname( __FILE__ ) + "/gui-qt3" ) )
66
+ rescue LoadError => e
67
+ $stderr << "Error loading Qt3 GUI backend: #{e}\n"
68
+ end
69
+ elsif toolkit == "gtk"
70
+ begin
71
+ return require( File.expand_path( File.dirname( __FILE__ ) + "/gui-gtk" ) )
72
+ rescue LoadError => e
73
+ $stderr << "Error loading GTK GUI backend: #{e}\n"
74
+ end
75
+ elsif toolkit == "tk"
76
+ begin
77
+ return require( File.expand_path( File.dirname( __FILE__ ) + "/gui-tk" ) )
78
+ rescue LoadError => e
79
+ $stderr << "Error loading Tk GUI backend: #{e}\n"
80
+ end
81
+ end
82
+ return false
83
+ end
84
+
85
+ def GUI.get_current_toolkit()
86
+ return @@toolkits.length > 0 ? @@toolkits[0].downcase() : nil
87
+ end
88
+
89
+ def GUI.create_exchange_file()
90
+ base_filename = Dir.tmpdir() + "/wikilyrics.gui." + $$.to_s()
91
+ filename = nil
92
+ loop do
93
+ filename = base_filename + "." + rand( 65536 ).to_s()
94
+ break unless File.exists?( filename )
95
+ end
96
+ return File.new( filename, "w+" )
97
+ end
98
+
99
+ def GUI.show_dialog( dialog_name, values )
100
+
101
+ if @@run_out_of_process && ! @@running_out_of_process
102
+ file = GUI.create_exchange_file()
103
+ begin
104
+ XMLHash.write( file, values )
105
+ if ( (ret = system( "ruby", __FILE__, dialog_name, file.path, @@toolkits.join( "," ) )) )
106
+ values = {}
107
+ file.rewind()
108
+ XMLHash.read( file.path, values, false )
109
+ end
110
+ return ret ? values : nil
111
+ ensure
112
+ file.close()
113
+ File.delete( file.path )
114
+ end
115
+ end
116
+
117
+ current_toolkit = GUI.get_current_toolkit()
118
+
119
+ if current_toolkit == "qt" || current_toolkit == "qt4"
120
+ app = Qt::Application.new( ARGV )
121
+ # FIXME: there's currently a weird bug when using Oxygen style:
122
+ # the first time it's used, it renders and works properly but,
123
+ # when used again, renders badly and generally also crashes.
124
+ if ( ! @@running_out_of_process )
125
+ ["plastique", "cleanlooks", "windows", "cde", "motif"].each() do |style|
126
+ break if app.setStyle( style )
127
+ end
128
+ end
129
+ dialog = eval( "QT4::" + dialog_name + ".new( values )" )
130
+ dialog.show()
131
+ app.exec()
132
+ elsif current_toolkit == "qt3"
133
+ app = Qt::Application.new( ARGV )
134
+ dialog = eval( "QT3::" + dialog_name + ".new( values )" )
135
+ app.setMainWidget( dialog )
136
+ app.mainWidget.show()
137
+ app.exec()
138
+ elsif current_toolkit == "gtk"
139
+ dialog = eval( "GTK::" + dialog_name + ".new( values )" )
140
+ dialog.exec()
141
+ Gtk.main()
142
+ elsif current_toolkit == "tk"
143
+ dialog = eval( "TK::" + dialog_name + ".new( values )" )
144
+ dialog.exec()
145
+ else
146
+ return nil
147
+ end
148
+
149
+ if dialog.accepted()
150
+ return dialog.values()
151
+ else
152
+ return nil
153
+ end
154
+
155
+ end
156
+
157
+ def GUI.show_plugins_manager_dialog( values )
158
+ values["script_name"] = "Wiki-Lyrics" if ! values.include?( "script_name" )
159
+ ret = GUI.show_dialog( "PluginsManagerDialog", values )
160
+ values.update( ret ) if ret
161
+ return ret != nil
162
+ end
163
+
164
+
165
+ def GUI.show_plugins_manager_dialog( values )
166
+ values["script_name"] = "Wiki-Lyrics" if ! values.include?( "script_name" )
167
+ ret = GUI.show_dialog( "PluginsManagerDialog", values )
168
+ values.update( ret ) if ret
169
+ return ret != nil
170
+ end
171
+
172
+ def GUI.show_wiki_plugin_dialog( values )
173
+ values["site_name"] = "Wiki-Lyrics" if ! values.include?( "site_name" )
174
+ ret = GUI.show_dialog( "WikiPluginDialog", values )
175
+ values.update( ret ) if ret
176
+ values["submit"] = values["submit"].to_s() == "true"
177
+ values["review"] = values["review"].to_s() == "true"
178
+ values["prompt_autogen"] = values["prompt_autogen"].to_s() == "true"
179
+ values["prompt_no_lyrics"] = values["prompt_no_lyrics"].to_s() == "true"
180
+ return ret != nil
181
+ end
182
+
183
+ def GUI.show_submit_song_dialog( values )
184
+ values["year"] = values["year"].to_i()
185
+ values["site_name"] = "Wiki-Lyrics" if ! values.include?( "site_name" )
186
+ ret = GUI.show_dialog( "SubmitSongDialog", values )
187
+ values.update( ret ) if ret
188
+ if values["instrumental"]
189
+ values["lyrics"] = nil
190
+ else
191
+ values["lyrics"] = values["lyrics"].to_s().strip()
192
+ end
193
+ values["reviewed"] = values["reviewed"].to_s() == "true"
194
+ values["instrumental"] = values["instrumental"].to_s() == "true"
195
+ return ret != nil
196
+ end
197
+
198
+ def GUI.show_submit_album_dialog( values )
199
+ values["released"] = values["released"].to_s()
200
+ values["site_name"] = "Wiki-Lyrics" if ! values.include?( "site_name" )
201
+ ret = GUI.show_dialog( "SubmitAlbumDialog", values )
202
+ values.update( ret ) if ret
203
+ values["reviewed"] = values["reviewed"].to_s() == "true"
204
+ return ret != nil
205
+ end
206
+
207
+ def GUI.show_upload_cover_dialog( values )
208
+ values["site_name"] = "Wiki-Lyrics" if ! values.include?( "site_name" )
209
+ values["year"] = values["year"].to_i()
210
+ ret = GUI.show_dialog( "UploadCoverDialog", values )
211
+ values.update( ret ) if ret
212
+ return ret != nil
213
+ end
214
+
215
+ def GUI.show_wiki_fix_pages_dialog( values )
216
+ values["title"] = "Pages fixer" if ! values.include?( "title" )
217
+ GUI.show_dialog( "FixPagesDialog", values )
218
+ end
219
+
220
+ def GUI.show_search_lyrics_dialog( values )
221
+ values["year"] = values["year"].to_i()
222
+ ret = GUI.show_dialog( "SearchLyricsDialog", values )
223
+ values.update( ret ) if ret
224
+ return ret != nil
225
+ end
226
+
227
+ def GUI.show_lyrics_dialog( values )
228
+ GUI.show_dialog( "ShowLyricsDialog", values )
229
+ end
230
+
231
+ def GUI.show_message_dialog( message, title=nil )
232
+ if title
233
+ system( "kdialog", "--icon", "amarok", "--title", title, "--msgbox","<qt>" + message.gsub( "\n", "<br/>" ) + "</qt>" )
234
+ else
235
+ system( "kdialog", "--icon", "amarok", "--msgbox", "<qt>" + message.gsub( "\n", "<br/>" ) + "</qt>" )
236
+ end
237
+ end
238
+
239
+ def GUI.show_confirmation_dialog( message, title=nil )
240
+ if title
241
+ system( "kdialog", "--icon", "amarok", "--title", title, "--yesno", "<qt>" + message.gsub( "\n", "<br/>" ) + "</qt>" )
242
+ else
243
+ system( "kdialog", "--icon", "amarok", "--yesno", "<qt>" + message.gsub( "\n", "<br/>" ) + "</qt>" )
244
+ end
245
+ return $? == 0
246
+ end
247
+
248
+ end
249
+
250
+ if $0 == __FILE__
251
+
252
+ dialog_name = ARGV[0]
253
+ values_file_path = ARGV[1]
254
+ toolkit_priority = ARGV[2].split( "," )
255
+
256
+ GUI.set_running_out_of_process( true ) # would cause infinite recursion if not set
257
+ GUI.set_toolkit_priority( toolkit_priority )
258
+
259
+ values = {}
260
+ XMLHash.read( values_file_path, values, false )
261
+
262
+ ret = GUI.show_dialog( dialog_name, values )
263
+
264
+ XMLHash.write( values_file_path, ret ) if ret
265
+
266
+ exit( ret ? 0 : 1 )
267
+
268
+ end
@@ -0,0 +1,74 @@
1
+ # Copyright (C) 2006-2008 by Sergio Pistone
2
+ # sergio_pistone@yahoo.com.ar
3
+ #
4
+ # This program is free software; you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation; either version 2 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program; if not, write to the
16
+ # Free Software Foundation, Inc.,
17
+ # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
+
19
+ require File.expand_path( File.dirname( __FILE__ ) + "/gui.rb" )
20
+
21
+ if $0 == __FILE__
22
+
23
+ GUI.set_run_out_of_process( true )
24
+
25
+ # NOTE: qt4 can't be loaded along with qt3 or gtk (no idea why...)
26
+ ["qt4"].each() do |toolkit|
27
+ # ["qt4", "tk", "gtk"].each() do |toolkit|
28
+
29
+ GUI.set_toolkit_priority( [toolkit] )
30
+
31
+ values = { "script_name"=>"script_name", "used_plugins"=>["used1", "used2", "used3", "used4"], "unused_plugins"=>["unused1", "unused2"], "cleanup_lyrics"=>"true", "threaded"=>"false", "write_log"=>"true" }
32
+ GUI.show_plugins_manager_dialog( values )
33
+ values.each() { |key, value| puts "#{key}: #{value}" }
34
+
35
+ values = { "artist"=>"artist", "title"=>"title", "lyrics"=>"lyrícs1\nlyrícs2", "site"=>"site" }
36
+ GUI.show_lyrics_dialog( values )
37
+ values.each() { |key, value| puts "#{key}: #{value}" }
38
+
39
+ values = { "artist"=>"artist", "title"=>"title", "album"=>"album", "year"=>"1969" }
40
+ GUI.show_search_lyrics_dialog( values )
41
+ values.each() { |key, value| puts "#{key}: #{value}" }
42
+
43
+ values = { "site_name"=>"site_name", "submit"=>"true", "review"=>"true", "prompt_autogen"=>"false", "prompt_no_lyrics"=>"false", "username"=>"username", "password"=>"password" }
44
+ GUI.show_wiki_plugin_dialog( values )
45
+ values.each() { |key, value| puts "#{key}: #{value}" }
46
+
47
+ values = { "site_name"=>"site_name", "url"=>"url", "artist"=>"artist", "year"=>"1999", "album"=>"album", "title"=>"title", "lyrics"=>"lyrícs1\nlyrícs2", "lyricist"=>"lyricist", "credits"=>"credits", "reviewed"=>"false" }
48
+ GUI.show_submit_song_dialog( values )
49
+ values.each() { |key, value| puts "#{key}: #{value}" }
50
+
51
+ values = { "site_name"=>"site_name", "artist"=>"artist", "year"=>"1999", "month"=>"10", "day"=>"14","album"=>"album", "reviewed"=>"false", "image_path"=>"image_path", "tracks"=>"tracks <small>fffff</small>\ntracks <small>fffff</small>" }
52
+ GUI.show_submit_album_dialog( values )
53
+ values.each() { |key, value| puts "#{key}: #{value}" }
54
+
55
+ values = { "site_name"=>"site_name", "artist"=>"artist", "year"=>"1999", "month"=>"10", "day"=>"14","album"=>"album", "reviewed"=>"false", "tracks"=>"tracks <small>fffff</small>\ntracks <small>fffff</small>" }
56
+ GUI.show_submit_album_dialog( values )
57
+ values.each() { |key, value| puts "#{key}: #{value}" }
58
+
59
+ GUI.show_wiki_fix_pages_dialog( {
60
+ "site_name" => "site_name",
61
+ "title" => "Pages fixer",
62
+ "fetch_func" => "proc { `kdialog --msgbox 'fetch_func'` }",
63
+ "fix_func" => "proc { `kdialog --msgbox 'fix_func'` }",
64
+ "submit_func" => "proc { `kdialog --msgbox 'submit_func'` }"
65
+ } )
66
+ values.each() { |key, value| puts "#{key}: #{value}" }
67
+
68
+ values = { "site_name"=>"site_name", "artist"=>"artist", "album"=>"album", "year"=>"year", "image_path" => "image_path" }
69
+ GUI.show_upload_cover_dialog( values )
70
+ values.each() { |key, value| puts "#{key}: #{value}" }
71
+
72
+ end
73
+
74
+ end
@@ -0,0 +1 @@
1
+ IMPORTANT: save all language files with UTF-8 encoding
@@ -0,0 +1,181 @@
1
+ cli.usage = Usage: %1 [OPTIONS]
2
+ cli.description = Fetch lyrics from various sites and/or submit lyrics to Lyriki and LyricWiki.
3
+ cli.values.true = true
4
+ cli.values.false = false
5
+ cli.options = Options:
6
+ cli.options.artist = Song artist (mandatory unless %1 specified).
7
+ cli.options.title = Song title (mandatory unless %1 specified).
8
+ cli.options.album = Song album.
9
+ cli.options.year = Song album year.
10
+ cli.options.featfix = Fix artist/title when the later has "feat. ARTIST" (%1 by default).
11
+ cli.options.batchfile = Batch process file (expects artist;title;album;year entries in each line).
12
+ cli.options.cleanup = Cleanup fetched lyrics (%1 by default).
13
+ cli.options.sites = Sites to search lyrics for, order included (%1 by default; see %2).
14
+ cli.options.sites.list = List available sites.
15
+ cli.options.sites.list.available = Available sites:
16
+ cli.options.submit = Wiki site to submit content to (needs %1 and %2).
17
+ cli.options.username = Username to login with (mandatory when %1 specified).
18
+ cli.options.password = Password to login with (mandatory when %1 specified).
19
+ cli.options.persist = Restore/save session from/to file (needs %1 and %2).
20
+ cli.options.prompt.review = Prompt for review before submitting content (%1 by default, needs %2).
21
+ cli.options.prompt.autogen = Prompt for review of autogenerated pages (%1 by default, needs %2).
22
+ cli.options.prompt.nolyrics = Prompt for submission even when no lyrics to submit where found (%1 by default, needs %2).
23
+ cli.options.proxy = Proxy server URL.
24
+ cli.options.toolkits = GUI toolkits priority. Loading falls back to the next toolkit when one fails; an empty list will cause no dialog to be shown and lyrics to be dumped to stdout (defaults to %1).
25
+ cli.options.help = Show this message and exit.
26
+ cli.options.version = Show version and exit.
27
+ cli.error.missingoption = missing %1
28
+ cli.error.missingdependency = %1 requires %1
29
+ cli.error.incompatibleoptions = %1 is incompatible with %2
30
+ cli.error.invalidoptionvalue = invalid %1 value: %2
31
+ cli.error.nosite = must provide at least one site
32
+ cli.error.notoolkit = must provide at least one toolkit to use review mode
33
+
34
+ cli.application.searchinglyrics = searching lyrics for %1 by %2...
35
+ cli.application.lyricsfound = lyrics for %1 by %2 found at %3
36
+ cli.application.nolyricsfound = no lyrics found for %1 by %2
37
+ cli.application.plugintimeout = %1 request has timed out, site %2 is probably down
38
+ cli.application.batchmode = operating in batch mode
39
+ cli.application.processedcount = %1 files processed
40
+
41
+ amarok.application.error.connectionrefused = Can't connect to the Internet (check your proxy settings)
42
+ amarok.application.error.connectiondown = The connection is down, exiting
43
+ amarok.application.error.notoolkit = Sorry...\nYou need one of QtRuby, RubyGTK or TkRuby to run this program
44
+ amarok.application.error.nopluginsselected = No sites to search lyrics for specified
45
+ amarok.application.search.current = Search current song lyrics
46
+ amarok.application.search.current.nosongplaying = no song currently playing
47
+ amarok.application.search.selected = Search selected song lyrics
48
+ amarok.application.search.noinfofound = no song info found in Amarok database
49
+ amarok.application.search.nolyricsfound = no lyrics found for <b>%1</b> by <b>%2</b>
50
+ amarok.application.search.plugintimeout = %1 request has timed out! Site %2 is probably down
51
+ amarok.application.clearlyricscache = Clear lyrics cache
52
+ amarok.application.clearlyricscache.confirm = Are you sure you want to clear the lyrics cache?
53
+ amarok.application.clearlyricscache.done = lyrics cache cleared
54
+
55
+ amarok.wikiplugin.checksong = Check/Submit song page
56
+ amarok.wikiplugin.checksong.noinfofound = no song info found in Amarok database
57
+ amarok.wikiplugin.checkalbum = Check/Submit album page
58
+ amarok.wikiplugin.checkalbum.noinfofound = no album info found in Amarok database
59
+ amarok.wikiplugin.uploadcover = Upload album cover
60
+ amarok.wikiplugin.uploadcover.invalidalbumparams = invalid album params received
61
+ amarok.wikiplugin.uploadcover.noimagepath = no cover image received
62
+ amarok.wikiplugin.uploadcover.searching = searching album cover for <b>%1</b> by <b>%2</b>...
63
+ amarok.wikiplugin.uploadcover.found = album cover found (no need to upload)
64
+ amarok.wikiplugin.submitcontent = Submit contents
65
+
66
+ gui.common.cut = Cut
67
+ gui.common.copy = Copy
68
+ gui.common.paste = Paste
69
+ gui.common.delete = Delete
70
+ gui.common.selectall = Select All
71
+ gui.common.undo = Undo
72
+ gui.common.redo = Redo
73
+
74
+ gui.common.accept = Accept
75
+ gui.common.cancel = Cancel
76
+ gui.common.submit = Submit
77
+ gui.common.load = Load
78
+ gui.common.fix = Fix
79
+ gui.common.url = URL
80
+ gui.common.artist = Artist
81
+ gui.common.song = Song
82
+ gui.common.album = Album
83
+ gui.common.year = Year
84
+ gui.common.month = Month
85
+ gui.common.day = Day
86
+ gui.common.released = Released
87
+ gui.common.credits = Credits
88
+ gui.common.lyricist = Lyricist
89
+ gui.common.image = Image
90
+ gui.common.reviewed = I have reviewed the contents of this form
91
+
92
+ gui.searchlyrics.title = Search lyrics
93
+ gui.searchlyrics.search = Search Settings
94
+
95
+ gui.lyrics.title = Lyrics to %1 by %2
96
+
97
+ gui.pluginsmanager.title = %1 script configuration
98
+ gui.pluginsmanager.sites = Sites
99
+ gui.pluginsmanager.sites.inuse = Currently used
100
+ gui.pluginsmanager.sites.available = Available
101
+ gui.pluginsmanager.sites.moveup = Move Up
102
+ gui.pluginsmanager.sites.movedown = Move Down
103
+ gui.pluginsmanager.sites.add = << Add
104
+ gui.pluginsmanager.sites.remove = >> Remove
105
+ gui.pluginsmanager.misc = Miscellaneous
106
+ gui.pluginsmanager.misc.cleanup = Clean up retrieved lyrics
107
+ gui.pluginsmanager.misc.singlethreaded = Avoid using multiple threads to save battery (needs restart)
108
+ gui.pluginsmanager.misc.writelog = Write log to %1
109
+
110
+ gui.wikiplugin.title = Configure %1 settings
111
+ gui.wikiplugin.general = General Settings
112
+ gui.wikiplugin.general.submit = Submit contents to %1
113
+ gui.wikiplugin.general.review = Prompt for review before submitting contents
114
+ gui.wikiplugin.general.autogen = Review song pages marked as auto-generated
115
+ gui.wikiplugin.general.nolyrics = Show submit dialog even if no lyrics were found
116
+ gui.wikiplugin.login = Login Settings
117
+ gui.wikiplugin.login.username = Username
118
+ gui.wikiplugin.login.password = Password
119
+
120
+ gui.submitsong.title.submit = %1 - Submit song page
121
+ gui.submitsong.title.edit = %1 - Review song page
122
+ gui.submitsong.instrumental = Song is instrumental
123
+
124
+ gui.submitalbum.title = %1 - Submit album page
125
+ gui.submitalbum.coverfound = (cover found, no need to upload)
126
+
127
+ gui.uploadcover.title = %1 - Upload album cover
128
+ gui.uploadcover.imagepath = Path
129
+ gui.uploadcover.browseimage.title = Select album cover image path
130
+ gui.uploadcover.browseimage.images = Images
131
+ gui.uploadcover.browseimage.allfiles = All Files
132
+
133
+ gui.fixpages.success = Submitted page %1
134
+ gui.fixpages.error = Error submitting page %1
135
+
136
+ wiki.control.versionblocked = <b>Version %1 has been blocked</b> from submitting content. Please, update to the last version.
137
+ wiki.control.userblocked = <b>User %1 has been blocked</b> from submitting content. Please, check your user page.
138
+ wiki.control.updated = A new version of the script has been released. <b>Please, update to version %1</b>.
139
+
140
+ wiki.login.attempt = starting session for user <b>%1</b>...
141
+ wiki.login.success = session started successfully for user <b>%1</b>
142
+ wiki.login.error = error starting session for user <b>%1</b>
143
+ wiki.logout = session finished for user <b>%1</b>
144
+
145
+ wiki.session.save.success = session saved for user <b>%1</b>
146
+ wiki.session.save.error.notloggedin = can't save session before logging in
147
+ wiki.session.save.error = there was an error saving the session for user <b>%1</b>
148
+ wiki.session.restore.success = session restored for user <b>%1</b>
149
+ wiki.session.restore.error = there was an error restoring the session for user <b>%1</b>
150
+ wiki.session.restore.notfound = no saved session found
151
+
152
+ wiki.submitsong.searchingpage = searching song page for <b>%1</b> by <b>%2</b>...
153
+ wiki.submitsong.pagefound = song page found for <b>%1</b> by <b>%2</b>
154
+ wiki.submitsong.pagefound.autogenerated = auto-generated song page found for <b>%1</b> by <b>%2</b>
155
+ wiki.submitsong.nopagefound = no song page found for <b>%1</b> by <b>%2</b>
156
+ wiki.submitsong.cancelled = song page submission cancelled by user
157
+ wiki.submitsong.mustreviewcontent = contents were not reviewed, submission cancelled
158
+ wiki.submitsong.success = successfully submitted song page for <b>%1</b> by <b>%2</b>
159
+ wiki.submitsong.error.invalidsong = invalid song title received
160
+ wiki.submitsong.error.invalidartist = invalid album artist received
161
+ wiki.submitsong.error.nolyrics = no lyrics to submit received
162
+ wiki.submitsong.error = there was an error submitting the song page for <b>%1</b> by <b>%2</b>
163
+
164
+ wiki.submitalbum.searchingpage = searching album page for <b>%1</b> by <b>%2</b>...
165
+ wiki.submitalbum.pagefound = found album page for <b>%1</b> by <b>%2</b>
166
+ wiki.submitalbum.nopagefound = no album page found for <b>%1</b> by <b>%2</b>
167
+ wiki.submitalbum.cancelled = album page submission cancelled by user
168
+ wiki.submitalbum.mustreviewcontent = contents were not reviewed, submission cancelled
169
+ wiki.submitalbum.success = successfully submitted album page for <b>%1</b> by <b>%2</b>
170
+ wiki.submitalbum.error.invalidyear = invalid album year received
171
+ wiki.submitalbum.error.invalidalbum = invalid album name received
172
+ wiki.submitalbum.error.invalidartist = invalid album artist received
173
+ wiki.submitalbum.error = there was an error submitting the album page for <b>%1</b> by <b>%2</b>
174
+
175
+ wiki.submitredirect.success = submitted redirect page to %1
176
+ wiki.submitredirect.error = there was an error submitting the redirect page to %1
177
+
178
+ wiki.uploadcover.uploading = uploading album cover for <b>%1</b> by <b>%2</b>
179
+ wiki.uploadcover.success = successfully uploaded album cover for <b>%1</b> by <b>%2</b>
180
+ wiki.uploadcover.error.convert = there was an error converting the album cover to JPEG format
181
+ wiki.uploadcover.error = there was an error uploading the album cover for <b>%1</b> by <b>%2</b>