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
@@ -7,26 +7,865 @@
7
7
  # All .rb files that are part of the MultimediaParadise project can
8
8
  # subclass from this file here. This is the preferred way, too.
9
9
  # =========================================================================== #
10
- # require 'multimedia_paradise/base/base.rb'; class Foo < ::MultimediaParadise::Base
10
+ # require 'multimedia_paradise/base/base.rb'
11
+ # class Foo < ::MultimediaParadise::Base
11
12
  # =========================================================================== #
12
- require 'multimedia_paradise/toplevel_methods/misc.rb'
13
- require 'multimedia_paradise/base/constants.rb'
14
- require 'multimedia_paradise/base/colours.rb'
15
- require 'multimedia_paradise/base/encoding.rb'
16
- require 'multimedia_paradise/base/misc.rb'
17
- require 'multimedia_paradise/base/namespace.rb'
18
- require 'multimedia_paradise/toplevel_methods/e.rb'
19
- require 'multimedia_paradise/toplevel_methods/files_and_directories.rb'
20
- require 'multimedia_paradise/toplevel_methods/is_audio_file.rb'
21
- require 'multimedia_paradise/toplevel_methods/is_video_file.rb'
22
- require 'multimedia_paradise/toplevel_methods/output_directory.rb'
23
- require 'multimedia_paradise/toplevel_methods/return_all_video_files.rb'
24
- require 'multimedia_paradise/toplevel_methods/player_in_use.rb'
25
-
26
13
  module MultimediaParadise
27
14
 
28
15
  class Base # === MultimediaParadise::Base
29
16
 
17
+ require 'fileutils'
18
+ require 'multimedia_paradise/constants/constants.rb'
19
+ require 'multimedia_paradise/base/colours.rb'
20
+ require 'multimedia_paradise/toplevel_methods/directory_related_code.rb'
21
+ require 'multimedia_paradise/toplevel_methods/files_related_code.rb'
22
+ require 'multimedia_paradise/toplevel_methods/is_on_roebe.rb'
23
+ require 'multimedia_paradise/toplevel_methods/is_audio_file_is_video_file_is_image_file_is_multimedia_file.rb'
24
+ require 'multimedia_paradise/toplevel_methods/opn.rb'
25
+ require 'multimedia_paradise/toplevel_methods/player_in_use.rb'
26
+ require 'multimedia_paradise/toplevel_methods/rds.rb'
27
+ require 'multimedia_paradise/toplevel_methods/return_random_video_file_from_the_video_collection.rb'
28
+ require 'multimedia_paradise/toplevel_methods/return_screen_resolution.rb'
29
+ require 'multimedia_paradise/toplevel_methods/toplevel_methods.rb'
30
+
31
+ # ========================================================================= #
32
+ # Add support for commandline-arguments next:
33
+ # ========================================================================= #
34
+ require 'multimedia_paradise/base/commandline_arguments_module/commandline_arguments_module.rb'
35
+ include MultimediaParadise::CommandlineArgumentsModule
36
+
37
+ begin
38
+ require 'save_file'
39
+ rescue LoadError; end
40
+
41
+ begin
42
+ require 'cliner'
43
+ rescue LoadError; end
44
+
45
+ begin
46
+ require 'roebe/classes/twentyfour_hours_notation.rb'
47
+ rescue LoadError; end
48
+
49
+ # ========================================================================= #
50
+ # === NAMESPACE
51
+ # ========================================================================= #
52
+ NAMESPACE = inspect
53
+
54
+ # ========================================================================= #
55
+ # === ERROR_LINE
56
+ # ========================================================================= #
57
+ ERROR_LINE = '2>&1'
58
+ ERROR = ERROR_LINE # === ERROR
59
+
60
+ # ========================================================================= #
61
+ # === initialize
62
+ # ========================================================================= #
63
+ def initialize
64
+ reset
65
+ end
66
+
67
+ # ========================================================================= #
68
+ # === reset (reset tag)
69
+ #
70
+ # Since as of March 2024 this method depends on @internal_hash being
71
+ # defined.
72
+ # ========================================================================= #
73
+ def reset
74
+ unless defined? @internal_hash
75
+ reset_the_internal_hash # Make @internal_hash known here.
76
+ end
77
+ # ======================================================================= #
78
+ # === :be_verbose
79
+ # ======================================================================= #
80
+ set_be_verbose
81
+ # ======================================================================= #
82
+ # === :use_colours
83
+ # ======================================================================= #
84
+ @internal_hash[:use_colours] = true
85
+ # ======================================================================= #
86
+ # === :debug
87
+ #
88
+ # By default, debugging is disabled.
89
+ # ======================================================================= #
90
+ @internal_hash[:debug] = false
91
+ # ======================================================================= #
92
+ # === :use_opn
93
+ # ======================================================================= #
94
+ @internal_hash[:use_opn] = true
95
+ end
96
+
97
+ # ========================================================================= #
98
+ # === use_opn?
99
+ # ========================================================================= #
100
+ def use_opn?
101
+ @internal_hash[:use_opn]
102
+ end
103
+
104
+ # ========================================================================= #
105
+ # === do_not_use_opn
106
+ # ========================================================================= #
107
+ def do_not_use_opn
108
+ @internal_hash[:use_opn] = false
109
+ end
110
+
111
+ # ========================================================================= #
112
+ # === infer_the_namespace
113
+ #
114
+ # This will assume the true namespace from the inspectable name.
115
+ # ========================================================================= #
116
+ def infer_the_namespace
117
+ _ = inspect
118
+ if _.include?(':0x')
119
+ _ = _.split(':0x').first.to_s.strip
120
+ end
121
+ _ = _.to_s.delete('<')
122
+ if _.include? ' '
123
+ _ = _.split(' ').first.delete('#')
124
+ if _.include? ':'
125
+ _ = _.split(':')[0 .. -2].reject {|entry| entry.empty? }.join('::')
126
+ end
127
+ end
128
+ @namespace = _.delete('#') # And assign it here.
129
+ end
130
+
131
+ # ========================================================================= #
132
+ # === verbose_truth
133
+ # ========================================================================= #
134
+ def verbose_truth(i)
135
+ case i.to_s
136
+ when 't','true'
137
+ true
138
+ when 'f','false',''
139
+ false
140
+ end
141
+ end
142
+
143
+ # ========================================================================= #
144
+ # === select_only_video_files_from
145
+ # ========================================================================= #
146
+ def select_only_video_files_from(array)
147
+ array.select {|entry| is_video_file?(entry) }
148
+ end
149
+
150
+ # ========================================================================= #
151
+ # === does_the_video_player_support_this_commandline?
152
+ #
153
+ # The following method checks whether the chosen video player at hand
154
+ # supports a particular commandline. The check is necessary because
155
+ # on some systems 'mpv' may be an alias to 'mplayer.
156
+ # ========================================================================= #
157
+ def does_the_video_player_support_this_commandline?(
158
+ this_commandline = '--msg-color'
159
+ )
160
+ cmd = "#{use_which_video_player?} #{this_commandline.strip} 2>&1"
161
+ result = `#{cmd}`
162
+ !result.include?('Unknown option on the command line: ')
163
+ end
164
+
165
+ # ========================================================================= #
166
+ # === namespace?
167
+ # ========================================================================= #
168
+ def namespace?
169
+ @namespace
170
+ end
171
+
172
+ # ========================================================================= #
173
+ # === opnn
174
+ # ========================================================================= #
175
+ def opnn(
176
+ namespace = { namespace: @namespace },
177
+ &block
178
+ )
179
+ if use_opn?
180
+ # ===================================================================== #
181
+ # Turn a String into a Hash next.
182
+ # ===================================================================== #
183
+ if namespace.is_a? String
184
+ namespace = { namespace: namespace } # Use the input to the method in this case.
185
+ end
186
+ Opn.opn(namespace, &block)
187
+ end
188
+ end
189
+
190
+ # ========================================================================= #
191
+ # === is_video_file?
192
+ # ========================================================================= #
193
+ def is_video_file?(i)
194
+ MultimediaParadise.is_video_file?(i) # Delegate to the module-method here.
195
+ end; alias is_this_a_video_file? is_video_file? # === is_this_a_video_file?
196
+ alias is_a_video_file? is_video_file? # === is_a_video_file?
197
+
198
+ # ========================================================================= #
199
+ # === dd_mm_yyyy
200
+ #
201
+ # Get the time in dd.mm.yyyy format. We have to use '_' underscores for
202
+ # the method name, as ruby does not allow '.' to be part of a method
203
+ # name itself, as this is the dot-operator for method calls.
204
+ # ========================================================================= #
205
+ def dd_mm_yyyy
206
+ return ::Time.now.strftime('%d.%m.%Y')
207
+ end; alias dd_mm_yyyy? dd_mm_yyyy # === dd_mm_yyyy?
208
+
209
+ # ========================================================================= #
210
+ # === hh_mm_ss
211
+ # ========================================================================= #
212
+ def hh_mm_ss
213
+ return ::Time.now.strftime('%H:%M:%S')
214
+ end; alias hh_mm_ss? hh_mm_ss # === hh_mm_ss?
215
+
216
+ # ========================================================================= #
217
+ # === ensure_main_encoding
218
+ #
219
+ # This method can ensure that a String has the proper encoding that
220
+ # we will use for the MultimediaParadise project.
221
+ # ========================================================================= #
222
+ def ensure_main_encoding(
223
+ i, use_this_encoding = USE_THIS_ENCODING
224
+ )
225
+ if i.is_a? String
226
+ unless i.encoding.to_s.include? use_this_encoding
227
+ i = i.dup if i.frozen?
228
+ i = i.force_encoding(use_this_encoding)
229
+ end
230
+ end
231
+ return i
232
+ end
233
+
234
+ # ========================================================================= #
235
+ # === map_symbol_to_locally_existing_file
236
+ #
237
+ # This entry point is a shortcut to local videos.
238
+ #
239
+ # The method will ensure that it will work on a Symbol, as given input.
240
+ # This will work on the downcased variant, so :Beauty or 'Beauty' would
241
+ # become :beauty.
242
+ # ========================================================================= #
243
+ def map_symbol_to_locally_existing_file(i)
244
+ case i.to_s.downcase.to_sym # case tag
245
+ # ======================================================================= #
246
+ # === wrap :beauty
247
+ # ======================================================================= #
248
+ when :beauty,
249
+ :american_beauty
250
+ i = "#{realvids_directory?}017_American_Beauty.mp4"
251
+ # ======================================================================= #
252
+ # === wrap :halloween
253
+ # ======================================================================= #
254
+ when :halloween
255
+ i = "#{realvids_directory?}215_Halloween.mp4"
256
+ # ======================================================================= #
257
+ # === wrap :predator
258
+ # ======================================================================= #
259
+ when :predator
260
+ i = "#{realvids_directory?}245_Predator.avi"
261
+ # ======================================================================= #
262
+ # === wrap :lolita
263
+ # ======================================================================= #
264
+ when :lolita
265
+ i = "#{realvids_directory?}233_Lolita.mkv"
266
+ else
267
+ e "#{rev}Unhandled symbol: #{i.to_s}"
268
+ end
269
+ return i
270
+ end
271
+
272
+ # ========================================================================= #
273
+ # === is_multimedia_file?
274
+ #
275
+ # This method will return true if the given directory is either an
276
+ # audio file or a video file.
277
+ # ========================================================================= #
278
+ def is_multimedia_file?(i)
279
+ is_audio_file?(i) or is_video_file?(i)
280
+ end; alias is_a_multimedia_file? is_multimedia_file? # === is_a_multimedia_file?
281
+ alias is_this_a_multimedia_file? is_multimedia_file? # === is_this_a_multimedia_file?
282
+
283
+ # ========================================================================= #
284
+ # === beautiful_url
285
+ #
286
+ # Wrapper-method over the beautiful_url gem.
287
+ # ========================================================================= #
288
+ def beautiful_url(i)
289
+ unless Object.const_defined? :BeautifulUrl
290
+ begin
291
+ require 'beautiful_url'
292
+ rescue LoadError; end
293
+ end
294
+ i = ::BeautifulUrl.new(i) if Object.const_defined? :BeautifulUrl
295
+ i = i.first if i.is_a? Array
296
+ return i
297
+ end
298
+
299
+ # ========================================================================= #
300
+ # === register_sigint
301
+ #
302
+ # If an argument is passed to this method then it will be displayed.
303
+ # ========================================================================= #
304
+ def register_sigint(
305
+ use_this_as_exit_message = 'Exiting now as requested.',
306
+ &block
307
+ )
308
+ clear_kde_konsole_tab_on_exit = false
309
+ # ======================================================================= #
310
+ # === Handle blocks given to this method next
311
+ # ======================================================================= #
312
+ if block_given?
313
+ yielded = yield
314
+ case yielded
315
+ # ===================================================================== #
316
+ # === :clear_kde_konsole_tab_on_exit_if_is_on_roebe
317
+ # ===================================================================== #
318
+ when :clear_kde_konsole_tab_on_exit_if_is_on_roebe,
319
+ :pretty
320
+ if is_on_roebe?
321
+ clear_kde_konsole_tab_on_exit = true
322
+ end
323
+ end
324
+ end
325
+ Signal.trap('SIGINT') {
326
+ e use_this_as_exit_message if use_this_as_exit_message
327
+ if clear_kde_konsole_tab_on_exit
328
+ begin
329
+ require 'roebe/classes/kde/kde_konsole/kde_konsole.rb'
330
+ e Roebe.konsole_tab_title('.') # Rename the tab again.
331
+ rescue LoadError; end
332
+ end
333
+ exit
334
+ }
335
+ end
336
+
337
+ # ========================================================================= #
338
+ # === time_right_now
339
+ #
340
+ # This method will return a String such as:
341
+ #
342
+ # "11:14:27-04.03.2024"
343
+ #
344
+ # ========================================================================= #
345
+ def time_right_now
346
+ Time.now.strftime('%H:%M:%S-%d.%m.%Y')
347
+ end
348
+
349
+ # ========================================================================= #
350
+ # === is_on_roebe?
351
+ #
352
+ # Determine whether we are on a roebe-system or whether we are not.
353
+ # ========================================================================= #
354
+ def is_on_roebe?
355
+ MultimediaParadise.is_on_roebe?
356
+ end
357
+
358
+ # ========================================================================= #
359
+ # === internal_hash?
360
+ # ========================================================================= #
361
+ def internal_hash?
362
+ @internal_hash
363
+ end
364
+
365
+ # ========================================================================= #
366
+ # === reset_the_internal_hash
367
+ #
368
+ # The method name is a misnomer, but nonetheless it is retained, since I
369
+ # like to use such an API.
370
+ # ========================================================================= #
371
+ def reset_the_internal_hash
372
+ @internal_hash = {}
373
+ end
374
+
375
+ # ========================================================================= #
376
+ # === use_which_video_player?
377
+ # ========================================================================= #
378
+ def use_which_video_player?
379
+ MultimediaParadise.use_which_video_player?
380
+ end; alias video_player_in_use? use_which_video_player? # === video_player_in_use?
381
+ alias use_which_multimedia_player? use_which_video_player? # === use_which_multimedia_player?
382
+ alias use_which_audio_player? use_which_video_player? # === use_which_audio_player?
383
+ alias use_which_player? use_which_video_player? # === use_which_player?
384
+
385
+ # ========================================================================= #
386
+ # === cd (cd tag)
387
+ # ========================================================================= #
388
+ def cd(i)
389
+ MultimediaParadise.chdir(i)
390
+ end; alias chdir cd # === chdir
391
+
392
+ # ========================================================================= #
393
+ # === return_pwd
394
+ #
395
+ # This method will always return a String with a trailing '/' character.
396
+ # ========================================================================= #
397
+ def return_pwd
398
+ ("#{Dir.pwd}/").squeeze('/')
399
+ end
400
+
401
+ # ========================================================================= #
402
+ # === dataset_from_file_video_collection
403
+ # ========================================================================= #
404
+ def dataset_from_file_video_collection(
405
+ i = MultimediaParadise.file_video_collection
406
+ )
407
+ YAML.load_file(i)
408
+ end
409
+
410
+ # ========================================================================= #
411
+ # === return_all_video_files
412
+ #
413
+ # This method will return a Hash, containing all local video files.
414
+ #
415
+ # The entries that can be found in that Hash may look like this:
416
+ #
417
+ # 228=> {"title"=>"Apocalypto"
418
+ #
419
+ # ========================================================================= #
420
+ def return_all_video_files
421
+ MultimediaParadise.return_all_video_files
422
+ end
423
+
424
+ # ========================================================================= #
425
+ # === return_random_video
426
+ # ========================================================================= #
427
+ def return_random_video
428
+ MultimediaParadise.return_random_video
429
+ end
430
+
431
+ # ========================================================================= #
432
+ # === local_audio_directory?
433
+ # ========================================================================= #
434
+ def local_audio_directory?
435
+ MultimediaParadise.local_audio_directory?
436
+ end; alias directory_containing_the_local_songs? local_audio_directory? # === directory_containing_the_local_songs?
437
+
438
+ # ========================================================================= #
439
+ # === file_video_collection?
440
+ # ========================================================================= #
441
+ def file_video_collection?
442
+ MultimediaParadise.file_video_collection?
443
+ end
444
+
445
+ # ========================================================================= #
446
+ # === cartoons_directory?
447
+ # ========================================================================= #
448
+ def cartoons_directory?
449
+ MultimediaParadise.cartoons_directory?
450
+ end; alias cartoon_directory? cartoons_directory? # === cartoon_directory
451
+
452
+ # ========================================================================= #
453
+ # === remove_file (remove tag)
454
+ #
455
+ # Use this method if you need to delete/remove a file.
456
+ # ========================================================================= #
457
+ def remove_file(i)
458
+ MultimediaParadise.remove_file(i)
459
+ end; alias remove remove_file # === remove_file
460
+ alias delete remove_file # === delete
461
+ alias remove_this_file remove_file # === remove_this_file
462
+
463
+ # ========================================================================= #
464
+ # === is_audio_file?
465
+ #
466
+ # This method can be used in order to determine whether we are working
467
+ # with an audio file here or whether we are not.
468
+ # ========================================================================= #
469
+ def is_audio_file?(i)
470
+ MultimediaParadise.is_audio_file?(i)
471
+ end; alias is_audio_song? is_audio_file? # === is_audio_song?
472
+ alias is_an_audio_file? is_audio_file? # === is_audio_file?
473
+
474
+ # ========================================================================= #
475
+ # === directory_to_realvids?
476
+ #
477
+ # This method will return the absolute path to my local realvid
478
+ # directory.
479
+ #
480
+ # It is only used in code of classes that deal with my local multimedia
481
+ # files really.
482
+ # ========================================================================= #
483
+ def directory_to_realvids?
484
+ MultimediaParadise.realvids_directory?
485
+ end; alias realvids_directory? directory_to_realvids? # === realvids_directory?
486
+
487
+ # ========================================================================= #
488
+ # === no_file_exists_at
489
+ #
490
+ # This method can be consistently used to notify the user that a
491
+ # specific file is missing.
492
+ # ========================================================================= #
493
+ def no_file_exists_at(this_file)
494
+ e "#{rev}No file exists at `#{sfile(this_file)}#{rev}`."
495
+ end
496
+
497
+ # ========================================================================= #
498
+ # === no_file_exists
499
+ # ========================================================================= #
500
+ def no_file_exists
501
+ e "#{rev}No file exists - may be a nil value."
502
+ end
503
+
504
+ # ========================================================================= #
505
+ # === debug?
506
+ # ========================================================================= #
507
+ def debug?
508
+ @internal_hash[:debug]
509
+ end
510
+
511
+ # ========================================================================= #
512
+ # === enable_debug
513
+ # ========================================================================= #
514
+ def enable_debug
515
+ @internal_hash[:debug] = true
516
+ end
517
+
518
+ # ========================================================================= #
519
+ # === chdir (cd tag)
520
+ # ========================================================================= #
521
+ def chdir(i)
522
+ MultimediaParadise.chdir(i)
523
+ end; alias cd chdir # === cd
524
+
525
+ # ========================================================================= #
526
+ # === mkdir (mkdir tag)
527
+ # ========================================================================= #
528
+ def mkdir(i)
529
+ MultimediaParadise.mkdir(i)
530
+ end
531
+
532
+ # ========================================================================= #
533
+ # === esystem
534
+ #
535
+ # The second argument should be a Symbol such as :steelblue.
536
+ # ========================================================================= #
537
+ def esystem(
538
+ i,
539
+ optional_colour_to_use = nil,
540
+ use_a_newline_before_the_system_command = false
541
+ )
542
+ MultimediaParadise.esystem(
543
+ i,
544
+ optional_colour_to_use,
545
+ use_a_newline_before_the_system_command
546
+ )
547
+ end
548
+
549
+ # ========================================================================= #
550
+ # === load_yaml
551
+ # ========================================================================= #
552
+ def load_yaml(i)
553
+ MultimediaParadise.load_yaml(i)
554
+ end
555
+
556
+ # ========================================================================= #
557
+ # === project_base_directory?
558
+ # ========================================================================= #
559
+ def project_base_directory?
560
+ MultimediaParadise.project_base_directory?
561
+ end
562
+
563
+ # ========================================================================= #
564
+ # === yaml_directory?
565
+ # ========================================================================= #
566
+ def yaml_directory?
567
+ "#{project_base_directory?}yaml/"
568
+ end
569
+
570
+ # ========================================================================= #
571
+ # === cliner_with_time_stamp
572
+ # ========================================================================= #
573
+ def cliner_with_time_stamp
574
+ _ = Cliner.cliner :return_time
575
+ if use_colours?
576
+ _.sub!(/(\d{2}:\d{2}:\d{2})/, slateblue("\\1"))
577
+ end
578
+ e _
579
+ end
580
+
581
+ # ========================================================================= #
582
+ # === e
583
+ # ========================================================================= #
584
+ def e(i = '')
585
+ MultimediaParadise.e(i)
586
+ end
587
+
588
+ # ========================================================================= #
589
+ # === efancy
590
+ # ========================================================================= #
591
+ def efancy(i)
592
+ e sfancy(i)
593
+ end
594
+
595
+ # ========================================================================= #
596
+ # === rds
597
+ # ========================================================================= #
598
+ def rds(i)
599
+ MultimediaParadise.rds(i)
600
+ end
601
+
602
+ # ========================================================================= #
603
+ # === is_mp3?
604
+ # ========================================================================= #
605
+ def is_mp3?(i)
606
+ File.extname(i).downcase == '.mp3'
607
+ end
608
+
609
+ # ========================================================================= #
610
+ # === is_mp4?
611
+ # ========================================================================= #
612
+ def is_mp4?(i)
613
+ File.extname(i).downcase == '.mp4'
614
+ end
615
+
616
+ # ========================================================================= #
617
+ # === is_mkv?
618
+ # ========================================================================= #
619
+ def is_mkv?(i)
620
+ File.extname(i).downcase == '.mkv'
621
+ end
622
+
623
+ # ========================================================================= #
624
+ # === filter_for_video_files
625
+ # ========================================================================= #
626
+ def filter_for_video_files(i)
627
+ MultimediaParadise.filter_for_video_files(i)
628
+ end
629
+
630
+ # ========================================================================= #
631
+ # === move_file (mv tag, move tag, rename tag)
632
+ # ========================================================================= #
633
+ def move_file(old, new)
634
+ if File.exist? old
635
+ MultimediaParadise.mv(old, new) # Delegate towards FileUtils in this cae.
636
+ else
637
+ e "#{rev}Can not move `#{sfile(old)}#{rev}` as no such file exists."
638
+ end
639
+ end; alias mv move_file # === mv
640
+ alias rename_file move_file # === rename_file
641
+
642
+ require 'multimedia_paradise/actions/actions.rb'
643
+ # ========================================================================= #
644
+ # === actions
645
+ # ========================================================================= #
646
+ def actions(
647
+ this_action,
648
+ optional_arguments = nil,
649
+ &block
650
+ )
651
+ MultimediaParadise.action(
652
+ this_action,
653
+ optional_arguments,
654
+ &block
655
+ )
656
+ end; alias action actions # === action
657
+
658
+ # ========================================================================= #
659
+ # === cliner (cliner tag)
660
+ # ========================================================================= #
661
+ def cliner(
662
+ i = nil,
663
+ &block
664
+ )
665
+ "#{rev}#{Cliner.cliner(i, &block)}#{rev}"
666
+ end
667
+
668
+ # ========================================================================= #
669
+ # === ucliner
670
+ # ========================================================================= #
671
+ def ucliner(
672
+ n_times = 80,
673
+ gold_embed_this = nil
674
+ )
675
+ case n_times
676
+ # ======================================================================= #
677
+ # === :default
678
+ # ======================================================================= #
679
+ when :default
680
+ n_times = 80
681
+ end
682
+ if gold_embed_this
683
+ n_times -= (gold_embed_this.to_s.size + 1)
684
+ end
685
+ result = lightgreen('―' * n_times)
686
+ if gold_embed_this
687
+ result = result.dup
688
+ result << " #{gold(gold_embed_this)}#{rev}"
689
+ end
690
+ e result
691
+ end
692
+
693
+ # ========================================================================= #
694
+ # === default_readlines
695
+ # ========================================================================= #
696
+ def default_readlines(
697
+ this_file
698
+ )
699
+ File.readlines(this_file, encoding: 'utf-8')
700
+ end
701
+
702
+ # ========================================================================= #
703
+ # === seconds_to_time_format
704
+ # ========================================================================= #
705
+ def seconds_to_time_format(i)
706
+ if Object.const_defined? :Roebe
707
+ return Roebe::TwentyfourHoursNotation[i] # => "00:05:00.000"
708
+ else # else return the given input in an unformatted manner.
709
+ return i
710
+ end
711
+ end; alias to_twentyfour_notation seconds_to_time_format # === to_twentyfour_notation
712
+
713
+ # ========================================================================= #
714
+ # === opne
715
+ # ========================================================================= #
716
+ def opne(i = '')
717
+ opnn; e i
718
+ end
719
+
720
+ # ========================================================================= #
721
+ # === opnecomment
722
+ # ========================================================================= #
723
+ def opnecomment(i = '')
724
+ opnn; ecomment i
725
+ end
726
+
727
+ # ========================================================================= #
728
+ # === be_verbose?
729
+ # ========================================================================= #
730
+ def be_verbose?
731
+ @internal_hash[:be_verbose]
732
+ end; alias verbose? be_verbose? # === verbose?
733
+
734
+ # ========================================================================= #
735
+ # === be_silent
736
+ # ========================================================================= #
737
+ def be_silent
738
+ @internal_hash[:be_verbose] = false
739
+ end; alias be_quiet be_silent # == be_quiet
740
+ alias set_be_quiet be_silent # === set_be_quiet
741
+ alias set_be_silent be_silent # === set_be_silent
742
+
743
+ # ========================================================================= #
744
+ # === set_be_verbose
745
+ # ========================================================================= #
746
+ def set_be_verbose
747
+ @internal_hash[:be_verbose] = true
748
+ end
749
+
750
+ # ========================================================================= #
751
+ # === save_what_into
752
+ #
753
+ # A simple wrapper over SaveFile.
754
+ # ========================================================================= #
755
+ def save_what_into(what, into)
756
+ if Object.const_defined? :SaveFile
757
+ SaveFile.write_what_into(what, into)
758
+ end
759
+ end; alias save_file save_what_into # === save_file
760
+ alias write_what_into save_what_into # === write_what_into
761
+
762
+ # ========================================================================= #
763
+ # === append_what_into
764
+ # ========================================================================= #
765
+ def append_what_into(what, into)
766
+ if Object.const_defined? :SaveFile
767
+ SaveFile.append_what_into(what, into)
768
+ end
769
+ end
770
+
771
+ # ========================================================================= #
772
+ # === copy_file
773
+ # ========================================================================= #
774
+ def copy_file(from, to = return_pwd)
775
+ FileUtils.cp(from, to)
776
+ end
777
+
778
+ # ========================================================================= #
779
+ # === report_pwd
780
+ # ========================================================================= #
781
+ def report_pwd
782
+ e rds("#{Dir.pwd}/")
783
+ end
784
+
785
+ # ========================================================================= #
786
+ # === try_to_rename_kde_konsole_tab
787
+ # ========================================================================= #
788
+ def try_to_rename_kde_konsole_tab(
789
+ new_title = '_',
790
+ try_to_rename_the_kde_konsole_tab = TRY_TO_RENAME_THE_KDE_KONSOLE_TAB
791
+ )
792
+ MultimediaParadise.try_to_rename_kde_konsole_tab(
793
+ new_title, try_to_rename_the_kde_konsole_tab
794
+ )
795
+ end; alias rename_kde_konsole try_to_rename_kde_konsole_tab # === rename_kde_konsole
796
+ alias do_rename_konsole try_to_rename_kde_konsole_tab # === do_rename_konsole
797
+
798
+ # ========================================================================= #
799
+ # === log_dir?
800
+ # ========================================================================= #
801
+ def log_dir?
802
+ MultimediaParadise.log_dir?
803
+ end; alias log_directory? log_dir? # === log_directory?
804
+
805
+ # ========================================================================= #
806
+ # === ensure_that_the_output_directory_exists
807
+ # ========================================================================= #
808
+ def ensure_that_the_output_directory_exists(
809
+ this_directory = log_directory?
810
+ )
811
+ this_directory = File.dirname(this_directory) unless this_directory.end_with? '/'
812
+ MultimediaParadise.ensure_that_the_output_directory_exists
813
+ end
814
+
815
+ require 'multimedia_paradise/time/milliseconds_to_long_format_converter.rb'
816
+ # ========================================================================= #
817
+ # === to_hh_mm_ss
818
+ # ========================================================================= #
819
+ def to_hh_mm_ss(i)
820
+ MultimediaParadise.milliseconds_to_long_format(i * 1000)
821
+ end
822
+
823
+ # ========================================================================= #
824
+ # === home_x_video?
825
+ # ========================================================================= #
826
+ def home_x_video?
827
+ MultimediaParadise.home_x_video?
828
+ end
829
+
830
+ # ========================================================================= #
831
+ # === filter_for_audio_files
832
+ #
833
+ # We will filter for audio files - so we will keep only files that
834
+ # are audio files.
835
+ # ========================================================================= #
836
+ def filter_for_audio_files(i)
837
+ i.select {|file| is_audio_file?(file) }
838
+ end
839
+
840
+ # ========================================================================= #
841
+ # === video_collection?
842
+ # ========================================================================= #
843
+ def video_collection?
844
+ MultimediaParadise.file_video_collection
845
+ end
846
+
847
+ # ========================================================================= #
848
+ # === clear_the_internal_hash
849
+ # ========================================================================= #
850
+ def clear_the_internal_hash
851
+ @internal_hash.clear
852
+ end
853
+
854
+ # ========================================================================= #
855
+ # === run (run tag)
856
+ #
857
+ # Stub-method.
858
+ # ========================================================================= #
859
+ def run
860
+ end
861
+
862
+ # ========================================================================= #
863
+ # === MultimediaParadise::Base[]
864
+ # ========================================================================= #
865
+ def self.[](i = ARGV)
866
+ new(i)
867
+ end
868
+
30
869
  end; end
31
870
 
32
871
  if __FILE__ == $PROGRAM_NAME