multimedia_paradise 1.1.344 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +99 -77
  3. data/bin/audio_player +1 -1
  4. data/bin/extract_images_from_this_video_file +1 -1
  5. data/bin/loop_this_video +1 -1
  6. data/bin/merge_avi_files +1 -1
  7. data/bin/merge_mp3 +1 -1
  8. data/bin/mp3_to_opus +1 -1
  9. data/bin/mpg_to_mp4 +1 -1
  10. data/bin/multimedia_paradise +1 -1
  11. data/bin/to_aiff +2 -5
  12. data/bin/to_flac +7 -0
  13. data/bin/to_mp3 +8 -0
  14. data/bin/to_mp4 +1 -1
  15. data/bin/to_ogg +7 -0
  16. data/bin/verbose_analyse_this_mp3_file_for_id3_tags +1 -1
  17. data/bin/video_codec +1 -1
  18. data/bin/video_thumbnail +1 -1
  19. data/bin/video_to_images +1 -1
  20. data/doc/README.gen +88 -51
  21. data/doc/{CHANGELOG.md → changelog/changelog.md} +8 -6
  22. data/doc/{LINKS.md → links/links.md} +2 -2
  23. data/doc/{MOTIVATION_FOR_THIS_PROJECT.md → motivation_for_the_multimedia_paradise_project/motivation_for_the_multimedia_paradise_project.md} +5 -5
  24. data/doc/todo/todo_for_the_multimedia_paradise_project.md +79 -93
  25. data/lib/multimedia_paradise/actions/actions.rb +224 -0
  26. data/lib/multimedia_paradise/audio/audio_player/audio_player.rb +61 -64
  27. data/lib/multimedia_paradise/audio/audio_tag_reader/audio_tag_reader.rb +17 -8
  28. data/lib/multimedia_paradise/audio/base.rb +0 -5
  29. data/lib/multimedia_paradise/audio/compress.rb +8 -5
  30. data/lib/multimedia_paradise/audio/create_m3u_playlist.rb +7 -11
  31. data/lib/multimedia_paradise/audio/extract_audio/constants.rb +0 -37
  32. data/lib/multimedia_paradise/audio/extract_audio/extract_audio.rb +90 -68
  33. data/lib/multimedia_paradise/audio/file_duration/file_duration.rb +134 -80
  34. data/lib/multimedia_paradise/audio/genres/boogie.rb +1 -6
  35. data/lib/multimedia_paradise/audio/genres/concerts.rb +1 -6
  36. data/lib/multimedia_paradise/audio/genres/constants.rb +1 -1
  37. data/lib/multimedia_paradise/audio/genres/eurodance.rb +1 -6
  38. data/lib/multimedia_paradise/audio/genres/genre.rb +36 -33
  39. data/lib/multimedia_paradise/audio/genres/hip_hop.rb +1 -6
  40. data/lib/multimedia_paradise/audio/genres/italian_songs.rb +1 -6
  41. data/lib/multimedia_paradise/audio/genres/the_1980s.rb +1 -6
  42. data/lib/multimedia_paradise/audio/genres/trance.rb +4 -7
  43. data/lib/multimedia_paradise/audio/lyrics_fetcher.rb +27 -22
  44. data/lib/multimedia_paradise/audio/merge_audio_files.rb +18 -11
  45. data/lib/multimedia_paradise/audio/modify_year_of_audio_file.rb +23 -11
  46. data/lib/multimedia_paradise/audio/n_audio_songs.rb +3 -2
  47. data/lib/multimedia_paradise/audio/play_all_audio_files.rb +41 -16
  48. data/lib/multimedia_paradise/audio/playlist/playlist.rb +163 -123
  49. data/lib/multimedia_paradise/audio/remove_audio.rb +11 -6
  50. data/lib/multimedia_paradise/audio/remove_last_second.rb +2 -3
  51. data/lib/multimedia_paradise/audio/report_missing_id.rb +22 -12
  52. data/lib/multimedia_paradise/audio/streamripper/streamripper_wrapper.rb +7 -5
  53. data/lib/multimedia_paradise/audio/to_mp3.rb +7 -5
  54. data/lib/multimedia_paradise/audio/to_ogg.rb +3 -1
  55. data/lib/multimedia_paradise/audio/wav_to_mp3.rb +5 -5
  56. data/lib/multimedia_paradise/base/base.rb +854 -15
  57. data/lib/multimedia_paradise/base/colours.rb +28 -31
  58. data/lib/multimedia_paradise/base/{commandline_arguments.rb → commandline_arguments_module/commandline_arguments_module.rb} +12 -9
  59. data/lib/multimedia_paradise/colours/colours.rb +4 -1
  60. data/lib/multimedia_paradise/commandline/{menu.rb → commandline.rb} +19 -16
  61. data/lib/multimedia_paradise/constants/constants.rb +504 -14
  62. data/lib/multimedia_paradise/constants/web_constants.rb +2 -4
  63. data/lib/multimedia_paradise/gui/gui_base.rb +2 -2
  64. data/lib/multimedia_paradise/gui/libui/lyrics/lyrics.rb +1 -1
  65. data/lib/multimedia_paradise/gui/libui/simple_play_widget/simple_play_widget.rb +1 -1
  66. data/lib/multimedia_paradise/gui/libui/video_player/video_player.rb +1 -1
  67. data/lib/multimedia_paradise/gui/libui/youtube_channels/youtube_channels.rb +1 -1
  68. data/lib/multimedia_paradise/gui/shared_code/multimedia_converter/multimedia_converter_module.rb +0 -478
  69. data/lib/multimedia_paradise/gui/shared_code/playlist/playlist_module.rb +94 -41
  70. data/lib/multimedia_paradise/gui/shared_code/simple_play_widget/simple_play_widget_module.rb +0 -257
  71. data/lib/multimedia_paradise/gui/universal_widgets/change_metadata_widget/change_metadata_widget.rb +2 -2
  72. data/lib/multimedia_paradise/gui/universal_widgets/information_about_a_mp3_file/information_about_a_mp3_file.rb +1 -1
  73. data/lib/multimedia_paradise/gui/universal_widgets/lyrics/lyrics.rb +1 -1
  74. data/lib/multimedia_paradise/gui/universal_widgets/multimedia_converter/multimedia_converter.rb +589 -0
  75. data/lib/multimedia_paradise/gui/universal_widgets/playlist/playlist.rb +197 -0
  76. data/lib/multimedia_paradise/gui/universal_widgets/radio/radio.rb +1 -1
  77. data/lib/multimedia_paradise/gui/{gtk2 → universal_widgets}/simple_play_widget/README.md +1 -1
  78. data/lib/multimedia_paradise/gui/universal_widgets/simple_play_widget/simple_play_widget.rb +404 -0
  79. data/lib/multimedia_paradise/gui/universal_widgets/tag_mp3_files/tag_mp3_files.rb +3 -6
  80. data/lib/multimedia_paradise/java/Playlist.class +0 -0
  81. data/lib/multimedia_paradise/java/Playlist.java +198 -0
  82. data/lib/multimedia_paradise/multimedia/analyse_multimedia_file.rb +21 -19
  83. data/lib/multimedia_paradise/multimedia/avisynth/avisynth_code.avs +441 -442
  84. data/lib/multimedia_paradise/multimedia/base.rb +0 -18
  85. data/lib/multimedia_paradise/multimedia/chord.rb +1 -1
  86. data/lib/multimedia_paradise/multimedia/cut_multimedia/cut_multimedia.rb +7 -5
  87. data/lib/multimedia_paradise/multimedia/cut_multimedia/evaluate_from_this_file.rb +2 -2
  88. data/lib/multimedia_paradise/multimedia/interactive_shell.rb +22 -3
  89. data/lib/multimedia_paradise/multimedia/merge_multimedia.rb +4 -3
  90. data/lib/multimedia_paradise/multimedia/play_from_this_list.rb +4 -27
  91. data/lib/multimedia_paradise/multimedia/{read_meta_tags.rb → read_meta_tags/read_meta_tags.rb} +14 -19
  92. data/lib/multimedia_paradise/multimedia/start_length_duration.rb +3 -3
  93. data/lib/multimedia_paradise/project/project.rb +8 -4
  94. data/lib/multimedia_paradise/requires/require_the_multimedia_paradise_project.rb +5 -5
  95. data/lib/multimedia_paradise/requires/require_toplevel_methods_files.rb +1 -1
  96. data/lib/multimedia_paradise/sinatra/app.rb +3 -3
  97. data/lib/multimedia_paradise/statistics/README.md +6 -5
  98. data/lib/multimedia_paradise/statistics/video.rb +34 -14
  99. data/lib/multimedia_paradise/{misc → time}/long_format_to_milliseconds_converter.rb +4 -2
  100. data/lib/multimedia_paradise/{misc → time}/milliseconds_to_long_format_converter.rb +2 -2
  101. data/lib/multimedia_paradise/toplevel_methods/audio_related_code.rb +138 -0
  102. data/lib/multimedia_paradise/toplevel_methods/chop_into_segments_of_n_seconds_size.rb +2 -2
  103. data/lib/multimedia_paradise/{conversions → toplevel_methods}/conversions.rb +140 -48
  104. data/lib/multimedia_paradise/toplevel_methods/copy_and_merge_this_video_n_times.rb +5 -5
  105. data/lib/multimedia_paradise/toplevel_methods/create_video_from_this_audio.rb +7 -6
  106. data/lib/multimedia_paradise/toplevel_methods/cut_from_to.rb +2 -2
  107. data/lib/multimedia_paradise/toplevel_methods/denoise.rb +2 -2
  108. data/lib/multimedia_paradise/toplevel_methods/deshake.rb +3 -6
  109. data/lib/multimedia_paradise/toplevel_methods/{output_directory.rb → directory_related_code.rb} +38 -1
  110. data/lib/multimedia_paradise/toplevel_methods/encode_this_video.rb +8 -4
  111. data/lib/multimedia_paradise/toplevel_methods/esystem.rb +43 -4
  112. data/lib/multimedia_paradise/{ffmpeg → toplevel_methods}/ffmpeg.rb +200 -193
  113. data/lib/multimedia_paradise/toplevel_methods/{files_and_directories.rb → files_related_code.rb} +19 -56
  114. data/lib/multimedia_paradise/toplevel_methods/flip_and_rotate.rb +3 -3
  115. data/lib/multimedia_paradise/toplevel_methods/is_audio_file_is_video_file_is_image_file_is_multimedia_file.rb +115 -0
  116. data/lib/multimedia_paradise/toplevel_methods/is_on_roebe.rb +1 -1
  117. data/lib/multimedia_paradise/toplevel_methods/{merge_multimedia_file.rb → merge.rb} +98 -4
  118. data/lib/multimedia_paradise/toplevel_methods/opn.rb +5 -4
  119. data/lib/multimedia_paradise/toplevel_methods/player_in_use.rb +14 -7
  120. data/lib/multimedia_paradise/toplevel_methods/query_the_audio_codec_of_this_file.rb +4 -3
  121. data/lib/multimedia_paradise/toplevel_methods/radio.rb +1 -3
  122. data/lib/multimedia_paradise/toplevel_methods/return_all_video_files.rb +4 -4
  123. data/lib/multimedia_paradise/toplevel_methods/return_path_to_random_simpsons_video_file.rb +1 -1
  124. data/lib/multimedia_paradise/toplevel_methods/return_random_video_file_from_the_video_collection.rb +9 -7
  125. data/lib/multimedia_paradise/toplevel_methods/scale_video.rb +3 -4
  126. data/lib/multimedia_paradise/toplevel_methods/set_title_of.rb +6 -6
  127. data/lib/multimedia_paradise/{help/help.rb → toplevel_methods/show_help.rb} +14 -8
  128. data/lib/multimedia_paradise/toplevel_methods/slow_down_this_video_file.rb +2 -3
  129. data/lib/multimedia_paradise/toplevel_methods/start_screencast.rb +3 -2
  130. data/lib/multimedia_paradise/toplevel_methods/{misc.rb → toplevel_methods.rb} +485 -527
  131. data/lib/multimedia_paradise/toplevel_methods/total_duration.rb +4 -3
  132. data/lib/multimedia_paradise/toplevel_methods/use_lame_codec.rb +1 -2
  133. data/lib/multimedia_paradise/toplevel_methods/video_dataset.rb +1 -1
  134. data/lib/multimedia_paradise/version/version.rb +2 -2
  135. data/lib/multimedia_paradise/video/all_videos.rb +12 -19
  136. data/lib/multimedia_paradise/video/check_numbers.rb +76 -32
  137. data/lib/multimedia_paradise/video/columbo/columbo.rb +36 -14
  138. data/lib/multimedia_paradise/video/guess_video_name.rb +2 -10
  139. data/lib/multimedia_paradise/video/mike_hammer/mike_hammer.rb +2 -2
  140. data/lib/multimedia_paradise/video/missing_video_files/missing_video_files.rb +1 -9
  141. data/lib/multimedia_paradise/video/movie_searcher.rb +2 -10
  142. data/lib/multimedia_paradise/video/mplayer_wrapper.rb +1 -9
  143. data/lib/multimedia_paradise/video/random_video.rb +1 -2
  144. data/lib/multimedia_paradise/video/registered_video_file.rb +2 -10
  145. data/lib/multimedia_paradise/video/report_local_videos.rb +1 -9
  146. data/lib/multimedia_paradise/video/simpsons.rb +2 -10
  147. data/lib/multimedia_paradise/video/smart_animals/smart_animals.rb +10 -8
  148. data/lib/multimedia_paradise/video/speed_up_video.rb +28 -10
  149. data/lib/multimedia_paradise/video/store_available_video_files.rb +49 -33
  150. data/lib/multimedia_paradise/video/the_simpsons/README.md +0 -0
  151. data/lib/multimedia_paradise/video/the_simpsons/good_the_simpsons_episodes.rb +8 -8
  152. data/lib/multimedia_paradise/video/the_simpsons/the_simpsons.rb +14 -10
  153. data/lib/multimedia_paradise/video/video_information.rb +55 -49
  154. data/lib/multimedia_paradise/{configuration → yaml/configuration}/play_zoomed.yml +0 -0
  155. data/lib/multimedia_paradise/yaml/{playlist.yml → playlist/playlist.yml} +14 -15
  156. data/lib/multimedia_paradise/yaml/video/video.yml +1 -1
  157. data/lib/multimedia_paradise/yaml/video_collection/video_collection.yml +34 -32
  158. data/lib/multimedia_paradise/yaml/youtube/alltagsgeschichte/alltagsgeschichte.yml +61 -11
  159. data/lib/multimedia_paradise/yaml/youtube/songs/songs.yml +5 -3
  160. data/multimedia_paradise.gemspec +1 -1
  161. data/test/testing_audio_player.rb +3 -3
  162. data/test/testing_file_duration.rb +5 -5
  163. metadata +45 -76
  164. data/lib/multimedia_paradise/audio/file_duration/constants.rb +0 -53
  165. data/lib/multimedia_paradise/audio/waveform/class.rb +0 -341
  166. data/lib/multimedia_paradise/audio/waveform/constants.rb +0 -38
  167. data/lib/multimedia_paradise/audio/waveform/log.rb +0 -101
  168. data/lib/multimedia_paradise/base/constants.rb +0 -19
  169. data/lib/multimedia_paradise/base/encoding.rb +0 -31
  170. data/lib/multimedia_paradise/base/misc.rb +0 -665
  171. data/lib/multimedia_paradise/base/namespace.rb +0 -36
  172. data/lib/multimedia_paradise/base/time.rb +0 -25
  173. data/lib/multimedia_paradise/constants/conversions.rb +0 -62
  174. data/lib/multimedia_paradise/constants/directory_constants.rb +0 -139
  175. data/lib/multimedia_paradise/constants/encodings.rb +0 -26
  176. data/lib/multimedia_paradise/constants/file_constants.rb +0 -176
  177. data/lib/multimedia_paradise/constants/misc.rb +0 -80
  178. data/lib/multimedia_paradise/constants/my_video_directory.rb +0 -30
  179. data/lib/multimedia_paradise/constants/namespace.rb +0 -14
  180. data/lib/multimedia_paradise/constants/newline.rb +0 -14
  181. data/lib/multimedia_paradise/constants/video_filetypes.rb +0 -27
  182. data/lib/multimedia_paradise/conversions/README.md +0 -2
  183. data/lib/multimedia_paradise/ffmpeg/README.md +0 -2
  184. data/lib/multimedia_paradise/gui/gtk2/multimedia_converter/multimedia_converter.rb +0 -33
  185. data/lib/multimedia_paradise/gui/gtk2/notebook.rb +0 -144
  186. data/lib/multimedia_paradise/gui/gtk2/play_video_from_my_collection/play_video_from_my_collection.rb +0 -43
  187. data/lib/multimedia_paradise/gui/gtk2/simple_play_widget/simple_play_widget.rb +0 -40
  188. data/lib/multimedia_paradise/gui/gtk2/widget_increase_or_decrease_audio/widget_increase_or_decrease_audio.rb +0 -42
  189. data/lib/multimedia_paradise/gui/gtk2/youtube_downloader/youtube_downloader.rb +0 -32
  190. data/lib/multimedia_paradise/gui/gtk3/lyrics/lyrics.rb +0 -0
  191. data/lib/multimedia_paradise/gui/gtk3/multimedia_converter/multimedia_converter.rb +0 -34
  192. data/lib/multimedia_paradise/gui/gtk3/playlist/playlist.rb +0 -34
  193. data/lib/multimedia_paradise/gui/gtk3/simple_play_widget/simple_play_widget.rb +0 -38
  194. data/lib/multimedia_paradise/toplevel_methods/analyze_audio_stream.rb +0 -31
  195. data/lib/multimedia_paradise/toplevel_methods/codecs.rb +0 -50
  196. data/lib/multimedia_paradise/toplevel_methods/copy_file.rb +0 -18
  197. data/lib/multimedia_paradise/toplevel_methods/delay_audio.rb +0 -31
  198. data/lib/multimedia_paradise/toplevel_methods/ensure_that_the_output_directory_exists.rb +0 -27
  199. data/lib/multimedia_paradise/toplevel_methods/has_audio.rb +0 -48
  200. data/lib/multimedia_paradise/toplevel_methods/increase_volume_of_this_audio_file.rb +0 -61
  201. data/lib/multimedia_paradise/toplevel_methods/is_a_multimedia_file.rb +0 -27
  202. data/lib/multimedia_paradise/toplevel_methods/is_audio_file.rb +0 -27
  203. data/lib/multimedia_paradise/toplevel_methods/is_image_file.rb +0 -31
  204. data/lib/multimedia_paradise/toplevel_methods/is_video_file.rb +0 -62
  205. data/lib/multimedia_paradise/toplevel_methods/merge_these_videos.rb +0 -106
  206. data/lib/multimedia_paradise/toplevel_methods/run_sys_command.rb +0 -30
  207. data/lib/multimedia_paradise/toplevel_methods/to_flac.rb +0 -30
  208. data/lib/multimedia_paradise/toplevel_methods/to_mp4.rb +0 -24
  209. /data/doc/{MergingVideoLectures.md → merging_video_lectures/merging_video_lectures.md} +0 -0
  210. /data/doc/{Readme_for_the_cut_audio_component.md → readme_for_the_cut_audio_component/Readme_for_the_cut_audio_component.md} +0 -0
  211. /data/lib/multimedia_paradise/yaml/{audio_formats.yml → audio_formats/audio_formats.yml} +0 -0
  212. /data/lib/multimedia_paradise/yaml/{image_formats.yml → image_formats/image_formats.yml} +0 -0
  213. /data/lib/multimedia_paradise/yaml/{lyrics.yml → lyrics/lyrics.yml} +0 -0
  214. /data/lib/multimedia_paradise/yaml/{music_genres.yml → music_genres/music_genres.yml} +0 -0
  215. /data/lib/multimedia_paradise/yaml/{song_tags.yml → song_tags/song_tags.yml} +0 -0
  216. /data/lib/multimedia_paradise/yaml/{use_this_video_player.yml → use_this_video_player/use_this_video_player.yml} +0 -0
  217. /data/lib/multimedia_paradise/yaml/{video_encoding_settings.yml → video_encoding_settings/video_encoding_settings.yml} +0 -0
  218. /data/lib/multimedia_paradise/yaml/{video_filter_aliases.yml → video_filter_aliases/video_filter_aliases.yml} +0 -0
@@ -29,6 +29,7 @@
29
29
  #
30
30
  # =========================================================================== #
31
31
  # require 'multimedia_paradise/audio/playlist/playlist.rb'
32
+ # MultimediaParadise.playlist(ARGV)
32
33
  # =========================================================================== #
33
34
  require 'multimedia_paradise/audio/base.rb'
34
35
 
@@ -79,7 +80,7 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
79
80
  # === :be_quiet
80
81
  # ===================================================================== #
81
82
  when :be_quiet
82
- @be_verbose = false
83
+ set_be_quiet
83
84
  end
84
85
  end
85
86
  run if run_already
@@ -91,23 +92,24 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
91
92
  def reset
92
93
  super()
93
94
  # ======================================================================= #
94
- # === @be_verbose
95
+ # === :be_verbose
95
96
  # ======================================================================= #
96
97
  set_be_verbose
97
- reset_the_internal_hash
98
98
  infer_the_namespace
99
99
  # ======================================================================= #
100
- # === :user_defined_multimedia_player
100
+ # === :playlist_file
101
+ #
102
+ # Designate where the playlist-file can be found.
101
103
  # ======================================================================= #
102
- @internal_hash[:user_defined_multimedia_player] = nil
104
+ @internal_hash[:playlist_file] = PLAYLIST_FILE
103
105
  # ======================================================================= #
104
- # === @playlist_file
106
+ # === :user_defined_multimedia_player
105
107
  # ======================================================================= #
106
- @playlist_file = PLAYLIST_FILE
108
+ @internal_hash[:user_defined_multimedia_player] = nil
107
109
  # ======================================================================= #
108
- # === @report_namespace
110
+ # === :report_namespace
109
111
  # ======================================================================= #
110
- @report_namespace = REPORT_NAMESPACE
112
+ @internal_hash[:report_namespace] = REPORT_NAMESPACE
111
113
  # ======================================================================= #
112
114
  # === @playlist
113
115
  #
@@ -241,15 +243,13 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
241
243
  #
242
244
  # Where to store the playlist. On my system this will be different
243
245
  # than on other people's systems.
244
- #
245
- # bl /Depot/Information/playlist.yml
246
246
  # ========================================================================= #
247
247
  if ENV['IS_ROEBE'].to_i == 1 # On my home system, I will use another playlist.
248
- _ = "#{ENV['RUBY_SRC']}/multimedia_paradise/lib/multimedia_paradise/yaml/playlist.yml"
248
+ _ = "#{ENV['RUBY_SRC']}/multimedia_paradise/lib/multimedia_paradise/yaml/playlist/playlist.yml"
249
249
  if File.exist? _
250
- PLAYLIST_FILE = _ # cat $RSRC/multimedia_paradise/lib/multimedia_paradise/yaml/playlist.yml
250
+ PLAYLIST_FILE = _ # cat $RSRC/multimedia_paradise/lib/multimedia_paradise/yaml/playlist/playlist.yml
251
251
  else
252
- _ = MultimediaParadise.project_yaml_directory?+'playlist.yml'
252
+ _ = MultimediaParadise::FILE_PLAYLIST
253
253
  if File.exist? _
254
254
  PLAYLIST_FILE = _
255
255
  else
@@ -279,6 +279,27 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
279
279
  else
280
280
  case i # case tag
281
281
  # ===================================================================== #
282
+ # === playlist 5
283
+ #
284
+ # This handles numbered input. The specified number will be played
285
+ # from the playlist.
286
+ #
287
+ # Usage example:
288
+ #
289
+ # playlist 32
290
+ #
291
+ # ===================================================================== #
292
+ when /^(\d+)$/
293
+ _ = $1.to_s.dup.to_i # Work on a copy past this point.
294
+ _ = at?(_)
295
+ add_to_play_these_songs(_)
296
+ # ===================================================================== #
297
+ # === playlist --stored-where?
298
+ # ===================================================================== #
299
+ when /^-?-?stored(-|_)?where\??$/i
300
+ e sfancy(PLAYLIST_FILE)+rev
301
+ exit
302
+ # ===================================================================== #
282
303
  # === playlist --random=15
283
304
  # ===================================================================== #
284
305
  when /^-?-?random=(\d+)$/i
@@ -381,7 +402,7 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
381
402
  # ===================================================================== #
382
403
  when /^-?-?last=(\d+)$/i
383
404
  _ = $1.to_s.dup
384
- opnn; e rev+'Now playing the last '+steelblue(_.size.to_s)+' songs.'
405
+ opne rev+'Now playing the last '+steelblue(_.size.to_s)+' songs.'
385
406
  play_song(:last_songs, _) # Just play the last song.
386
407
  exit
387
408
  # ===================================================================== #
@@ -430,21 +451,6 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
430
451
  when /\+/ # We will catch all '+' characters here.
431
452
  add_this_entry(i)
432
453
  # ===================================================================== #
433
- # === playlist 5
434
- #
435
- # This handles numbered input. The specified number will be played
436
- # from the playlist.
437
- #
438
- # Usage example:
439
- #
440
- # playlist 32
441
- #
442
- # ===================================================================== #
443
- when /^(\d+)$/
444
- _ = $1.to_s.dup.to_i # Work on a copy past this point.
445
- _ = at?(_)
446
- add_to_play_these_songs(_)
447
- # ===================================================================== #
448
454
  # === playlist 5,7
449
455
  #
450
456
  # This handles numbered input separated by ',' tokens. The user
@@ -836,7 +842,7 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
836
842
  end
837
843
  }
838
844
  i.flatten!
839
- @commandline_arguments = i
845
+ set_commandline_arguments(i)
840
846
  end
841
847
 
842
848
  # ========================================================================= #
@@ -857,9 +863,9 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
857
863
  entry_one = @playlist[one.to_i - 1]
858
864
  entry_two = @playlist[two.to_i - 1]
859
865
  opne rev+'We will next exchange two positions in our playlist.'
860
- opne 'Entry '+simp(one.to_s)+' ('+sfile(entry_one)+') with '\
861
- 'Entry '+simp(two.to_s)+' ('+sfile(entry_two)+').'
862
- opne 'The new playlist will also be shown.'
866
+ opne "#{rev}Entry "+simp(one.to_s)+' ('+sfile(entry_one)+') with '+
867
+ "#{rev}Entry "+simp(two.to_s)+' ('+sfile(entry_two)+').'
868
+ opne "#{rev}The new playlist will also be shown."
863
869
  # ======================================================================= #
864
870
  # Here, we do the manipulation.
865
871
  # ======================================================================= #
@@ -867,11 +873,10 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
867
873
  @playlist[two.to_i - 1] = entry_one
868
874
  show_playlist # Show it here to see that we did a change.
869
875
  save_dataset
870
- opne 'Exchange operation between '+
871
- steelblue(one.to_s)+' and '+
872
- steelblue(two.to_s)+
873
- ' finished! '+
874
- gold('\o/')
876
+ opne "#{rev}Exchange operation between "+
877
+ steelblue(one.to_s)+"#{rev} and "+
878
+ steelblue(two.to_s)+"#{rev} finished! "+
879
+ gold('\o/')+rev
875
880
  end
876
881
 
877
882
  # ========================================================================= #
@@ -923,11 +928,13 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
923
928
  end
924
929
 
925
930
  # ========================================================================= #
926
- # === playlist_file?
931
+ # === store_where?
927
932
  # ========================================================================= #
928
- def playlist_file?
929
- @playlist_file
930
- end; alias yaml_file? playlist_file? # === yaml_file?
933
+ def store_where?
934
+ @internal_hash[:playlist_file]
935
+ end; alias playlist_location? store_where? # === playlist_location?
936
+ alias yaml_file? store_where? # === yaml_file?
937
+ alias playlist_file? store_where? # === playlist_file?
931
938
 
932
939
  # ========================================================================= #
933
940
  # === return_entry_from_this_position (return tag)
@@ -967,18 +974,11 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
967
974
  end
968
975
  end
969
976
 
970
- # ========================================================================= #
971
- # === store_where?
972
- # ========================================================================= #
973
- def store_where?
974
- @playlist_file
975
- end; alias playlist_location? store_where? # === playlist_location?
976
-
977
977
  # ========================================================================= #
978
978
  # === do_report_the_namespace
979
979
  # ========================================================================= #
980
980
  def do_report_the_namespace
981
- @report_namespace = true
981
+ @internal_hash[:report_namespace] = true
982
982
  end
983
983
 
984
984
  # ========================================================================= #
@@ -997,7 +997,7 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
997
997
  # This method will purge non-existing files from the playlist.
998
998
  # ========================================================================= #
999
999
  def purge_non_existing_files_from_playlist
1000
- opne 'Now purging non-existing files from the playlist.'
1000
+ opne "#{rev}Now purging non-existing files from the playlist."
1001
1001
  new_array = []
1002
1002
  # ======================================================================= #
1003
1003
  # Next, make sure that the dataset was properly loaded.
@@ -1067,9 +1067,9 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
1067
1067
  # === report_where_to_find_the_yaml_file
1068
1068
  # ========================================================================= #
1069
1069
  def report_where_to_find_the_yaml_file
1070
- opne 'The yaml file can be found here:'
1070
+ opne "#{rev}The yaml file can be found here:"
1071
1071
  e
1072
- e ' `'+sfile(yaml_file?)+'`'
1072
+ e "#{rev} `#{sfile(yaml_file?)}#{rev}`"
1073
1073
  e
1074
1074
  end
1075
1075
 
@@ -1078,7 +1078,7 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
1078
1078
  # ========================================================================= #
1079
1079
  def purge_the_playlist
1080
1080
  save_yaml_dataset(:reset)
1081
- opne 'The playlist was emptied.'
1081
+ opne "#{rev}The playlist was emptied."
1082
1082
  end
1083
1083
 
1084
1084
  # ========================================================================= #
@@ -1242,7 +1242,14 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
1242
1242
  # === opnn
1243
1243
  # ========================================================================= #
1244
1244
  def opnn
1245
- super(namespace?) if @report_namespace
1245
+ super(namespace?) if report_namespace?
1246
+ end
1247
+
1248
+ # ========================================================================= #
1249
+ # === report_namespace?
1250
+ # ========================================================================= #
1251
+ def report_namespace?
1252
+ @internal_hash[:report_namespace]
1246
1253
  end
1247
1254
 
1248
1255
  # ========================================================================= #
@@ -1327,7 +1334,9 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
1327
1334
  # This method will populate the instance variable @playlist with the
1328
1335
  # proper dataset.
1329
1336
  # ========================================================================= #
1330
- def load_yaml_dataset(i = store_where?)
1337
+ def load_yaml_dataset(
1338
+ i = store_where?
1339
+ )
1331
1340
  if File.exist? i
1332
1341
  @playlist = YAML.load_file(i)
1333
1342
  end
@@ -1444,72 +1453,74 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
1444
1453
  opne
1445
1454
  opne mediumslateblue('The documented options for this class are as follows:')
1446
1455
  opne
1447
- opnn; ecomment ' - # delete the last entry; '\
1448
- 'this also works via --delete-last-entry'
1449
- opnn; ecomment ' --batch # process all audio files from the '\
1450
- 'current directory'
1451
- opnn; ecomment ' --generate # generate a .m3u playlist'
1452
- opnn; ecomment ' --show_playlist # show the playlist '\
1453
- '(this is the default - SHOW is an alias)'
1454
- opnn; ecomment ' --play # play the files in the playlist'
1455
- opnn; ecomment ' --play_shuffle # shuffle, then play all '\
1456
- 'files in the playlist'
1457
- opnn; ecomment ' --delete 38 # remove the entry at '\
1458
- 'position 38 from our playlist'
1459
- opnn; ecomment ' --remove=38 # this works the same as ^^^, '\
1460
- 'merely uses a = instead'
1461
- opnn; ecomment ' --purge-everything # empty the playlist. That '\
1462
- 'way you can start to populate a new one, from scratch.'
1463
- opnn; ecomment ' --reshuffle # permanently reshuffle '\
1464
- 'the playlist - the songs will have different '\
1465
- 'entries as a result'
1466
- opnn; ecomment ' --random # play ONE random song'
1467
- opnn; ecomment ' --random=25 # play 25 random '\
1468
- 'songs (or whatever other value is passed here)'
1469
- opnn; ecomment ' --reverse-play # play in reverse, '\
1470
- 'from last to first song'
1471
- opnn; ecomment ' --reverse # ^^^ a convenience alias '\
1472
- 'to the above'
1473
- opnn; ecomment ' --trance # play all (local) trance songs'
1474
- opnn; ecomment ' --last-two # play the last '\
1475
- 'two songs. Works as well with other english language'
1476
- opnn; ecomment ' # words, such as three '\
1477
- 'and four and so on'
1478
- opnn; ecomment ' number1 number 2 # exchange these two '\
1479
- 'entries in the playlist with one another such'
1480
- opnn; ecomment ' # as: playlist '\
1481
- '5 6 would swap position'
1482
- opnn; ecomment ' --exchange=114,113 # the same as '\
1483
- '^^^ above, essentially'
1484
- opnn; ecomment ' add <NUMBER/NAME> # add the file '\
1485
- 'at position NUMBER or the FILENAME to the playlist'
1486
- opnn; ecomment ' eurodance # this would play all '\
1487
- 'eurodance-songs. The songs must be available'
1488
- opnn; ecomment ' # locally though, '\
1489
- 'where the AUDIO_DIR constant points at.'
1490
- opnn; ecomment ' playlist --genres # show all '\
1491
- 'registered music-genres (in the '\
1492
- 'multimedia_paradise gem)'
1493
- opnn; ecomment ' playlist --only-names # show only '\
1494
- 'the names of the songs, not the full path'
1495
- opnn; ecomment ' playlist 88,87,86,85,84,83 # play songs '\
1496
- 'at these positions from the playlist'
1497
- opnn; ecomment ' playlist 88 87 86 85 84 83 # same as ^^^ '\
1498
- 'above, just without ","'
1499
- opnn; ecomment ' playlist "95 -> 94" # exchange these '\
1500
- 'two positions with one another e. g. '\
1501
- 'position 95 to 94 and vice versa'
1502
- opnn; ecomment ' playlist --use-mplayer # specifically '\
1503
- 'use mplayer for playing audio files'
1504
- opnn; ecomment ' playlist --use-mpv # specifically '\
1505
- 'use mpv for playing audio files'
1456
+ opnecomment ' - # delete the last entry; '\
1457
+ 'this also works via --delete-last-entry'
1458
+ opnecomment ' --batch # process all audio files from the '\
1459
+ 'current directory'
1460
+ opnecomment ' --generate # generate a .m3u playlist'
1461
+ opnecomment ' --show_playlist # show the playlist '\
1462
+ '(this is the default - SHOW is an alias)'
1463
+ opnecomment ' --play # play the files in the playlist'
1464
+ opnecomment ' --play_shuffle # shuffle, then play all '\
1465
+ 'files in the playlist'
1466
+ opnecomment ' --delete 38 # remove the entry at '\
1467
+ 'position 38 from our playlist'
1468
+ opnecomment ' --remove=38 # this works the same as ^^^, '\
1469
+ 'merely uses a = instead'
1470
+ opnecomment ' --purge-everything # empty the playlist. That '\
1471
+ 'way you can start to populate a new one, from scratch.'
1472
+ opnecomment ' --reshuffle # permanently reshuffle '\
1473
+ 'the playlist - the songs will have different '\
1474
+ 'entries as a result'
1475
+ opnecomment ' --random # play ONE random song'
1476
+ opnecomment ' --random=25 # play 25 random '\
1477
+ 'songs (or whatever other value is passed here)'
1478
+ opnecomment ' --reverse-play # play in reverse, '\
1479
+ 'from last to first song'
1480
+ opnecomment ' --reverse # ^^^ a convenience alias '\
1481
+ 'to the above'
1482
+ opnecomment ' --trance # play all (local) trance songs'
1483
+ opnecomment ' --last-two # play the last '\
1484
+ 'two songs. Works as well with other english language'
1485
+ opnecomment ' # words, such as three '\
1486
+ 'and four and so on'
1487
+ opnecomment ' number1 number 2 # exchange these two '\
1488
+ 'entries in the playlist with one another such'
1489
+ opnecomment ' # as: playlist '\
1490
+ '5 6 would swap position'
1491
+ opnecomment ' --exchange=114,113 # the same as '\
1492
+ '^^^ above, essentially'
1493
+ opnecomment ' add <NUMBER/NAME> # add the file '\
1494
+ 'at position NUMBER or the FILENAME to the playlist'
1495
+ opnecomment ' eurodance # this would play all '\
1496
+ 'eurodance-songs. The songs must be available'
1497
+ opnecomment ' # locally though, '\
1498
+ 'where the AUDIO_DIR constant points at.'
1499
+ opnecomment ' playlist --genres # show all '\
1500
+ 'registered music-genres (in the '\
1501
+ 'multimedia_paradise gem)'
1502
+ opnecomment ' playlist --only-names # show only '\
1503
+ 'the names of the songs, not the full path'
1504
+ opnecomment ' playlist 88,87,86,85,84,83 # play songs '\
1505
+ 'at these positions from the playlist'
1506
+ opnecomment ' playlist 88 87 86 85 84 83 # same as ^^^ '\
1507
+ 'above, just without ","'
1508
+ opnecomment ' playlist "95 -> 94" # exchange these '\
1509
+ 'two positions with one another e. g. '\
1510
+ 'position 95 to 94 and vice versa'
1511
+ opnecomment ' playlist --use-mplayer # specifically '\
1512
+ 'use mplayer for playing audio files'
1513
+ opnecomment ' playlist --use-mpv # specifically '\
1514
+ 'use mpv for playing audio files'
1515
+ opnecomment ' playlist --stored-where? # tell us '\
1516
+ 'where the main .yml file is stored'
1506
1517
  if is_on_roebe?
1507
1518
  # ===================================================================== #
1508
1519
  # Display extra options on roebe-systems only.
1509
1520
  # ===================================================================== #
1510
1521
  e
1511
- opnn; ecomment ' playlist --tales-from-the-crypt # generate '\
1512
- 'tales-from-the-crypt .m3u playlist'
1522
+ opnecomment ' playlist --tales-from-the-crypt # generate '\
1523
+ 'tales-from-the-crypt .m3u playlist'
1513
1524
  e
1514
1525
  end
1515
1526
  e
@@ -1573,7 +1584,7 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
1573
1584
  # in use.
1574
1585
  # ========================================================================= #
1575
1586
  def show_playlist(
1576
- be_verbose = @be_verbose
1587
+ be_verbose = be_verbose?
1577
1588
  )
1578
1589
  if be_verbose
1579
1590
  _ = playlist?
@@ -1600,6 +1611,20 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
1600
1611
  }; e
1601
1612
  end
1602
1613
  end
1614
+ end; alias fancy_display_the_playlist show_playlist # === fancy_display_the_playlist
1615
+
1616
+ # ========================================================================= #
1617
+ # === array_these_songs_will_be_played?
1618
+ # ========================================================================= #
1619
+ def array_these_songs_will_be_played?
1620
+ @array_these_songs_will_be_played
1621
+ end
1622
+
1623
+ # ========================================================================= #
1624
+ # === no_song_was_found_as_part_of_the_playlist
1625
+ # ========================================================================= #
1626
+ def no_song_was_found_as_part_of_the_playlist
1627
+ opne "#{rev}No song was found as part of the playlist."
1603
1628
  end
1604
1629
 
1605
1630
  # ========================================================================= #
@@ -1608,9 +1633,12 @@ class Playlist < MultimediaParadise::AudioBase # === MultimediaParadise::Playlis
1608
1633
  def run
1609
1634
  sanitize_the_commandline
1610
1635
  menu
1611
- verbose_play_these_songs(
1612
- @array_these_songs_will_be_played
1613
- )
1636
+ array = array_these_songs_will_be_played?
1637
+ if array.empty?
1638
+ fancy_display_the_playlist
1639
+ else
1640
+ verbose_play_these_songs(array)
1641
+ end
1614
1642
  end
1615
1643
 
1616
1644
  # ========================================================================= #
@@ -1629,8 +1657,20 @@ def self.add_this_song_to_the_playlist(i)
1629
1657
  ::MultimediaParadise::Playlist.add(i)
1630
1658
  end
1631
1659
 
1660
+ # =========================================================================== #
1661
+ # === MultimediaParadise.playlist
1662
+ # =========================================================================== #
1663
+ def self.playlist(arg1 = ARGV[0], arg2 = ARGV[1])
1664
+ MultimediaParadise::Playlist.new(arg1, arg2)
1665
+ end
1666
+
1632
1667
  end
1633
1668
 
1634
1669
  if __FILE__ == $PROGRAM_NAME
1635
- MultimediaParadise::Playlist.new(ARGV[0], ARGV[1])
1670
+ alias e puts
1671
+ playlist = MultimediaParadise::Playlist.new(ARGV[0], ARGV[1])
1672
+ e 'Debugging:'
1673
+ e
1674
+ pp playlist
1675
+ e
1636
1676
  end # playlist
@@ -2,18 +2,23 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- # === MultimediaParadise::RemoveAudio
5
+ # === MultimediaParadise::Audio::RemoveAudio
6
6
  #
7
7
  # This small module can be used to remove audio from a given file.
8
8
  #
9
9
  # Specific usage example:
10
10
  #
11
- # MultimediaParadise::RemoveAudio[]
11
+ # MultimediaParadise::Audio::RemoveAudio[]
12
12
  #
13
13
  # =========================================================================== #
14
+ # require 'multimedia_paradise/audio/remove_audio.rb'
15
+ # MultimediaParadise.remove_audio(ARGV)
16
+ # =========================================================================== #
14
17
  module MultimediaParadise
15
18
 
16
- module RemoveAudio # == MultimediaParadise::RemoveAudio[]
19
+ module Audio
20
+
21
+ module RemoveAudio # == MultimediaParadise::Audio::RemoveAudio[]
17
22
 
18
23
  # ========================================================================= #
19
24
  # === remove_audio_from
@@ -73,7 +78,7 @@ module RemoveAudio # == MultimediaParadise::RemoveAudio[]
73
78
  remove_audio_from(i)
74
79
  end
75
80
 
76
- end
81
+ end; end
77
82
 
78
83
  # =========================================================================== #
79
84
  # === MultimediaParadise.remove_audio
@@ -88,11 +93,11 @@ end
88
93
  #
89
94
  # =========================================================================== #
90
95
  def self.remove_audio(i, &block)
91
- RemoveAudio.remove_audio_from(i, &block)
96
+ MultimediaParadise::Audio::RemoveAudio.remove_audio_from(i, &block)
92
97
  end
93
98
 
94
99
  end
95
100
 
96
101
  if __FILE__ == $PROGRAM_NAME
97
- MultimediaParadise::RemoveAudio[ARGV]
102
+ MultimediaParadise::Audio::RemoveAudio[ARGV]
98
103
  end # remove_audio
@@ -15,7 +15,6 @@
15
15
  # MultimediaParadise.remove_last_second(ARGV)
16
16
  # =========================================================================== #
17
17
  require 'multimedia_paradise/audio/base.rb'
18
- require 'multimedia_paradise/audio/file_duration/file_duration.rb'
19
18
 
20
19
  module MultimediaParadise
21
20
 
@@ -47,7 +46,7 @@ class RemoveLastSecond < ::MultimediaParadise::AudioBase
47
46
  begin
48
47
  require 'roebe/classes/twentyfour_hours_notation.rb'
49
48
  rescue LoadError; end
50
- n_seconds_new = ::MultimediaParadise.duration?(i) - 1
49
+ n_seconds_new = action(:duration?, i) - 1
51
50
  return Roebe::TwentyfourHoursNotation[n_seconds_new]
52
51
  end
53
52
 
@@ -80,4 +79,4 @@ end
80
79
 
81
80
  if __FILE__ == $PROGRAM_NAME
82
81
  MultimediaParadise::RemoveLastSecond.new(ARGV)
83
- end # remove_last_second
82
+ end # removelastsecond
@@ -2,14 +2,14 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- # === MultimediaParadise::ReportMissingId
5
+ # === MultimediaParadise::Audio::ReportMissingId
6
6
  #
7
7
  # This class will iterate over the given .mp3 files and report missing
8
8
  # ids, such as a missing :genre or :comment entry.
9
9
  #
10
10
  # Usage example:
11
11
  #
12
- # MultimediaParadise::ReportMissingId.new(ARGV)
12
+ # MultimediaParadise::Audio::ReportMissingId.new(ARGV)
13
13
  #
14
14
  # =========================================================================== #
15
15
  # require 'multimedia_paradise/audio/report_missing_id.rb'
@@ -19,7 +19,9 @@ require 'multimedia_paradise/audio/base.rb'
19
19
 
20
20
  module MultimediaParadise
21
21
 
22
- class ReportMissingId < MultimediaParadise::AudioBase # === MultimediaParadise::ReportMissingId
22
+ module Audio
23
+
24
+ class ReportMissingId < MultimediaParadise::AudioBase # === MultimediaParadise::Audio::ReportMissingId
23
25
 
24
26
  require 'multimedia_paradise/audio/audio_tag_reader/audio_tag_reader.rb'
25
27
 
@@ -64,7 +66,7 @@ class ReportMissingId < MultimediaParadise::AudioBase # === MultimediaParadise::
64
66
  def work_on_these_files(i)
65
67
  problem_encountered = 0
66
68
  i.each {|this_audio_file|
67
- audio_tag_reader = MultimediaParadise::AudioTagReader.new(this_audio_file) { :do_not_report_anything }
69
+ audio_tag_reader = MultimediaParadise::Audio::AudioTagReader.new(this_audio_file) { :do_not_report_anything }
68
70
  # ===================================================================== #
69
71
  # Next, we will check against the main Array.
70
72
  # ===================================================================== #
@@ -73,16 +75,24 @@ class ReportMissingId < MultimediaParadise::AudioBase # === MultimediaParadise::
73
75
  (this_entry.to_s.downcase+'?').to_sym
74
76
  )
75
77
  case this_entry
78
+ # =================================================================== #
79
+ # === :Artist
80
+ # =================================================================== #
76
81
  when :Artist, :artist
77
82
  if result.to_s.empty?
78
83
  problem_encountered += 1
79
- e problem_encountered.to_s+') No artist entry for: '+sfile(this_audio_file)
84
+ e steelblue(problem_encountered.to_s)+
85
+ rev+') No artist entry for: '+sfile(this_audio_file)
80
86
  end
81
- when :year
87
+ # =================================================================== #
88
+ # === :Year
89
+ # =================================================================== #
90
+ when :Year, :year
82
91
  if result.to_s == '0'
83
92
  problem_encountered += 1
84
- e problem_encountered.to_s+') '\
85
- 'Faulty year entry for '+sfile(this_audio_file)+'; '\
93
+ e steelblue(problem_encountered.to_s)+
94
+ rev+') '\
95
+ 'Faulty year entry for '+sfile(this_audio_file)+rev+'; '\
86
96
  'the value was 0.'
87
97
  e tomato(
88
98
  ' This means that no year has been registered for this audio file.'
@@ -111,21 +121,21 @@ class ReportMissingId < MultimediaParadise::AudioBase # === MultimediaParadise::
111
121
  # ========================================================================= #
112
122
  # === MultimediaParadise::ReportMissingId[]
113
123
  # ========================================================================= #
114
- def self.[](i = '')
124
+ def self.[](i = ARGV)
115
125
  new(i)
116
126
  end
117
127
 
118
- end
128
+ end; end
119
129
 
120
130
  # =========================================================================== #
121
131
  # === MultimediaParadise.report_missing_id
122
132
  # =========================================================================== #
123
133
  def self.report_missing_id(i = :default_playlist)
124
- ::MultimediaParadise::ReportMissingId.new(i)
134
+ ::MultimediaParadise::Audio::ReportMissingId.new(i)
125
135
  end; self.instance_eval { alias report_missing_ids report_missing_id } # === MultimediaParadise.report_missing_ids
126
136
 
127
137
  end
128
138
 
129
139
  if __FILE__ == $PROGRAM_NAME
130
- MultimediaParadise::ReportMissingId.new(ARGV)
140
+ MultimediaParadise::Audio::ReportMissingId.new(ARGV)
131
141
  end # reportmissingid /home/x/songs/