: O. Yuanying

Yapra で Pixiv

Yet Another Pragger のテストを兼ねて、 Pragger で自作プラグインを使ってやった Pixiv フィードの生成 と同じことをやってみる。

Pixivにログイン

まずは、Yapra固有プラグインで Pixiv にログイン。


- module: Config::WebPost
  config:
    url: http://www.pixiv.net/index.php
    params:
      pixiv_id: yuanying
      pass: password-dayo

Praggerで同じようなことできるプラグインを一応書いたには書いたんだけど、 Pluginクラスを勝手に拡張したりしてソースが汚かったんですよね。

CustomFeed

つぎに、FF11というタグのついたページから、 それぞれのイラストページのURLをひろってくる。


- module: Feed::Custom
  config:
    url: http://www.pixiv.net/search.php?s_mode=s_tag&word=FF11
    extract_xpath:
      capture: '//div[@id="pixiv"]/div'
      split: '//li'
      raw_link: '/a[1]'
    apply_template_after_extracted:
      link: 'http://www.pixiv.net/<%=/href="(.*?)"/.match(item.raw_link).to_a[1]%>'
      thumbnail: '<%=/src="(.*?)"/.match(item.raw_link).to_a[1]%>'

抽出自体は extract_xpath の名の通り、XPath を使ってとってくる。

その後抽出した<a>タグから、apply_template_after_extracted をかけてやって、 リンクとサムネイルのURLを抽出してやる。

テンプレート自体は ERB で書いてます。

EFT

抽出したURLを開いて、本文やらタイトルをとってくる。


- module: Filter::EntryFullText
  config:
    extract_xpath:
      title: '//title/text()'
      dc_creator: "//div[@id='profile']/div/text()"
      tags: '//span[@id="tags"]'
      comment: '//div[@id="illust_comment"]'
    apply_template_after_extracted:
      content_encoded: '<img src="<%=item.thumbnail%>" /><p><%=item.comment%></p><p><%=item.tags%></p>'

ここもまた、そのページから XPath でタイトルやらコメントやらを抽出した後に、 apply_template_after_extracted でエントリ本文(content_encoded)を生成してる。

RSSの保存

最後はできたフィードを Pragger の標準プラグインで保存。


- module: RSS::save
  config:
    title: Pixiv - FF11
    link: http://www.pixiv.net/search.php?s_mode=s_tag&word=FF11
    description: FF11 Pixivにあがった画像
    filename: 'ff11.xml'

こんな感じで Yapra用プラグインと Pragger用プラグインを混ぜて実行できます。

いやー動いた動いた。ヨカッタヨカッタ。