「walkmanのプレイリストはwindowsかmacの専用ソフト上でしか作れない…
そんなふうに考えていた時期が
俺にもありました」
そんでもってふとググっていて出たこちらのサイト。
WALKMANでX-アプリを使わずにプレイリストを作成する方法 - 道すがら講堂
この「パソコン実践講座 道すがら講堂」様のページを見たらなんか出来そうじゃないですか。 そこで適当にvimで書いて、set fileencoding=utf-8してtest.m3u8として保存してwalkmanに放り込んだら何と簡単にできてしまいました。BOMとかめんどくさそうだなーと思いましたが特に何もせずとも問題ないようですね。
一体、今までブックマークで我慢していたのは何だったのだ…*1
そこで、気を良くしてちょっとpythonで小物を作りました。
xfceのthunarにはファイルアクションとして選択しているファイルに対して任意のプログラムを実行できる仕組みがあります。それを利用してプレイリストを生成するプログラムを作ったわけです。
ファイルアクションで作ったのはGUIでユーザーと対話するのが面倒だったわけで、ファイル名を聞くというのもめんどくさいため、playlist-14-11-10_19:25:40.m3u8と言う感じでその時の時間でファイルを作るようにしました。そんでリネームで対応しようと。
これだと現状ではフォルダに対応していないのですが、まぁ後で考えるというかそんなに曲を持つことがあるだろうかとも思ったり。
もし作るなら、予めサブディレクトリごとにplaylist_m3u8.partとして子プレイリストを似たようなファイラーのアクションで作成しておき、音楽のルートディレクトリから「選択されたサブディレクトリにある同名のm3u8.partファイル」をインポートするとかそういう仕組みで作ろうかな〜とか思ってます。*2
それかいっそのこと、Rhythmboxとかの吐くm3uファイル(フルパス表記)を相対パスに書き換えるソフトにしてしまったほうが楽でいいかなぁ…あんまり好きじゃないんすよねRhytmbox、なんというか大袈裟というか…オイラとしては大昔のxmmsが好きだった…
ソースコード
playlist_maker.pyとして実行権限付けて適当なところに置きます。
#!/usr/bin/env python # -*- coding: UTF-8 -*- import os import time def main(filefolder,files): lt=time.localtime() datestr="%04d-%02d-%02d_%02d:%02d:%02d" % (lt.tm_year,lt.tm_mon,lt.tm_mday, lt.tm_hour,lt.tm_min,lt.tm_sec) with open("%s/%s%s.m3u8" % (filefolder,"playlist_",datestr),'w') as ofp: for cf in files: ofp.write("%s\n" % os.path.basename(cf)) if __name__ == '__main__': import getopt,sys try: shortcmd="ho:" longcmd=["help","option=",'dir=','folder='] opts,args=getopt.getopt(sys.argv[1:],shortcmd,longcmd) if len(opts)==0 and len(args)>1: firstarg=args[0] opts,args=getopt.getopt(sys.argv[2:],shortcmd,longcmd) args.append(firstarg) except getopt.GetoptError,e: # something getopterror happen print(str(e)) sys.exit(1) except IndexError: # no argument assigned pass filefolder='' for cmd,cmdarg in opts: if cmd=='-h' or cmd=='--help': print(open(sys.argv[0],'r').read()) sys.exit(0) elif cmd in ('-o','--option'): print "option=%s" % cmdarg elif cmd in ('--folder','--dir'): filefolder=cmdarg else: pass main(filefolder,args)
設定方法
thunarの編集(E)->アクションの設定で新規アクションを作成し 名前を「プレイリスト作成」とかなんかにして
「コマンド」に
(スクリプトのディレクトリへのフルパス)playlist_maker.py --dir=%d %F
と設定すればOK