#Qiitaとrubyとyoutube初心者です!!
凄い!何が凄いってQiitaのコード部分に
https://www.ユーチューブ.com/watch?v=***********
(カタカナ部分をアルファベットで)
って書くと投稿が弾かれる!みんな試してみてくれ!!最初見出しに●arezって入れてたから弾かれてたのかと思ってyoutube初心者に変えたりして試してた(笑)他のサニタイズ用のURLもあると思うけど、どこかに書いてないだろうか。書いてないだろうな。
環境
os X(10.12.6)
ruby 2.4.1
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のインストールはこれの通り]
(https://trac.ffmpeg.org/wiki/CompilationGuide/macOS)
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を実行したら、もっと良い感じになるっぽい。そのうちやるかも
https://www.ユーチューブ.com/watch?v=***********
https://www.ユーチューブ.com/watch?v=***********
#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