xuruh’s diary

Twitter に散文したものをまとめていきたい

Webスクレイピングした後に辞書にまとめたいと思ったが,配列から辞書を作るのと,ネストした辞書を作るにはどうしたらいいかで試行錯誤の末のメモ

# こうしたい
{'a': {'b': 'c'}}

num    = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
sm     = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
sl     = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

_1st = {k: v for (k,v) in zip(sm,sl)}

res = {k: v for (k,v) in zip(num, _1st.items())}

# {'0': ('A', 'a'),
#  '1': ('B', 'b'),
#  '2': ('C', 'c'),
#  '3': ('D', 'd'),
#  '4': ('E', 'e'),
#  '5': ('F', 'f'),
#  '6': ('G', 'g'),
#  '7': ('H', 'h'),
#  '8': ('I', 'i'),
#  '9': ('J', 'j')}

# コードの貼り方がわからんのであとで修正する

import bs4
import requests

xml = requests.get('http://radiko.jp/v3/program/station/weekly/TBS.xml')
xml.encoding = xml.apparent_encoding
bs = bs4.BeautifulSoup(xml.text, 'lxml')

pfm = bs.findAll('pfm')
result = []

for i in range(0, len(pfm)):
result.append(pfm[i].text)

with open('list.txt', 'w') as f:
f.write('\n'.join(result))

 とりあえず,もともと Python に興味を持った理由がスクレイピングだったので,それのポートフォリオ的なの

radiko の番組表から出演者を書き出すなにか 

音楽ライブラリを管理できる「bliss」

急に Artwork を全部消して一から登録したくなったので色々ないか探した結果,これが一番効率的だと思ったのでおすすめしたい。

www.blisshq.com

 

Artwork を探すことに焦点を当てると,例えば

  • 画像のフォーマットを統一したい (PNG は JPG にしたい)
  • 解像度を決めたい (Min: 500x500; Max: 900x900 とか)

といったことをやろうと思っても,ググりにググった結果でも,誰かが作ってくれたスクリプトを数個組み合わせて使うことになるので大変面倒だが,これだとまとめて処理してもらえる。

f:id:N04:20180620172621j:plain

参考: Sonos album art - finding and fixing - bliss

 

他にも ID3 タグのバージョンはいくつかとか,タグが設定されていないなどのタグ周りでもチェックしてくれるのでライブラリ全体として統一したい人にはオススメだと思う。

 

ちなみに,ソフトウェア自体が Freenium なので修正できるアルバム数は100と限られているので,自分の好きなアーティストだけライブラリ登録してみるといった使い方が試用するのには向いているかも。