class Aucast::YoutubeDl
Public Class Methods
new(url)
click to toggle source
# File lib/aucast/youtube_dl.rb, line 6 def initialize(url) @url = url end
Public Instance Methods
copy(destination)
click to toggle source
# File lib/aucast/youtube_dl.rb, line 14 def copy(destination) tmpdir = Dir.mktmpdir begin download_video(@url, tmpdir) file_path = find_audio_in_tmpdir(tmpdir) FileUtils.cp(file_path, destination) ensure FileUtils.remove_entry_secure tmpdir end end
filename()
click to toggle source
# File lib/aucast/youtube_dl.rb, line 10 def filename @url end
upload(endpoint)
click to toggle source
# File lib/aucast/youtube_dl.rb, line 26 def upload(endpoint) tmpdir = Dir.mktmpdir begin download_video(@url, tmpdir) file_path = find_audio_in_tmpdir(tmpdir) file_uploader = FileUpload.new(file_path) file_uploader.upload(endpoint) ensure FileUtils.remove_entry_secure tmpdir end end
Protected Instance Methods
download_video(url, outdir)
click to toggle source
# File lib/aucast/youtube_dl.rb, line 49 def download_video(url, outdir) system <<-SH cd #{outdir} && \ youtube-dl \ --extract-audio \ --restrict-filenames \ --audio-format mp3 \ --audio-quality 0 \ --add-metadata \ --embed-thumbnail \ --output "%(uploader)s %(title)s.%(ext)s" \ #{url} SH end
find_audio_in_tmpdir(tmpdir)
click to toggle source
# File lib/aucast/youtube_dl.rb, line 41 def find_audio_in_tmpdir(tmpdir) Dir .entries(tmpdir) .map { |f| File.join(tmpdir, f) } .select { |f| File.file?(f) } .first end