スクレイピングあるある
もんだい
↑のようなDOMから、開始時間
, 終了時間
を抜き出すとします。
しかしながら、ちゃんと対応していないと1つの行だけ失敗してしまうようなことが稀に よくあります。なにかわかりますか??(ぱっと見てわかったらあなたは超上級スクレイパーです。)
こたえ
10:00〜10:30 テレビ東京系「特捜警察ジャンポリス」生駒里奈
かいせつ
想定していたやつ
2.5.1 (main)> "18:55~21:54".split('~') => ["18:55", "21:54"]
想定してなかったやつ
2.5.1 (main)> "10:00〜10:30".split('~') => ["10:00〜10:30"]
2.5.1 (main)> '~' == '〜' => false 2.5.1 (main)> '~'.encode(Encoding::Shift_JIS) Encoding::UndefinedConversionError: U+FF5E from UTF-8 to Shift_JIS 2.5.1 (main)> '〜'.encode(Encoding::Shift_JIS) => "\x{8160}"
かいけつ例
2.5.1 (main)> "10:00〜10:30".tr('〜', '~').split('~') => ["10:00", "10:30"]
gsub より tr のが速いっぽい
ちなみに
CSV でいろいろ対応とかするときも、絶対ハマるから encoding して へんなやつは replace するとかするとよいよね〜って話...でしたッ!
坂道発信中っていうLINE Bot つくってる
できること
いまのところできることはこれだけ
- 毎朝、乃木坂の出演情報(tv, radio, magazine, release) が通知される
- リマインダーを登録できる (tv, radio)
- 雑誌 (magazine, release) はAmazonのリンクへ遷移できる
流れはこんな感じ
- 情報くる
- リマインダーセットする
- リマインダーを受け取る
今後
- 欅坂とか他の坂道グループの情報に対応する
雑誌とかのメディアにも対応する (対応済み)- Web版を作って、プッシュ通知をカスタマイズできるようにする
- 推しメン登録とかする
- インタラクティブにもっといろいろできるようにする
- LINE Pay とかも気軽につかえるのかな
開発版だけど (50人限定っぽい)
バグあると思われますがが。 使ってみてのなにかあれば幸いです。
追記 (2018/03/30)
本日発売日の雑誌にも対応しました。#坂道発進中 pic.twitter.com/M2t2mwzdRH
— けるぞん (@7kajii) 2018年3月30日
追記
コレ見てたら(聴いてたら)腹減ってきた
と
咀嚼音いっぱいのってるやつ
Seiyuu Has A Mouth, and Seiyuu Must Eat Screamingly.qazzaqxswwsx.wordpress.com
明日はラーメン食べよ🍜
ActiveRecord で更新した diff 知りたいとき
user レコードの uid, name をアップデートした diff
(id, created_at, updated_at の diff は抜いた)
(main)> user = User.find 1 (main)> old_user = user.dup (main)> user.update(uid: 'fugafuga', name: 'ふが') (main)> diff = (user.attributes.to_a - old_user.attributes.to_a).map(&:first) - %w(id created_at updated_at) (main)> p diff.map{|column| "#{column} : #{old_user[column]} => #{user[column]}"} => ["uid : hogehoge => fugafuga", "name : ほげ => ふが"]
changed とか使うともっとヨサソウ
同じような gem もあった
古いかな
常に履歴を残したい場合は、こっちの gem がヨサソウ
Qiita の投稿の履歴管理にも使われてるっぽい