O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

RebuildDB -enable to search Rebuild.fm episodes-

703 visualizações

Publicada em

Rebuild.fmのタイトルやshownotesを検索したい人のためのツール

Publicada em: Tecnologia
  • Seja o primeiro a comentar

RebuildDB -enable to search Rebuild.fm episodes-

  1. 1. Rebuild DB enable to search rebuild.fm episodes @jacoyutorius, 2015 1
  2. 2. Rebuild.fm Database Rebuild.fmいつも楽しく聴いていますが、 1エピソードあたりの情報量がとても多く、話題が多岐に渡っ ているので、 「あれ?あの話どのエピソードで話してたっけ・・・?」 となることが多い。 @jacoyutorius, 2015 2
  3. 3. 検索できればいいのでは? @jacoyutorius, 2015 3
  4. 4. 作り方 4 RSSから全エピソードのタイトルとShownotesのタイトル 及びURLが取得できるのでそれらをDB化 4 (本当は全ての会話をsearchableにしたいけど) 4 DBを操作したいのとcronを使いたいのでRailsで 4 getで条件を受け取って検索結果をjsonで返す @jacoyutorius, 2015 4
  5. 5. gem 4 gem "nokogiri" 4 gem "ransack" 4 gem "rxjs-rails" @jacoyutorius, 2015 5
  6. 6. schema.rb ActiveRecord::Schema.define(version: 20150705144513) do create_table "episodes", force: :cascade do |t| t.string "episode_no" t.string "title" t.string "subtitle" t.text "link" t.text "description" t.datetime "pubdate" t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "shownotes", force: :cascade do |t| t.integer "episode_id" t.string "title" t.string "url" t.datetime "created_at", null: false t.datetime "updated_at", null: false end end @jacoyutorius, 2015 6
  7. 7. Tables (デフォルトで用意されるid, createdat, updatedat は省略) @jacoyutorius, 2015 7
  8. 8. rebuild.rake url = "http://feeds.rebuild.fm/rebuildfm" list = RSS::Parser.parse(url) list.items.each do |row| begin episode_no = URI.parse(row.link).path.delete("/") next if Episode.find_by(episode_no: episode_no) episode = Episode.create( episode_no: episode_no, title: row.title, subtitle: row.itunes_subtitle, link: row.link, description: row.description, pubdate: row.pubDate ) doc = Nokogiri::HTML.parse(row.description) doc.css("li").each do |url| episode.shownotes.create( title: url.children.text, url: url.children.css("a").first.attribute("href").value ) end ensure end end @jacoyutorius, 2015 8
  9. 9. rake rebuild:db:update @jacoyutorius, 2015 9
  10. 10. URL /search 4 title, shownotes_title @jacoyutorius, 2015 10
  11. 11. Condition title 4 エピソードのタイトル shownotes_title 4 shownotesのタイトル @jacoyutorius, 2015 11
  12. 12. curl https://rebuilddb.herokuapp.com/ search? title=ruby&shownotes_title=rubykaig i @jacoyutorius, 2015 12
  13. 13. [ { id: null, episode_no: "10", title: "10: RailsConf, Ruby 2.0, Rails 4 (mrkn, r7kamura)", link: "http://rebuild.fm/10/" } ] @jacoyutorius, 2015 13
  14. 14. @jacoyutorius, 2015 14
  15. 15. Console 4 https://rebuilddb.herokuapp.com/ 4 Rx.js 4 Web+DB Press vol85のサンプルコードそのまま @jacoyutorius, 2015 15
  16. 16. URL https://rebuilddb.herokuapp.com/ Github https://github.com/jacoyutorius/rebuild_database @jacoyutorius, 2015 16
  17. 17. Rebuild DB enable to search rebuild.fm episodes END @jacoyutorius, 2015 17

×