universal_pipe_handler 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +461 -0
- data/doc/README.gen +417 -0
- data/doc/todo/todo_for_the_universal_pipe_handler_project.md +300 -0
- data/img/UNIVERSAL_PIPE_HANDLER_LOGO.jpg +0 -0
- data/img/pipe_paradise.png +0 -0
- data/lib/universal_pipe_handler/base/base.rb +147 -0
- data/lib/universal_pipe_handler/cmdlet/cmdlet.rb +287 -0
- data/lib/universal_pipe_handler/cmdlets/add.rb +15 -0
- data/lib/universal_pipe_handler/cmdlets/add_audio.rb +22 -0
- data/lib/universal_pipe_handler/cmdlets/all.rb +37 -0
- data/lib/universal_pipe_handler/cmdlets/any.rb +25 -0
- data/lib/universal_pipe_handler/cmdlets/ascii_video.rb +30 -0
- data/lib/universal_pipe_handler/cmdlets/assign.rb +24 -0
- data/lib/universal_pipe_handler/cmdlets/capture_screen.rb +46 -0
- data/lib/universal_pipe_handler/cmdlets/colourize.rb +35 -0
- data/lib/universal_pipe_handler/cmdlets/convert_to.rb +21 -0
- data/lib/universal_pipe_handler/cmdlets/convert_to_images.rb +17 -0
- data/lib/universal_pipe_handler/cmdlets/convert_to_mp3.rb +28 -0
- data/lib/universal_pipe_handler/cmdlets/convert_to_wav.rb +17 -0
- data/lib/universal_pipe_handler/cmdlets/copy_directories.rb +23 -0
- data/lib/universal_pipe_handler/cmdlets/count_character.rb +31 -0
- data/lib/universal_pipe_handler/cmdlets/count_longest_row.rb +21 -0
- data/lib/universal_pipe_handler/cmdlets/crop.rb +26 -0
- data/lib/universal_pipe_handler/cmdlets/cut.rb +101 -0
- data/lib/universal_pipe_handler/cmdlets/days.rb +41 -0
- data/lib/universal_pipe_handler/cmdlets/decolourize.rb +25 -0
- data/lib/universal_pipe_handler/cmdlets/download.rb +30 -0
- data/lib/universal_pipe_handler/cmdlets/download_torrent.rb +17 -0
- data/lib/universal_pipe_handler/cmdlets/duration.rb +34 -0
- data/lib/universal_pipe_handler/cmdlets/extract.rb +27 -0
- data/lib/universal_pipe_handler/cmdlets/extract_all.rb +23 -0
- data/lib/universal_pipe_handler/cmdlets/extract_audio.rb +30 -0
- data/lib/universal_pipe_handler/cmdlets/extract_video.rb +18 -0
- data/lib/universal_pipe_handler/cmdlets/find_all.rb +40 -0
- data/lib/universal_pipe_handler/cmdlets/generate_random_video.rb +29 -0
- data/lib/universal_pipe_handler/cmdlets/generate_string.rb +27 -0
- data/lib/universal_pipe_handler/cmdlets/get_all_audio_files.rb +33 -0
- data/lib/universal_pipe_handler/cmdlets/get_all_files.rb +61 -0
- data/lib/universal_pipe_handler/cmdlets/get_all_images.rb +47 -0
- data/lib/universal_pipe_handler/cmdlets/get_all_images_including_subdirs.rb +26 -0
- data/lib/universal_pipe_handler/cmdlets/get_all_video_files.rb +34 -0
- data/lib/universal_pipe_handler/cmdlets/get_last_characters.rb +24 -0
- data/lib/universal_pipe_handler/cmdlets/help.rb +36 -0
- data/lib/universal_pipe_handler/cmdlets/identify.rb +29 -0
- data/lib/universal_pipe_handler/cmdlets/increase_audio.rb +26 -0
- data/lib/universal_pipe_handler/cmdlets/install.rb +32 -0
- data/lib/universal_pipe_handler/cmdlets/match_regex.rb +24 -0
- data/lib/universal_pipe_handler/cmdlets/n_directories.rb +25 -0
- data/lib/universal_pipe_handler/cmdlets/n_files.rb +20 -0
- data/lib/universal_pipe_handler/cmdlets/n_words.rb +25 -0
- data/lib/universal_pipe_handler/cmdlets/number_lines.rb +34 -0
- data/lib/universal_pipe_handler/cmdlets/open_in_browser.rb +40 -0
- data/lib/universal_pipe_handler/cmdlets/pad_left.rb +20 -0
- data/lib/universal_pipe_handler/cmdlets/pad_right.rb +20 -0
- data/lib/universal_pipe_handler/cmdlets/play.rb +18 -0
- data/lib/universal_pipe_handler/cmdlets/position.rb +21 -0
- data/lib/universal_pipe_handler/cmdlets/processes.rb +18 -0
- data/lib/universal_pipe_handler/cmdlets/random.rb +21 -0
- data/lib/universal_pipe_handler/cmdlets/random_video.rb +23 -0
- data/lib/universal_pipe_handler/cmdlets/read_file.rb +44 -0
- data/lib/universal_pipe_handler/cmdlets/read_line.rb +31 -0
- data/lib/universal_pipe_handler/cmdlets/read_n_lines.rb +38 -0
- data/lib/universal_pipe_handler/cmdlets/read_n_lines_inverted.rb +36 -0
- data/lib/universal_pipe_handler/cmdlets/remove_audio.rb +22 -0
- data/lib/universal_pipe_handler/cmdlets/remove_comments.rb +26 -0
- data/lib/universal_pipe_handler/cmdlets/remove_directories.rb +29 -0
- data/lib/universal_pipe_handler/cmdlets/remove_html.rb +25 -0
- data/lib/universal_pipe_handler/cmdlets/remove_newlines.rb +23 -0
- data/lib/universal_pipe_handler/cmdlets/remove_numbers.rb +25 -0
- data/lib/universal_pipe_handler/cmdlets/repackage_to.rb +27 -0
- data/lib/universal_pipe_handler/cmdlets/replace_underscores.rb +29 -0
- data/lib/universal_pipe_handler/cmdlets/resize.rb +39 -0
- data/lib/universal_pipe_handler/cmdlets/resize_image.rb +45 -0
- data/lib/universal_pipe_handler/cmdlets/reverse.rb +22 -0
- data/lib/universal_pipe_handler/cmdlets/screenshot.rb +41 -0
- data/lib/universal_pipe_handler/cmdlets/search_torrent.rb +24 -0
- data/lib/universal_pipe_handler/cmdlets/seconds.rb +23 -0
- data/lib/universal_pipe_handler/cmdlets/select.rb +23 -0
- data/lib/universal_pipe_handler/cmdlets/show_lines.rb +31 -0
- data/lib/universal_pipe_handler/cmdlets/shuffle.rb +16 -0
- data/lib/universal_pipe_handler/cmdlets/shuffle_csv.rb +55 -0
- data/lib/universal_pipe_handler/cmdlets/size.rb +21 -0
- data/lib/universal_pipe_handler/cmdlets/sort_alphabetical.rb +20 -0
- data/lib/universal_pipe_handler/cmdlets/sort_by_date.rb +23 -0
- data/lib/universal_pipe_handler/cmdlets/starts_with.rb +25 -0
- data/lib/universal_pipe_handler/cmdlets/stat_file.rb +61 -0
- data/lib/universal_pipe_handler/cmdlets/to_ascii.rb +38 -0
- data/lib/universal_pipe_handler/cmdlets/to_camel_case.rb +38 -0
- data/lib/universal_pipe_handler/cmdlets/to_dna.rb +31 -0
- data/lib/universal_pipe_handler/cmdlets/to_movie.rb +16 -0
- data/lib/universal_pipe_handler/cmdlets/to_pdf.rb +58 -0
- data/lib/universal_pipe_handler/cmdlets/translate.rb +36 -0
- data/lib/universal_pipe_handler/cmdlets/upload_to.rb +29 -0
- data/lib/universal_pipe_handler/cmdlets/word_count.rb +39 -0
- data/lib/universal_pipe_handler/cmdlets/word_wrap.rb +26 -0
- data/lib/universal_pipe_handler/cmdlets/write_to.rb +51 -0
- data/lib/universal_pipe_handler/cmdlets/years.rb +30 -0
- data/lib/universal_pipe_handler/cmdlets_handler/cmdlets_handler.rb +193 -0
- data/lib/universal_pipe_handler/colours/colourize.rb +112 -0
- data/lib/universal_pipe_handler/colours/colours.rb +54 -0
- data/lib/universal_pipe_handler/configuration/configuration.rb +18 -0
- data/lib/universal_pipe_handler/constants/constants.rb +201 -0
- data/lib/universal_pipe_handler/dataset/dataset.rb +14 -0
- data/lib/universal_pipe_handler/project/project.rb +36 -0
- data/lib/universal_pipe_handler/requires/do_require_the_individual_cmdlet_files.rb +21 -0
- data/lib/universal_pipe_handler/requires/require_the_universal_pipe_handler.rb +14 -0
- data/lib/universal_pipe_handler/shell/shell.rb +256 -0
- data/lib/universal_pipe_handler/toplevel_methods/all_actions.rb +48 -0
- data/lib/universal_pipe_handler/toplevel_methods/cmdlet_directory.rb +22 -0
- data/lib/universal_pipe_handler/toplevel_methods/e.rb +16 -0
- data/lib/universal_pipe_handler/toplevel_methods/misc.rb +54 -0
- data/lib/universal_pipe_handler/toplevel_methods/rds.rb +18 -0
- data/lib/universal_pipe_handler/toplevel_methods/token.rb +18 -0
- data/lib/universal_pipe_handler/version/version.rb +19 -0
- data/lib/universal_pipe_handler/yaml/aliases_to_cmdlets.yml +250 -0
- data/lib/universal_pipe_handler/yaml/allowed_cmdlets.yml +118 -0
- data/lib/universal_pipe_handler/yaml/predefined_methods.yml +15 -0
- data/lib/universal_pipe_handler.rb +5 -0
- data/test/testing_the_universal_pipe_handler.rb +65 -0
- data/test/this_file +46 -0
- data/universal_pipe_handler.gemspec +80 -0
- metadata +299 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/count_longest_row.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_count_longest_row
|
11
|
+
# ========================================================================= #
|
12
|
+
def self.cmdlet_count_longest_row
|
13
|
+
n_number = 0
|
14
|
+
result?.each {|_|
|
15
|
+
n_number = _.size unless n_number > _.size
|
16
|
+
}
|
17
|
+
set_result(n_number)
|
18
|
+
return result?
|
19
|
+
end; self.instance_eval { alias count_longest_row cmdlet_count_longest_row } # === UniversalPipeHandler.count_longest_row
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/crop.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_crop
|
11
|
+
#
|
12
|
+
# This method can be used to crop an image.
|
13
|
+
# ========================================================================= #
|
14
|
+
def self.cmdlet_crop(
|
15
|
+
crop_command_to_use = result?
|
16
|
+
)
|
17
|
+
filename = result?
|
18
|
+
crop = ImageParadise::Crop.new(
|
19
|
+
filename, crop_command_to_use, :dont_run_yet
|
20
|
+
)
|
21
|
+
crop.run
|
22
|
+
set_result(crop.result?)
|
23
|
+
return result?
|
24
|
+
end; self.instance_eval { alias crop cmdlet_crop } # === UniversalPipeHandler.crop
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/cut.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_cut (cut tag)
|
11
|
+
#
|
12
|
+
# This action allows you to cut a video or audio file.
|
13
|
+
#
|
14
|
+
# The input can be as complex as "20%-50%".
|
15
|
+
# ========================================================================= #
|
16
|
+
def self.cmdlet_cut(
|
17
|
+
start_position = result?,
|
18
|
+
duration_in_n_seconds = nil
|
19
|
+
)
|
20
|
+
# To prepare for the duration. bl $RUBY_TIME/start_length_duration.rb
|
21
|
+
start_length_duration = MultimediaParadise::StartLengthDuration.new
|
22
|
+
start_position = start_position.first if start_position.is_a? Array # Trying this since Dec 2014.
|
23
|
+
# original_input = start_position.dup
|
24
|
+
_ = Multimedia::FileDuration.new(result?) # This will contain the filename.
|
25
|
+
# ======================================================================= #
|
26
|
+
# === Handle percent-input next
|
27
|
+
#
|
28
|
+
# This can be either -30 or 30. If we count more than one %, we treat the
|
29
|
+
# whole instruction as a range.
|
30
|
+
# ======================================================================= #
|
31
|
+
if start_position.include?('%')
|
32
|
+
# ===================================================================== #
|
33
|
+
# Enter a %-Range next:
|
34
|
+
# ===================================================================== #
|
35
|
+
if start_position.count('%') > 1 # This here is valid if we have something like "30%-80%"
|
36
|
+
splitted = start_position.split('%')
|
37
|
+
end_pos_in_percent = splitted[-1].to_f.abs
|
38
|
+
duration_in_n_seconds = _.one_percent * end_pos_in_percent
|
39
|
+
else # else we have just one %.
|
40
|
+
start_position = start_position.to_i.abs
|
41
|
+
end
|
42
|
+
end
|
43
|
+
length = _.file_duration # Get the absolute length of the file here.
|
44
|
+
# ========================================================================= #
|
45
|
+
# We set the total length of the file here. This is useful because
|
46
|
+
# we can use this information to calculate extra things.
|
47
|
+
# ========================================================================= #
|
48
|
+
start_length_duration.length = length
|
49
|
+
this_file = result?.first
|
50
|
+
e 'The total length of the file '+sfile(this_file)+' is '+
|
51
|
+
simportant(length.to_s)+' seconds.'
|
52
|
+
_ = 'ffmpeg -y -i '+this_file # Build our sys string here. -y so we overwrite our string.
|
53
|
+
# ========================================================================= #
|
54
|
+
# The variable save_to will keep track of where we will store the newly
|
55
|
+
# generated file (in other words, the output file).
|
56
|
+
# ========================================================================= #
|
57
|
+
save_to = start_dir?+
|
58
|
+
File.basename(this_file.gsub(/\.mp3/,''))+'_ouput'
|
59
|
+
# ========================================================================= #
|
60
|
+
# Hack, hack hackety hack.
|
61
|
+
# ========================================================================= #
|
62
|
+
if File.extname(this_file) == '.mp4'
|
63
|
+
save_to << '.mp4'
|
64
|
+
else
|
65
|
+
save_to << '.mp3'
|
66
|
+
end
|
67
|
+
unless duration_in_n_seconds
|
68
|
+
duration_in_n_seconds = start_position.to_i
|
69
|
+
end
|
70
|
+
start_position = 0 # Default.
|
71
|
+
# ========================================================================= #
|
72
|
+
# If @position has been set, then we will add the position both to the
|
73
|
+
# start position, and to the end position.
|
74
|
+
# ========================================================================= #
|
75
|
+
if @position
|
76
|
+
start_position = start_position.to_i + @position
|
77
|
+
end
|
78
|
+
# ========================================================================= #
|
79
|
+
# Use StartLengthDuration now to get the required info.
|
80
|
+
# ========================================================================= #
|
81
|
+
start_length_duration.start = start_position
|
82
|
+
start_length_duration.set_duration = duration_in_n_seconds
|
83
|
+
_ << ' -ss '+start_length_duration.start.to_s
|
84
|
+
_ << ' -t '+(start_length_duration.duration).to_s
|
85
|
+
# ========================================================================= #
|
86
|
+
# The problem with -acodec copy is that an AAC file can not be easily
|
87
|
+
# copied into a .mp3 file. Hence we must use -acodec libmp3lame
|
88
|
+
# instead here.
|
89
|
+
# ========================================================================= #
|
90
|
+
if save_to.include? 'mp3'
|
91
|
+
_ << ' -acodec libmp3lame '
|
92
|
+
else
|
93
|
+
_ << ' -acodec copy '
|
94
|
+
end
|
95
|
+
_ << save_to
|
96
|
+
esystem " #{_}"
|
97
|
+
set_result(save_to)
|
98
|
+
result?
|
99
|
+
end; self.instance_eval { alias cut cmdlet_cut } # === UniversalPipeHandler.cut
|
100
|
+
|
101
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/days.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_days?
|
11
|
+
#
|
12
|
+
# The input should be amount of seconds.
|
13
|
+
#
|
14
|
+
# However had, this is context-dependent and thus a bit difficult to
|
15
|
+
# handle correctly.
|
16
|
+
#
|
17
|
+
# For instance, take these two different inputs:
|
18
|
+
#
|
19
|
+
# '5 years | days?'
|
20
|
+
# '45 days | n_seconds?'
|
21
|
+
#
|
22
|
+
# The first variant obviously gives us n seconds to days?, and then
|
23
|
+
# days? can output the amount of days.
|
24
|
+
#
|
25
|
+
# The second variant should however had simply give us the amount of
|
26
|
+
# seconds that 45 days have.
|
27
|
+
#
|
28
|
+
# The convention thus will be that we will always convert into seconds,
|
29
|
+
# and when it is fed into n_seconds? then we will not do any further
|
30
|
+
# modification.
|
31
|
+
# ========================================================================= #
|
32
|
+
def self.cmdlet_days?(i = result?)
|
33
|
+
i = i.join.strip if i.is_a? Array
|
34
|
+
# result = i.to_f / ONE_DAY_HAS_N_SECONDS.to_f
|
35
|
+
# i = result.floor
|
36
|
+
set_result(i)
|
37
|
+
return result?
|
38
|
+
end; self.instance_eval { alias action_days? cmdlet_days? } # === UniversalPipeHandler.action_days?
|
39
|
+
self.instance_eval { alias action_n_days? cmdlet_days? } # === UniversalPipeHandler.action_days?
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/decolourize.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_decolourize
|
11
|
+
#
|
12
|
+
# This method will get rid of the colours from a video file.
|
13
|
+
# ========================================================================= #
|
14
|
+
def self.cmdlet_decolourize(
|
15
|
+
this_file = result?
|
16
|
+
)
|
17
|
+
this_file = this_file.first if this_file.is_a? Array
|
18
|
+
output_file = 'decolourized_file_'+File.basename(this_file)
|
19
|
+
_ = 'ffmpeg -i '+this_file+' -vf format=gray '+output_file
|
20
|
+
esystem _
|
21
|
+
set_result(output_file)
|
22
|
+
return result?
|
23
|
+
end; self.instance_eval { alias decolourize cmdlet_decolourize } # === UniversalPipeHandler.decolourize
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/download.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
begin
|
10
|
+
require 'wget'
|
11
|
+
rescue LoadError; end
|
12
|
+
|
13
|
+
# ========================================================================= #
|
14
|
+
# === UniversalPipeHandler.cmdlet_download
|
15
|
+
#
|
16
|
+
# Download a file via this cmdlet.
|
17
|
+
# ========================================================================= #
|
18
|
+
def self.cmdlet_download(i)
|
19
|
+
if Object.const_defined? :Wget # Then use WgetWrapper if it is available.
|
20
|
+
Wget.new(i)
|
21
|
+
else
|
22
|
+
cmd = 'wget '+i
|
23
|
+
run_sys_cmd(cmd)
|
24
|
+
end
|
25
|
+
@file = File.basename(i)
|
26
|
+
set_result @file
|
27
|
+
result?
|
28
|
+
end; self.instance_eval { alias download cmdlet_download } # === UniversalPipeHandler.download
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/torrent.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_torrent
|
11
|
+
# ========================================================================= #
|
12
|
+
def self.cmdlet_torrent
|
13
|
+
cmdlet_search_torrent
|
14
|
+
cmdlet_download(result?)
|
15
|
+
end; self.instance_eval { alias torrent cmdlet_torrent } # === UniversalPipeHandler.torrent
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/duration.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
begin
|
10
|
+
require 'multimedia_paradise/audio/file_duration/file_duration.rb'
|
11
|
+
rescue LoadError; end
|
12
|
+
|
13
|
+
# ========================================================================= #
|
14
|
+
# === UniversalPipeHandler.cmdlet_duration
|
15
|
+
# ========================================================================= #
|
16
|
+
def self.cmdlet_duration(
|
17
|
+
i = result?
|
18
|
+
)
|
19
|
+
n_seconds = 0
|
20
|
+
if i.is_a? Array
|
21
|
+
i.each {|entry|
|
22
|
+
_ = Multimedia::FileDuration.new(entry)
|
23
|
+
n_seconds += _.duration?
|
24
|
+
}
|
25
|
+
else
|
26
|
+
_ = Multimedia::FileDuration.new(i)
|
27
|
+
n_seconds += _.duration?
|
28
|
+
end
|
29
|
+
result = 'Duration of `'+sfile(i)+'`: '+sfancy(n_seconds.to_s)+' seconds.'
|
30
|
+
set_result(result)
|
31
|
+
return result?
|
32
|
+
end; self.instance_eval { alias duration cmdlet_duration } # === UniversalPipeHandler.duration
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/extract.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_extract
|
11
|
+
#
|
12
|
+
# Here we will extract the audio and the video.
|
13
|
+
# ========================================================================= #
|
14
|
+
def self.cmdlet_extract(i = nil)
|
15
|
+
_ = result?
|
16
|
+
if i.is_a? Array
|
17
|
+
case i.first
|
18
|
+
when 'audio'
|
19
|
+
action_extract_audio _, Dir.pwd
|
20
|
+
end
|
21
|
+
else # Delegate towards the two other methods here.
|
22
|
+
action_extract_audio _, Dir.pwd
|
23
|
+
action_extract _
|
24
|
+
end
|
25
|
+
end; self.instance_eval { alias extract cmdlet_extract } # === UniversalPipeHandler.extract
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/extract_all.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_extract_all
|
11
|
+
# ========================================================================= #
|
12
|
+
def self.cmdlet_extract_all(dir = result?)
|
13
|
+
dir = dir.first if dir.is_a? Array
|
14
|
+
all_files = get_all_files_from(dir)
|
15
|
+
all_files.each { |file|
|
16
|
+
_ = extract_aller.new(file, :dont_run_yet) # If it is an archive, extract_all it.
|
17
|
+
_.set_extract_all_to_this_location(dir) # We will extract_all into the same directory.
|
18
|
+
_.run
|
19
|
+
}
|
20
|
+
set_result(all_files)
|
21
|
+
end; self.instance_eval { alias extract_all cmdlet_extract_all } # === UniversalPipeHandler.extract_all
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/extract_audio.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_extract_audio
|
11
|
+
#
|
12
|
+
# This method will extract audio from a video container.
|
13
|
+
#
|
14
|
+
# We will make use of the project ExtractAudio for this, so we
|
15
|
+
# absolutely depend on that project.
|
16
|
+
#
|
17
|
+
# The functionality is implemented as part of the multimedia_paradise
|
18
|
+
# gem.
|
19
|
+
# ========================================================================= #
|
20
|
+
def self.cmdlet_extract_audio(
|
21
|
+
i = result?,
|
22
|
+
optional_store_where = nil
|
23
|
+
)
|
24
|
+
e "Extracting audio from #{sfancy(i)} next." if be_verbose?
|
25
|
+
_ = MultimediaParadise.extract_audio(i, optional_store_where)
|
26
|
+
set_result(_)
|
27
|
+
return result?
|
28
|
+
end; self.instance_eval { alias extract_audio cmdlet_extract_audio } # === UniversalPipeHandler.extract_audio
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/extract_video.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_extract_video
|
11
|
+
#
|
12
|
+
# Simply delegate towards MultimediaParadise.
|
13
|
+
# ========================================================================= #
|
14
|
+
def self.cmdlet_extract_video(i = result?)
|
15
|
+
MultimediaConversions.extract_video(i)
|
16
|
+
end; self.instance_eval { alias extract_video cmdlet_extract_video } # === UniversalPipeHandler.extract_video
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/find_all.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_find_all (find tag)
|
11
|
+
#
|
12
|
+
# This cmdlet can be used in similar ways as "grep".
|
13
|
+
# ========================================================================= #
|
14
|
+
def self.cmdlet_find_all(
|
15
|
+
search_term = commandline_arguments?
|
16
|
+
)
|
17
|
+
keyphrase_to_search_for = search_term
|
18
|
+
if keyphrase_to_search_for.is_a? Array
|
19
|
+
keyphrase_to_search_for = keyphrase_to_search_for.first
|
20
|
+
end
|
21
|
+
e 'Now searching for the term `'+
|
22
|
+
sfancy(keyphrase_to_search_for)+'`:'+N+N
|
23
|
+
dataset = result?
|
24
|
+
dataset = dataset.reject {|line|
|
25
|
+
line !~ /#{keyphrase_to_search_for}/ # Here we apply the "grep" action.
|
26
|
+
}
|
27
|
+
colourize = true
|
28
|
+
# ======================================================================= #
|
29
|
+
# If we enable colourizing the result, then we will add swarn(search_term)
|
30
|
+
# ======================================================================= #
|
31
|
+
if colourize
|
32
|
+
dataset.map! {|entry|
|
33
|
+
entry.gsub!(/(#{keyphrase_to_search_for})/, swarn("\\1"))
|
34
|
+
}
|
35
|
+
end
|
36
|
+
set_result(dataset)
|
37
|
+
return result?
|
38
|
+
end; self.instance_eval { alias find_all cmdlet_find_all } # === UniversalPipeHandler.find_all
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/generate_random_video.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_generate_random_video
|
11
|
+
#
|
12
|
+
# We generate a random video here.
|
13
|
+
#
|
14
|
+
# The second argument is a hash that can keep extra options.
|
15
|
+
# ========================================================================= #
|
16
|
+
def self.cmdlet_generate_random_video(i = result?, hash_with_options = {})
|
17
|
+
output_file = 'output.mpg'
|
18
|
+
if hash_with_options.has_key? :duration
|
19
|
+
duration = 'duration='+hash_with_options.delete(:duration)
|
20
|
+
else
|
21
|
+
duration = 'duration=15' # The default.
|
22
|
+
end
|
23
|
+
_ = 'ffmpeg -f lavfi -i testsrc='+duration+':size=1280x720:rate=30 '+output_file
|
24
|
+
esystem _
|
25
|
+
set_result(output_file)
|
26
|
+
return result?
|
27
|
+
end; self.instance_eval { alias generate_random_video cmdlet_generate_random_video } # === UniversalPipeHandler.generate_random_video
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/generate_string.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_generate_string
|
11
|
+
#
|
12
|
+
# This method will simply generate a random string.
|
13
|
+
#
|
14
|
+
# action_generate_string 25, false
|
15
|
+
#
|
16
|
+
# ========================================================================= #
|
17
|
+
def self.cmdlet_generate_string(
|
18
|
+
max = 50,
|
19
|
+
assign_to_result = true
|
20
|
+
)
|
21
|
+
alphabet = ('a'..'z').to_a << ' '
|
22
|
+
_ = (0...max).map { alphabet.sample }.join
|
23
|
+
set_result(_) if assign_to_result
|
24
|
+
return result?
|
25
|
+
end; self.instance_eval { alias generate_string cmdlet_generate_string } # === UniversalPipeHandler.generate_string
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/get_all_audio_files.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_get_all_audio_files
|
11
|
+
#
|
12
|
+
# We depend on the action "get all files" for this method here.
|
13
|
+
#
|
14
|
+
# We will obtain all audio files from the current working directory,
|
15
|
+
# by first obtaining all files, and then applying a filter.
|
16
|
+
# ========================================================================= #
|
17
|
+
def self.cmdlet_get_all_audio_files(
|
18
|
+
from = Dir.pwd
|
19
|
+
)
|
20
|
+
from = '/Depot/Audio' if from.nil?
|
21
|
+
_ = action_get_all_audio_files(from)
|
22
|
+
# ======================================================================= #
|
23
|
+
# Next, we apply a filter to get only the audio files:
|
24
|
+
# ======================================================================= #
|
25
|
+
_.reject! {|entry|
|
26
|
+
entry = File.extname(entry).delete('.')
|
27
|
+
! ARRAY_AUDIO_FILES.include?(entry)
|
28
|
+
}
|
29
|
+
set_result(_) # We use this result.
|
30
|
+
return _
|
31
|
+
end; self.instance_eval { alias get_all_audio_files cmdlet_get_all_audio_files } # === UniversalPipeHandler.get_all_audio_files
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/get_all_files.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
require 'universal_pipe_handler/toplevel_methods/misc.rb'
|
10
|
+
|
11
|
+
# ========================================================================= #
|
12
|
+
# === UniversalPipeHandler.cmdlet_get_all_files (files tag)
|
13
|
+
#
|
14
|
+
# Invoked via list_content(). We use expand_path here to get the
|
15
|
+
# real absolute path. It will return all files that matched a
|
16
|
+
# certain criteria.
|
17
|
+
#
|
18
|
+
# The first argument is the target directory. This MUST include a
|
19
|
+
# trailing '/' - the method here will NOT append a trailing '/'.
|
20
|
+
#
|
21
|
+
# The second argument, called `include_the_subdirectories`, instructs this method
|
22
|
+
# to traverse into subdirectories.
|
23
|
+
# ========================================================================= #
|
24
|
+
def self.cmdlet_get_all_files(
|
25
|
+
from_this_directory = :try_to_use_the_working_directory_variable,
|
26
|
+
include_the_subdirectories = false
|
27
|
+
)
|
28
|
+
if from_this_directory.is_a? Array
|
29
|
+
from_this_directory = from_this_directory.first
|
30
|
+
end
|
31
|
+
case from_this_directory
|
32
|
+
# ======================================================================= #
|
33
|
+
# === :default
|
34
|
+
# ======================================================================= #
|
35
|
+
when :default, :def, nil
|
36
|
+
from_this_directory = return_pwd
|
37
|
+
# ======================================================================= #
|
38
|
+
# === :try_to_use_the_working_directory_variable
|
39
|
+
# ======================================================================= #
|
40
|
+
when :try_to_use_the_working_directory_variable
|
41
|
+
from_this_directory = UniversalPipeHandler.working_directory?
|
42
|
+
if from_this_directory.nil?
|
43
|
+
from_this_directory = return_pwd
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
@target_directory = from_this_directory # this may have to be changed eventually.
|
48
|
+
if @target_directory.start_with? ':' # assume it is a special keyword.
|
49
|
+
@target_directory = sanitize_url(@target_directory)
|
50
|
+
end
|
51
|
+
target = @target_directory+'**'
|
52
|
+
target = @target_directory+'**/**' if include_the_subdirectories
|
53
|
+
_ = Dir[target].map {|entry| File.expand_path(entry) }
|
54
|
+
set_result(_)
|
55
|
+
return result? # We will return all found files.
|
56
|
+
end; self.instance_eval { alias get_all_files cmdlet_get_all_files } # === UniversalPipeHandler.get_all_files
|
57
|
+
self.instance_eval { alias get_all_files_from cmdlet_get_all_files } # === UniversalPipeHandler.get_all_files_from
|
58
|
+
self.instance_eval { alias list_content cmdlet_get_all_files } # === UniversalPipeHandler.list_content
|
59
|
+
self.instance_eval { alias cmdlet_ls cmdlet_get_all_files } # === UniversalPipeHandler.cmdlet_ls
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'universal_pipe_handler/cmdlets/get_all_images.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module UniversalPipeHandler
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === UniversalPipeHandler.cmdlet_get_all_images
|
11
|
+
#
|
12
|
+
# The first argument specifies from where we get the image files.
|
13
|
+
#
|
14
|
+
# In order for this to work, we will tap into the method called
|
15
|
+
# action_get_all_files().
|
16
|
+
# ========================================================================= #
|
17
|
+
def self.cmdlet_get_all_images(
|
18
|
+
dir = start_directory?,
|
19
|
+
include_subdirs = false
|
20
|
+
)
|
21
|
+
if dir.is_a? Hash
|
22
|
+
if dir.has_key? :from
|
23
|
+
dir = dir.delete :from
|
24
|
+
end
|
25
|
+
end
|
26
|
+
if dir == :include_subdirs
|
27
|
+
dir = start_directory?
|
28
|
+
include_subdirs = true
|
29
|
+
end
|
30
|
+
dir = dir.first if dir.is_a? Array
|
31
|
+
dir << '/' unless dir.end_with? '/'
|
32
|
+
dir = sanitize_url(dir)
|
33
|
+
dir = dir.first if dir.is_a? Array # We must check again here due to sanitize_url().
|
34
|
+
case dir.delete('/')
|
35
|
+
when 'njoy_dir','njoy'
|
36
|
+
dir = '/home/x/data/images/NJOY/'
|
37
|
+
end
|
38
|
+
@target_directory = dir # this may have to be changed eventually.
|
39
|
+
_ = action_get_all_files(target_directory?, include_subdirs)
|
40
|
+
_.select! {|file|
|
41
|
+
ARRAY_IMAGE_FILE_TYPES.include?(File.extname(file).delete('.'))
|
42
|
+
}
|
43
|
+
set_result(_)
|
44
|
+
return result?
|
45
|
+
end; self.instance_eval { alias get_all_images cmdlet_get_all_images } # === UniversalPipeHandler.get_all_images
|
46
|
+
|
47
|
+
end
|