LoginSignup
6
6

More than 5 years have passed since last update.

youtube-dlを操作するrubyプログラム

Last updated at Posted at 2017-08-11

Qiitaとrubyとyoutube初心者です!!

凄い!何が凄いってQiitaのコード部分に
https://www.ユーチューブ.com/watch?v=***********
(カタカナ部分をアルファベットで)
って書くと投稿が弾かれる!みんな試してみてくれ!!最初見出しに●arezって入れてたから弾かれてたのかと思ってyoutube初心者に変えたりして試してた(笑)他のサニタイズ用のURLもあると思うけど、どこかに書いてないだろうか。書いてないだろうな。

環境
os X(10.12.6)
ruby 2.4.1

youtube-dlのインストールはこれの通り

sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

mp4からmp3へのエンコードはffmpegでやってる。
ffmpegのインストールはこれの通り

brew install ffmpeg

brew入ってないって人はこれ見てやってください

コード自体はクラスにするほどじゃないはずだけど、オブジェクト志向をやってみたかった書いてみた
もっと綺麗に書けるはずだから機能追加+リファクタリングするかも

download_urls.txtにURL入れて、mediadl.rb動かせば音声だけのが作られる
Mediadl#encode_mp4_to_mp3とMediadl#remove_mp4をコメントアウトすれば普通にmp4形式で下載される

download_urls.txtの中身をサーバ上に置いてブラウザのエクステンションでブックマーク感覚でURLを追加して、定期でmediadl.rbを実行したら、もっと良い感じになるっぽい。そのうちやるかも

download_urls.txt
https://www.ユーチューブ.com/watch?v=***********
https://www.ユーチューブ.com/watch?v=***********
mediadl.rb
#mediadl.rb

require 'open3'


class Mediadl
  def initialize(file_name="./download_urls.txt")
    @file = file_name
  end

  def line_counter
    File.open(@file) do |f|
      while f.gets
        @total_lines = f.lineno
      end
    end
    return @total_lines
  end

  def dl
    counter = 0
    total_lines = self.line_counter
    File.open(@file,'r').each do |url|
      counter += 1
      puts "start file:#{counter}/#{total_lines}"
      Open3.capture3('youtube-dl -f mp4 ' + "#{url}")
      puts  "finish file:#{counter}/#{total_lines}"
    end
    Process.waitall
  end

  def encode_mp4_to_mp3
    puts "start encoding"
    Open3.capture3('for f in *.mp4; do ffmpeg -y -i "$f" "`echo $f | sed -e "s/.mp4/.mp3/"`"; done ')
    puts "finish encoding"#
  end

  def remove_mp4
    puts "start remove mp4"
    Open3.capture3('rm *.mp4') 
    puts "finish remove mp4"
  end
end

download = Mediadl.new
download.dl
download.encode_mp4_to_mp3
download.remove_mp4
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6