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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc44691dd90b89864ce353452215da3ac4034244491cb47a5b441de836a5d3c6
4
- data.tar.gz: 5c1f4851f1b195aa814b78e17ffd28f89b0a830ede7646ce2af3d906d08e0e2d
3
+ metadata.gz: 6872c8021118d9913e3d8d54e81b2c6e940acce8efc2857ca6d2a3ce8ea53b63
4
+ data.tar.gz: 8adcb3bbe62e2eb1605abdc99b5e3d3078651406081b7d12dbf6ecef12c2a5d7
5
5
  SHA512:
6
- metadata.gz: ae707cbb19785afc3f16c818e8f070b7e6b33ccf8fc98165e8f0a0a9fb7cfb4a11d92eda3facc2384d41b614eac6d0542d2b85d8e7fb6a112aed342d16112cf3
7
- data.tar.gz: 46bdb8a965870397909fc9f796303a10462cda7ba2103fb57ddfa3c2fe4ec8767411b402dc16165f550f83d1607426ecceeccbcb48792d976194c734d0b881c8
6
+ metadata.gz: 51ef44359d59087bdf90bee09e0beca8d9cbbf090cc103371ca8d1058a42775a6c06ab53888a7ae1e214989022a0c2bc7b8c8f37ba5a7b1aa403467b74d7a5de
7
+ data.tar.gz: cd69f50a114f330180ec7589e57132316c46297d2dbda42e2a947c4752dcebbbab57286b7f50e0d3bdf93c73f0dd39e634f6d7ed97f485eac04cec4135f5be12
data/README.md CHANGED
@@ -2,85 +2,89 @@
2
2
  [![forthebadge](https://forthebadge.com/images/badges/made-with-ruby.svg)](https://www.ruby-lang.org/en/)
3
3
  [![Gem Version](https://badge.fury.io/rb/multimedia_paradise.svg)](https://badge.fury.io/rb/multimedia_paradise)
4
4
 
5
- This gem was <b>last updated</b> on the <span style="color: darkblue; font-weight: bold">23.01.2024</span> (dd.mm.yyyy notation), at <span style="color: steelblue; font-weight: bold">07:25:13</span> o'clock.
5
+ This gem was <b>last updated</b> on the <span style="color: darkblue; font-weight: bold">07.03.2024</span> (dd.mm.yyyy notation), at <span style="color: steelblue; font-weight: bold">22:08:18</span> o'clock.
6
6
 
7
7
  # MultimediaParadise - a toolset project for audio and video related data
8
8
 
9
9
  <img src="https://i.imgur.com/Qh4Fve1.png" style="margin: 1em; margin-left: 2.5em">
10
10
 
11
- The **multimedia paradise** project bundles together code that can be
12
- used for "multimedia data" - in particular for **audio** and **video** files.
13
-
14
- Most of the functionality found within the **multimedia paradise**
15
- projects depends on <b>ffmpeg</b>, but in principle the code in the
16
- main module called **MultimediaParadise** should work with other
17
- toolkits as well, if a toolkit supports certain actions (such as
18
- <b>sox</b>). As is often the case, support for other toolkits depends
19
- on time investment - and time availability - of the main author of
20
- this project, but in principle support for other toolkits can be
21
- added as-is, at any moment in time. It is just that **ffmpeg** is
22
- really good, so other toolkits will have a hard time competing
23
- against it.
24
-
25
- For multimedia-related purposes, **ffmpeg** is a really excellent
26
- project. Thus, the MultimediaParadise gem will focus on **ffmpeg**
11
+ The <b>multimedia paradise</b> project bundles together code that can be
12
+ used for "multimedia data" - in particular for <b>audio</b> and <b>video</b>
13
+ files.
14
+
15
+ Most of the functionality found within the <b>multimedia paradise</b>
16
+ projects depends on the external project called <b>ffmpeg</b>. However had,
17
+ in principle the code in the toplevel-module called <b>MultimediaParadise</b>
18
+ should also work with other toolkits as well, provided that said toolkit
19
+ supports certain actions - such as <b>sox</b> does.
20
+
21
+ As is often the case, support for other toolkits depends on time investment
22
+ though - and time availability - of the main author of this project. Nonetheless,
23
+ whenever possible, support for other toolkits will be added as-is. It is
24
+ just that <b>ffmpeg</b> is really an excellent project, so other toolkits
25
+ will have a hard time competing against <b>ffmpeg</b>.
26
+
27
+ For multimedia-related purposes, <b>ffmpeg</b> can be recommended. Thus,
28
+ the MultimediaParadise gem will also focus primarily on <b>ffmpeg</b>
27
29
  by default.
28
30
 
29
- You can obtain a copy of ffmpeg from the following URL:
31
+ A copy of ffmpeg can be obtained from the following URL:
30
32
 
31
33
  https://www.ffmpeg.org/download.html
32
34
 
33
35
  ## Installation of the MultimediaParadise project
34
36
 
35
- There are several ways how to install this project, including using
36
- oldschool **setup.rb** - but I recommend the following way, for
37
- simplicity, on any modern system:
37
+ There are several ways how to install the multimedia_paradise project. Personally
38
+ I still use the oldschool way via <b>setup.rb</b>, but the more modern, and
39
+ recommend way, to install this gem goes via <b>gem install</b>, specifically:
38
40
 
39
41
  gem install multimedia_paradise --user-install
40
42
 
41
- The reason as to why I recommend the **--user-install** option is to be
42
- used is because the various files under the **bin/** subdirectory that
43
+ The reason as to why it is recommended to use the <b>--user-install</b> option
44
+ is because the various files under the <b>bin/</b> subdirectory that
43
45
  are part of this gem will be made available in your home directory
44
46
  (under e. g. ~/.gem/ruby/2.5.0/bin or whatever your local ruby
45
47
  version is). That way you can easily add that directory to $PATH
46
48
  or not, and make use of these files if you want to - and if not,
47
49
  just ignore the bin/ subdirectory of this gem altogether.
48
50
 
49
- You can find out the paths used by **gem** via:
51
+ You can find out the paths used by <b>gem</b> by issuing the following
52
+ command:
50
53
 
51
54
  gem environment
52
55
 
53
- Note that even if you can not find such a bin/ subdirectory on your
54
- system, these files are distributed within the **multimedia_paradise**
56
+ Note that even if you can not find such a <b>bin/</b> subdirectory on your
57
+ system, these files are distributed within the <b>multimedia_paradise</b>
55
58
  gem itself as such, so just extract the gem, then copy the bin/ files
56
- to wherever you want to. There is more than one way to do
57
- things! If you still have a hard time doing so, you can use a
58
- toplevel method that will copy all bin/ files into the current
59
- working directory. So, for instance, create a directory at:
59
+ to wherever you want to. There is more than one way to do things!
60
+
61
+ If you still have a hard time doing so, you can use a toplevel method that
62
+ will copy all bin/ files into the current working directory. So, for
63
+ instance, create a directory at the following location:
60
64
 
61
65
  mkdir /tmp/multimedia_paradise # just an example
62
66
 
63
- Then start **irb** and issue:
67
+ Then start <b>irb</b> and issue:
64
68
 
65
69
  require 'multimedia_paradise'
66
70
  MultimediaParadise.copy_bin_directory
67
71
 
68
- This will create a directory called **bin/** and then proceed
69
- to copy all bin/ files into that directory. This is just a
70
- convenience workaround if --user-dir does not work on your
71
- system, for whatever the reason. (Note that this assumes
72
- that these bin/ entries are in your HOME directory under
73
- bin/ which may not always be the case; I have no idea why
74
- this does not work anymore. It used to work in the past.
72
+ This will create a directory called <b>bin/</b> and then proceed
73
+ to copy all bin/ files that are distributed via the multimedia_paradise
74
+ gem into that directory. This is just a convenience workaround if
75
+ --user-dir does not work on your system, for whatever the reason.
76
+ (Note that this assumes that these bin/ entries are in your HOME
77
+ directory under bin/ which may not always be the case; I have no idea
78
+ why this does not work anymore. It used to work in the past.
75
79
  Ask the rubygems maintainers what they broke over the
76
80
  years if this does not work for you. :P But, even in that
77
81
  case, you can just download the .gem file from rubygems.org
78
82
  and extract it on your own, and then you will 100% have
79
83
  the bin/ hierarchy there.)
80
84
 
81
- It is recommended to install **ffmpeg** and have it made
82
- available on your system - ffmpeg really is a great project,
83
- and the multimedia_paradise gem taps into the functionality
85
+ It is also recommended to install <b>ffmpeg</b> and have it made
86
+ available on the given computer system at hand - ffmpeg really is
87
+ a great project, and the multimedia_paradise gem taps into the functionality
84
88
  made available by ffmpeg. In many ways the multimedia_paradise
85
89
  gem is a convenient wrapper over **some** of ffmpeg's
86
90
  functionality.
@@ -95,11 +99,11 @@ not necessarily a professional-grade software suite.
95
99
  ## Removing the audio from a local video file
96
100
 
97
101
  Let us begin with a fairly simply use case here: say that you
98
- want to **remove the audio from a local video file**.
102
+ want to <b>remove the audio from a local video file</b>.
99
103
 
100
104
  So if you have such a use case that requires of you to
101
105
  **remove audio from a local video file**, use the
102
- following **API**:
106
+ following <b>API</b>:
103
107
 
104
108
  require 'multimedia_paradise/audio/remove_audio.rb'
105
109
  MultimediaParadise.remove_audio(path_to_the_file_goes_in_here)
@@ -1627,7 +1631,7 @@ So, how to use class <b>MultimediaParadise::CreateM3uPlaylist</b>?
1627
1631
 
1628
1632
  The input to class <b>MultimediaParadise::CreateM3uPlaylist</b>
1629
1633
  should ideally be a **yaml file** describing your songs (at the
1630
- least **the path to these songs**), but you could also use the **API**
1634
+ least **the path to these songs**), but you could also use the <b>API</b>
1631
1635
  from within Ruby, naturally and thus use a **ruby array** directly
1632
1636
  that is to be passed to the class; just pass this Array to
1633
1637
  **.new()**.
@@ -1919,14 +1923,14 @@ Usage example if you want to do only one image per second:
1919
1923
 
1920
1924
  MultimediaParadise.video_to_images("foobar.mp4", :default, 1)
1921
1925
 
1922
- See the file **multimedia_paradise/toplevel_methods/conversion.rb**
1926
+ See the file <b>multimedia_paradise/toplevel_methods/conversions.rb</b>
1923
1927
  for more information about that functionality - it is made possible
1924
1928
  thanks to ffmpeg.
1925
1929
 
1926
1930
  ## Radio stations and a graphical user interface to it (GUI)
1927
1931
 
1928
- Since as of **October 2018**, the **MultimediaParadise** project comes
1929
- with a small **yaml file** called **radio_stations.yml**.
1932
+ Since as of <b>October 2018</b>, the **MultimediaParadise** project comes
1933
+ with a small **yaml file** called <b>radio_stations.yml</b>.
1930
1934
 
1931
1935
  x = YAML.load_file('radio_stations.yml')
1932
1936
 
@@ -2022,6 +2026,38 @@ It now looks like this:
2022
2026
  Not sure if this was an actual improvement, but for now it'll stay
2023
2027
  that way.
2024
2028
 
2029
+ ## MultimediaParadise.action()
2030
+
2031
+ The toplevel-method <b>MultimediaParadise.action()</b> was added
2032
+ during the March 2024 rewrite of the multimedia_paradise gem.
2033
+
2034
+ The basic idea behind actions, implemented via the aforementioned
2035
+ method, is to bundle all activities that may seem useful to most
2036
+ users in a centralized manner.
2037
+
2038
+ So, for instance: say that you wish to extract the audio from
2039
+ a given video file, via ffmpeg. The file at hand will be called
2040
+ <b>foobar.mp4</b>.
2041
+
2042
+ You can generalize this via actions like in this way:
2043
+
2044
+ MultimediaParadise.action(:extract_audio, 'foobar.mp4')
2045
+
2046
+ That's it!
2047
+
2048
+ Of course the simpler method called
2049
+ <b>MultimediaParadise.action()</b> is also available, but
2050
+ the main benefit of MultimediaParadise.action() is that you
2051
+ do not have to require any specific file. You can ignore
2052
+ the file paths there, and just think in terms of
2053
+ actionable components. This is especially useful when we
2054
+ use MultimediaParadise in a GUI. It will simplify a lot
2055
+ of the GUI code past this point, which is why this is
2056
+ a win-win situation for the multimedia_paradise gem. I
2057
+ will eventually add java-swing components as well, thus
2058
+ allowing users to make use of the multimedia_paradise
2059
+ gem on windows as well.
2060
+
2025
2061
  ## Converting a .mp4 or .avi file to an animated .gif
2026
2062
 
2027
2063
  You can use the following API to convert a video to an
@@ -2603,7 +2639,7 @@ automatically create a thumbnail from a video file.
2603
2639
 
2604
2640
  Usage example:
2605
2641
 
2606
- require 'multimedia_paradise/toplevel_methods/misc.rb' # ← This file includes the code shown below.
2642
+ require 'multimedia_paradise/toplevel_methods/toplevel_methods.rb' # ← This file includes the code shown below.
2607
2643
  this_file = '/Depot/j/foobar.mp4'
2608
2644
 
2609
2645
  MultimediaParadise.automatically_create_a_thumbnail_for_this_video()
@@ -2647,11 +2683,12 @@ by ffmpeg <b>does</b> work.
2647
2683
 
2648
2684
  ## Learning to play the piano
2649
2685
 
2650
- Since a few months I am (again) learning to play the piano, although
2651
- I use a Yamaha keyboard rather than a piano.
2686
+ Since early <b>2024</b> I am (again) learning to play the piano, although
2687
+ I use a <b>Yamaha keyboard</b> rather than a piano.
2652
2688
 
2653
- This subsection here will collect various snippets that may relate
2654
- to playing songs. This is very random though.
2689
+ This subsection here will collect various snippets that may relate to
2690
+ playing songs, including how to practice properly. This is very random,
2691
+ though, as it will change as I learn new things.
2655
2692
 
2656
2693
  Phantom of the Opera:
2657
2694
 
@@ -2692,29 +2729,14 @@ gem owner eventually:
2692
2729
  see
2693
2730
  https://blog.rubygems.org/2022/06/13/making-packages-more-secure.html
2694
2731
 
2695
- Mandatory 2FA will eventually be extended to all rubygems.org developers and
2696
- maintainers. As I can not use 2FA, for reasons I will skip explaining here,
2697
- this means that my projects will eventually be removed, as I no longer
2698
- have any control over my projects hosted on rubygems.org (because I
2699
- can not use 2FA).
2700
-
2701
- At that point, I no longer have any control what is done to my projects
2702
- since whoever is controlling the gems ecosystem took away our control
2703
- here. I am not sure at which point ruby became corporate-controlled -
2704
- that was not the case several years ago, so something has
2705
- changed.
2706
-
2707
- Ruby also only allows 2FA users to participate on the issue tracker these
2708
- days:
2709
-
2710
- https://bugs.ruby-lang.org/issues/18800
2711
-
2712
- But this has been reverted some months ago, so it is no longer applicable.
2713
- Suffice to say that I do not think that we should only be allowed to
2714
- interact on the world wide web when some 'authority' authenticated us,
2715
- such as via mandatory 2FA, so I hope this won't come back again.
2716
-
2717
- Fighting spam is a noble goal, but when it also means you lock out
2718
- real human people then this is definitely NOT a good situation
2719
- to be had.
2732
+ However had, that has been reverted again, so I decided to shorten
2733
+ this paragraph. Mandatory 2FA may exclude users who do not have a
2734
+ smartphone device or other means to 'identify'. I do not feel it is
2735
+ a fair assumption by others to be made that non-identified people may
2736
+ not contribute code, which is why I reject it. Mandatory 2FA would mean
2737
+ an end to all my projects on rubygems.org, so let's hope it will never
2738
+ happen. (Keep in mind that I refer to mandatory 2FA; I have no qualms
2739
+ for people who use 2FA on their own, but this carrot-and-stick strategy
2740
+ by those who control the rubygems infrastructure is a very bad one to
2741
+ pursue.
2720
2742
 
data/bin/audio_player CHANGED
@@ -4,7 +4,7 @@
4
4
  # =========================================================================== #
5
5
  require 'multimedia_paradise/requires/require_the_audio_player.rb'
6
6
 
7
- _ = MultimediaParadise::AudioPlayer.new(ARGV, :dont_run_yet)
7
+ _ = MultimediaParadise.audio_player(ARGV, :dont_run_yet)
8
8
 
9
9
  if ARGV.first
10
10
  _.try_to_find_genre_song(ARGV.first) # To test this, try: rsong genre GOOD_BDANCE_SONGS
@@ -2,6 +2,6 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise/toplevel_methods/misc.rb'
5
+ require 'multimedia_paradise/toplevel_methods/toplevel_methods.rb'
6
6
 
7
7
  MultimediaParadise.extract_images_from_this_video_file(ARGV)
data/bin/loop_this_video CHANGED
@@ -2,6 +2,6 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise/toplevel_methods/misc.rb'
5
+ require 'multimedia_paradise/toplevel_methods/toplevel_methods.rb'
6
6
 
7
7
  MultimediaParadise.loop_this_video(ARGV, 10)
data/bin/merge_avi_files CHANGED
@@ -2,6 +2,6 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise/toplevel_methods/merge_multimedia_file.rb'
5
+ require 'multimedia_paradise/toplevel_methods/merge.rb'
6
6
 
7
7
  MultimediaParadise.merge_avi_files(ARGV)
data/bin/merge_mp3 CHANGED
@@ -2,6 +2,6 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise/conversions/conversions.rb'
5
+ require 'multimedia_paradise/toplevel_methods/conversions.rb'
6
6
 
7
7
  MultimediaParadise.merge_mp3(:default, ARGV)
data/bin/mp3_to_opus CHANGED
@@ -2,6 +2,6 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise/conversions/conversions.rb'
5
+ require 'multimedia_paradise/toplevel_methods/conversions.rb'
6
6
 
7
7
  MultimediaParadise.mp3_to_opus(ARGV)
data/bin/mpg_to_mp4 CHANGED
@@ -2,6 +2,6 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise/toplevel_methods/misc.rb'
5
+ require 'multimedia_paradise/toplevel_methods/toplevel_methods.rb'
6
6
 
7
7
  MultimediaParadise.mpg_to_mp4(ARGV)
@@ -2,7 +2,7 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise/commandline/menu.rb'
5
+ require 'multimedia_paradise/commandline/commandline.rb'
6
6
 
7
7
  MultimediaParadise.set_array_commandline_arguments(ARGV)
8
8
 
data/bin/to_aiff CHANGED
@@ -2,9 +2,6 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise'
5
+ require 'multimedia_paradise/toplevel_methods/conversions.rb'
6
6
 
7
- _ = ARGV.first
8
- MultimediaParadise.esystem(
9
- "ffmpeg -i #{_} -f aiff -ab 128000 -ar 44100 #{_}.aif"
10
- )
7
+ MultimediaParadise.to_mp4(ARGV.first)
data/bin/to_flac ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'multimedia_paradise/toplevel_methods/conversions.rb'
6
+
7
+ MultimediaParadise.to_flac(ARGV)
data/bin/to_mp3 ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'multimedia_paradise/audio/to_mp3.rb'
6
+
7
+ MultimediaParadise.to_mp3(ARGV)
8
+
data/bin/to_mp4 CHANGED
@@ -2,6 +2,6 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise/toplevel_methods/to_mp4.rb'
5
+ require 'multimedia_paradise/toplevel_methods/conversions.rb'
6
6
 
7
7
  MultimediaParadise.to_mp4(ARGV)
data/bin/to_ogg ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'multimedia_paradise/toplevel_methods/conversions.rb'
6
+
7
+ MultimediaParadise.to_ogg(ARGV)
@@ -4,6 +4,6 @@
4
4
  # =========================================================================== #
5
5
  # verbose_analyse_this_mp3_file_for_id3_tags
6
6
  # =========================================================================== #
7
- require 'multimedia_paradise/toplevel_methods/misc.rb'
7
+ require 'multimedia_paradise/toplevel_methods/toplevel_methods.rb'
8
8
 
9
9
  MultimediaParadise.verbose_analyse_this_mp3_file_for_id3_tags(ARGV)
data/bin/video_codec CHANGED
@@ -2,6 +2,6 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise/toplevel_methods/misc.rb'
5
+ require 'multimedia_paradise/toplevel_methods/toplevel_methods.rb'
6
6
 
7
7
  puts MultimediaParadise.return_video_codec_of_this_file(ARGV)
data/bin/video_thumbnail CHANGED
@@ -2,6 +2,6 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise/toplevel_methods/misc.rb' # ← This file includes the code shown below.
5
+ require 'multimedia_paradise/toplevel_methods/toplevel_methods.rb' # ← This file includes the code shown below.
6
6
 
7
7
  MultimediaParadise.thumbnail(ARGV)
data/bin/video_to_images CHANGED
@@ -2,6 +2,6 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- require 'multimedia_paradise/conversions/conversions.rb'
5
+ require 'multimedia_paradise/toplevel_methods/conversions.rb'
6
6
 
7
7
  MultimediaParadise.video_to_images(ARGV)