Python版video2mp4
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[今さらPython]]
おうちの雑品スクリプトの第二弾、video2mp4 をpython化しま...
まず、元のRuby版はこんな感じ。
#contents
* Ruby版 [#x049960a]
#!/usr/bin/ruby
album = "default"
artist = "default"
ARGV.each{|f|
if f =~ /\-(album|artist)/
if f =~ /\-album=(.+)$/i
album = $1.clone
elsif f =~ /\-artist=(.+)$/i
artist = $1.clone
end
next
end
p f
if File.exist?(f) == true && f =~ /\.(mkv|webm|avi|mov)...
ofn = f.gsub(/\.(mkv|webm|avi|mov)$/i,".mp4")
p ofn
if f != ofn && File.exist?(ofn) == false
Dir.mkdir("mp4") if File.exist?("mp4") == false
system("ffmpeg -i \"#{f}\" -y -metadata ALBUM=\"#{a...
else
p "Exist #{ofn}"
end
else
p "Not Exist #{f}"
p "Exist" if File.exist?(f) == true
p "ExistOK" if f =~ /\.(ogv|mkv|webm|avi|mov)$/i
end
}
ふむふむ。~
メタ情報いじってるのは歴史的経緯で、今は使ってないのでこ...
他にもいくつか、今は不要なのを消します。~
さて、これをpython化すると……。
*Python版 [#qee4d258]
#!/usr/bin/python3
import os
import re
import subprocess
import sys
p = re.compile(r'\.(avi|mov|mkv|webm)$',flags=re.IGNOREC...
for i in sys.argv:
if(p.search(i) != None):
j = re.sub(p,'.mp4',i)
if(not os.path.isfile(j)):
print("不在:"+j)
x = "nice -n 20 ffmpeg -i \""+i+"\" \""+j...
subprocess.run(x,shell=True)
うん、最低限の機能だけ載せたら、めっちゃスッキリしたわね。~
興味深いのは、 ''Rubyではモジュールのimportなしで動いてい...
ここは正直いって ''Pythonの欠点'' だと思うけど、それは日...
* 機能解説 [#je9e67c8]
** 必要な機能 [#f1d3cb29]
必要な機能は以下の通り。
*** 引数の処理(sys.argv) [#sa3538c7]
sys.argvを使い、for i in に噛ませる。
*** ファイル診断(re.compile+re.search) [#d2c30f74]
引数で指示したやつの中で、webm(ネットで拾ったやつに多い)...
re.compileでパターンを作っておいて、searchで確認する。
*** 変換先ファイル名の作成(re.sub) [#r7d9bed5]
re.compileで作ったパターンを利用し、re.subで変換する。
*** 変換先ファイルがあるか?(os.path.isfile) [#h7b995ba]
os.path.isfile を使う。~
実際には「ファイルがない時」なので、 ''not'' を手前にかま...
*** ffmpegの実行(subprocess.run) [#l046a8c6]
subprocess.run(文字列, shell=True)で実行。
終了行:
[[今さらPython]]
おうちの雑品スクリプトの第二弾、video2mp4 をpython化しま...
まず、元のRuby版はこんな感じ。
#contents
* Ruby版 [#x049960a]
#!/usr/bin/ruby
album = "default"
artist = "default"
ARGV.each{|f|
if f =~ /\-(album|artist)/
if f =~ /\-album=(.+)$/i
album = $1.clone
elsif f =~ /\-artist=(.+)$/i
artist = $1.clone
end
next
end
p f
if File.exist?(f) == true && f =~ /\.(mkv|webm|avi|mov)...
ofn = f.gsub(/\.(mkv|webm|avi|mov)$/i,".mp4")
p ofn
if f != ofn && File.exist?(ofn) == false
Dir.mkdir("mp4") if File.exist?("mp4") == false
system("ffmpeg -i \"#{f}\" -y -metadata ALBUM=\"#{a...
else
p "Exist #{ofn}"
end
else
p "Not Exist #{f}"
p "Exist" if File.exist?(f) == true
p "ExistOK" if f =~ /\.(ogv|mkv|webm|avi|mov)$/i
end
}
ふむふむ。~
メタ情報いじってるのは歴史的経緯で、今は使ってないのでこ...
他にもいくつか、今は不要なのを消します。~
さて、これをpython化すると……。
*Python版 [#qee4d258]
#!/usr/bin/python3
import os
import re
import subprocess
import sys
p = re.compile(r'\.(avi|mov|mkv|webm)$',flags=re.IGNOREC...
for i in sys.argv:
if(p.search(i) != None):
j = re.sub(p,'.mp4',i)
if(not os.path.isfile(j)):
print("不在:"+j)
x = "nice -n 20 ffmpeg -i \""+i+"\" \""+j...
subprocess.run(x,shell=True)
うん、最低限の機能だけ載せたら、めっちゃスッキリしたわね。~
興味深いのは、 ''Rubyではモジュールのimportなしで動いてい...
ここは正直いって ''Pythonの欠点'' だと思うけど、それは日...
* 機能解説 [#je9e67c8]
** 必要な機能 [#f1d3cb29]
必要な機能は以下の通り。
*** 引数の処理(sys.argv) [#sa3538c7]
sys.argvを使い、for i in に噛ませる。
*** ファイル診断(re.compile+re.search) [#d2c30f74]
引数で指示したやつの中で、webm(ネットで拾ったやつに多い)...
re.compileでパターンを作っておいて、searchで確認する。
*** 変換先ファイル名の作成(re.sub) [#r7d9bed5]
re.compileで作ったパターンを利用し、re.subで変換する。
*** 変換先ファイルがあるか?(os.path.isfile) [#h7b995ba]
os.path.isfile を使う。~
実際には「ファイルがない時」なので、 ''not'' を手前にかま...
*** ffmpegの実行(subprocess.run) [#l046a8c6]
subprocess.run(文字列, shell=True)で実行。
ページ名: