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