Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save k7a/75641804ddf6f2611c414f90ec9d16ec to your computer and use it in GitHub Desktop.
Save k7a/75641804ddf6f2611c414f90ec9d16ec to your computer and use it in GitHub Desktop.
COWON_MUSIC_DIR_PATH = "I:/Music/"
BOM = "\xEF\xBB\xBF".force_encoding(Encoding::UTF_8)
playlists = Dir.glob("*.m3u8")
puts "playlists count : #{playlists.count}"
playlists.each do |playlist|
output = ["#{BOM}#EXTM3U"]
count = 0
error_paths = []
File.read(playlist, encoding: Encoding::UTF_8).split("\n").each do |line|
# BOM削除
line.gsub!(BOM, "") if line.start_with?(BOM)
if !line.start_with?("#") && !line.empty?
count += 1
title = File.basename(line, ".*").gsub(/^.*?[ -]/, "")
search_path = Regexp.escape(File.absolute_path(((COWON_MUSIC_DIR_PATH + line).match(/(.+)(\.[^.]+$)/)[1]))) + ".*"
absolute_path = Dir.glob(search_path)[0]
if absolute_path.nil?
error_paths.push(search_path)
next
end
relative_path = absolute_path.gsub(/#{COWON_MUSIC_DIR_PATH}/, "").gsub("/", "\\")
output.push("#EXTINF:, - #{title}")
output.push(relative_path)
end
end
# プレイリスト書き出し
File.open(COWON_MUSIC_DIR_PATH + playlist, "w") do |file|
output.each do |line|
file.puts(line)
end
end
puts "-------------------------"
puts "#{playlist} convert completed (songs count : #{count}, success : #{count-error_paths.count}, error : #{error_paths.count})"
unless error_paths.empty?
puts "error paths : "
puts error_paths
end
end
@k7a
Copy link
Author

k7a commented Jun 7, 2016

What's this?

PC上でfoobar2000から書きだしたm3u8プレイリストをCOWON X9に転送するスクリプト
転送する際、COWON上の同ファイル名の別拡張子のファイルを検索し、パスを変換してくれる

前提条件

  • PCとCOWON X9のライブラリ構造が同じになっている事
  • スクリプトとプレイリストがPCの音楽ライブラリのルートフォルダに配置されている事

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment