Class: MultimediaParadise::Audio::LyricsFetcher

Inherits:
Base
  • Object
show all
Defined in:
lib/multimedia_paradise/audio/lyrics_fetcher.rb

Overview

MultimediaParadise::Audio::LyricsFetcher

Constant Summary collapse

SEARCH_TERM =
#

SEARCH_TERM

#
'Luca'

Constants inherited from Base

Base::ERROR, Base::ERROR_LINE, Base::NAMESPACE, Base::USE_THIS_NAMESPACE_FOR_THE_COLOURS, Base::USE_THIS_NAMESPACE_FOR_THE_CORE_COLOURS

Instance Method Summary collapse

Methods inherited from Base

[], #actions, #append_what_into, #be_silent, #be_verbose?, #beautiful_url, #cartoons_directory?, #clear_the_internal_hash, #cliner, #cliner_with_time_stamp, #colourized_comment, #copy_file, #crimson, #dataset_from_file_video_collection, #dd_mm_yyyy, #debug?, #default_readlines, #directory_to_realvids?, #do_not_use_opn, #dodgerblue, #does_the_video_player_support_this_commandline?, #e, #ecomment, #ecrimson, #efancy, #enable_debug, #ensure_main_encoding, #ensure_that_the_output_directory_exists, #eparse, #erev, #esystem, #ewarn, #file_video_collection?, #filter_for_audio_files, #filter_for_video_files, #forestgreen, #gold, #grey, #hh_mm_ss, #home_x_video?, #indianred, #infer_the_namespace, #internal_hash?, #is_audio_file?, #is_mkv?, #is_mp3?, #is_mp4?, #is_multimedia_file?, #is_on_roebe?, #is_video_file?, #konsole_colour_peru, #lightblue, #lightgreen, #load_yaml, #local_audio_directory?, #log_dir?, #map_symbol_to_locally_existing_file, #mediumorchid, #mediumpurple, #mediumslateblue, #mkdir, #move_file, #namespace?, #no_file_exists, #no_file_exists_at, #olive, #olivedrab, #opne, #opnecomment, #opnn, #orange, #palegoldenrod, #palegreen, #powderblue, #project_base_directory?, #rds, #register_sigint, #remove_file, #report_pwd, #reset_the_internal_hash, #return_all_video_files, #return_pwd, #return_random_video, #rev, #royalblue, #save_what_into, #sdir, #seagreen, #seconds_to_time_format, #select_only_video_files_from, #set_be_verbose, #set_use_colours, #sfancy, #sfile, #simp, #skyblue, #slateblue, #springgreen, #steelblue, #swarn, #teal, #time_right_now, #to_hh_mm_ss, #tomato, #true_rev, #try_to_rename_kde_konsole_tab, #ucliner, #use_colours?, #use_opn?, #use_which_video_player?, #verbose_truth, #video_collection?, #violet, #yaml_directory?, #yel

Methods included from CommandlineArgumentsModule

#all_input_starts_with_a_number?, #commandline_arguments?, #commandline_arguments_as_a_string, #first_argument?, #first_non_hyphened_commandline_argument?, #set_commandline_arguments

Constructor Details

#initialize(search_term = nil, run_already = true) ⇒ LyricsFetcher

#

initialize

#


34
35
36
37
38
39
40
41
42
43
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 34

def initialize(
    search_term = nil,
    run_already = true
  )
  reset
  set_search_term(
    search_term
  )
  run if run_already
end

Instance Method Details

#feedback_available_titlesObject

#

feedback_available_titles

#


203
204
205
206
207
208
209
210
211
212
213
214
215
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 203

def feedback_available_titles
  _ = obtain_raw_dataset
  if _.is_a? Hash
    counter = 0
    cliner
    _.each_pair {|title, value|
      counter += 1
      e; e '('+counter.to_s.rjust(2)+') '+simp(title)
      e; e value; e
      cliner
    }
  end
end

#fetch_subsections_from_datasetObject

#

fetch_subsections_from_dataset

#


194
195
196
197
198
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 194

def fetch_subsections_from_dataset
  lyrics?.each {|line|
    e line.delete(',').delete('"') if line.include? 'add_song'
  }
end

#lyrics?Boolean

#

lyrics?

#

Returns:

  • (Boolean)


187
188
189
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 187

def lyrics?
  @hash[:raw_dataset]
end

#main_file?Boolean

#

main_file?

#

Returns:

  • (Boolean)


77
78
79
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 77

def main_file?
  LYRICS_YAML_FILE
end
#

menu

The menu will, by default, try to find a proper title.

#


123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 123

def menu(
    i = @search_term
  )
  case i # case tag
  # ======================================================================= #
  # === lyrics --help
  # ======================================================================= #
  when *ARRAY_HELP_OPTIONS
    show_help
    exit
  # ======================================================================= #
  # === lyrics open
  # ======================================================================= #
  when 'open'
    open_yaml_file_in_editor
    exit
  # ======================================================================= #
  # === lyrics fat
  # ======================================================================= #
  when 'feedback_available_titles','fat','--feedback',
       '--available_titles',/available-?titles/
    feedback_available_titles
    exit
  # ======================================================================= #
  # === file?
  # ======================================================================= #
  when 'file?','--file?','--location'
    show_file_path
    exit
  else
    try_to_find_this_title(i)
  end if i
end

#obtain_raw_datasetObject Also known as: raw_dataset?, load_yaml_dataset

#

obtain_raw_dataset

#


96
97
98
99
100
101
102
103
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 96

def obtain_raw_dataset
  @hash[:raw_dataset] = nil
  begin
    @hash[:raw_dataset] = YAML.load_file(main_file?)
  rescue Exception => e
    pp e
  end
end

#open_yaml_file_in_editorObject

#

open_yaml_file_in_editor

Invocation example:

lfetcher open
#


114
115
116
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 114

def open_yaml_file_in_editor
  esystem "bluefish #{main_file?}"
end

#report(this = ) ⇒ Object

#

report

#


220
221
222
223
224
225
226
227
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 220

def report(this = @hash[:text])
  # ======================================================================= #
  # Ok, we found it, so display it next:
  # ======================================================================= #
  cliner colour: :konsole_slateblue
  e this
  cliner colour: :konsole_slateblue
end

#resetObject

#

reset

#


48
49
50
51
52
53
54
55
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 48

def reset
  super()
  # ======================================================================= #
  # === @hash
  # ======================================================================= #
  @hash = {}
  infer_the_namespace
end

#runObject

#

run (run tag)

#


232
233
234
235
236
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 232

def run
  menu
  load_yaml_dataset
  fetch_subsections_from_dataset
end

#set_search_term(i = SEARCH_TERM) ⇒ Object

#

set_search_term

#


60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 60

def set_search_term(i = SEARCH_TERM)
  if i.is_a? Array
    i = i.join(' ').strip
  end
  case i
  # ======================================================================= #
  # === nil
  # ======================================================================= #
  when nil, :default
    i = SEARCH_TERM
  end
  @search_term = i
end

#show_file_pathObject

#

show_file_path

#


180
181
182
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 180

def show_file_path
  e LYRICS_YAML_FILE
end

#show_helpObject

#

show_help (help tag)

#


84
85
86
87
88
89
90
91
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 84

def show_help
  opne 'These options are available:'
  e
  opne '  --file?            # Feedback the full path to the .yml '\
       'file in question'
  opne '  --available_titles # Feedback the available titles'
  e
end

#try_to_find_this_title(i) ⇒ Object

#

try_to_find_this_title

This method will try to find an appropriate title.

#


162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/multimedia_paradise/audio/lyrics_fetcher.rb', line 162

def try_to_find_this_title(i)
  _ = raw_dataset?
  keys = _.keys.map
  possible_matches = keys.select {|entry|
    entry = entry.dup if entry.frozen?
    entry.downcase.include? i.downcase
  }
  if possible_matches.empty?
    opne 'Did not find that particular key.'
  else
    @hash[:text] = _[possible_matches.first]
    report(@hash[:text])
  end
end