クロスフェード対応google music再生アプリを作りたい その1
前提・問題意識
- 自宅用にロスレス圧縮した音源を、iPod touchから再生したい
- Dock端子からポータブルアンプに繋ぎたいので、iPhone,iPodが前提
- iTunesとalac使えばできるのだが、うちのiPod touchは容量8GB
- audioGalaxy使いだったが、サービスが終わったのでgoogle musicに移行した
- 管理が面倒なので、自宅用音源をそのまま外で聞けるようにしたい
- 音楽をクロスフェード再生したい ←これ大事
作りたいもの
個人的な機能要件
存在するiphone用google music再生アプリ
Melodies
再生や検索が高速かつ安定しているので、普段使い中
gBeats
オフライン再生機能搭載。
gMusic
Melodiesと機能は同等だが、よく再生が途中で止まる。
app for Google Music Free
2アカウント切り替え機能搭載。UIがこなれてない、日本語の扱いが下手という理由で使用は見送り
その他アプリ
CloudBeats
Box,Dropbox,Google Drive,Mediafire, SkyDrive上のmp3を再生できる。
0.5~2.5倍速に0.05刻みで変更する機能と、10s,30sずつ前後移動する機能がある。
アーティスト検索やflac再生ができないので音楽プレーヤーとしては使えないが、ラジオ音源や学習用音源を聞くのには最適っぽい。上記サービスを組み合わせれば数十GB利用できる。
ミュージックライブラリ向け クロスフェード対応アプリ
- My DJ with Crossfade
- Audieon
- Quick Mix
- LouderLogic
次に調べること
ここまで書いたところで、「iPod touch 64GB買ってきてalacで曲突っ込めばいいんじゃね」ということに気づいた。また日が経ってから考えよう。
Webstemmerの文字コードが解決したと見せかけてしてなかったけど一応再度解決
前回の続き。タイトルがまどろっこしい。
extract.pyのオプションに'-c euc-jp'を入れて解決したと思いきや、日経の文字コードはUTF-8で、今度はこちらが文字化けることが発覚。どうも文字コードを指定すること自体が問題らしい。
どうしたら良いか分からず、思いつきで文字コード指定をとっぱらってみた。
#extract.py def main(): ... (debug, pat_threshold, diffscore_threshold, mainscore_threshold, default_charset, codec_out, strict) \ = (0, 0.8, 0.5, 50, '', 'utf-8', False) # = (0, 0.8, 0.5, 50, 'iso-8859-1', 'utf-8', False)
文字コード指定が無いときはiso-8859-1でエンコードしていたらしい。本当に完全な思いつきで空白にしてみただけなのだが、これで直ってしまった。
元々HTMLパーサでmetaタグのcharsetから文字コードを取得していたのだけど、どうやらdefault_charsetのほうが優先されてしまってたみたい。
#htmlparser3.py CHARSET_FIND = re.compile(r'charset\s*=\s*([^">;\s]+)', re.I) def hook_charset(self, attrs): if ('http-equiv' in attrs) and ('content' in attrs): m = self.CHARSET_FIND.search(attrs['content']) if m: self.set_charset(m.group(1)) elif 'charset' in attrs: self.set_charset(attrs['charset']) return
問題はmetaタグからcharsetを取得できなかった場合だが、とりあえず文字コード指定の無いHTMLを発見するまでは放置しておくことにした。
きっと次回へ続く。