Drkcore

22 01 2011 work Python Tweet

feedparserとfeedgeneratorを使ってRSSを加工する

職場でオープンソース版「Fastladder」を入れて使っている。

最近、最も保守的だと言われている知財の部署からエラー報告や、要望とかがちょくちょく寄せられるようになってきて、おー結構普及したなぁと延べ人数数えたら7割超えてた。Fastladderの前に一年くらい違うRSSリーダー使ってから3年半くらいかかってここまで来た感じ(RSSごときで3年もかかんのか?なんて思うんだけど、一般的に製薬業界はITリテラシー低いですね。なんでだろうかね?)。

地道な啓蒙活動に付き合って講習会を手伝ってくれたK君とかN君とか、別のサイトで普及活動に励んでくれたA君に感謝しないとな。

さて、登録されてるフィードの内容見てるとPubmedとWIPOのPatentscopeが多いが、知財のヒトからエラー報告として挙げられた内容の中に400件くらいエントリのあるフィード(WIPO)を新規登録できないってのがあった。

研究者はプロジェクトの内容で検索かけるのだけど、知財のヒトは会社毎の検索式を追いかけたりするらしい。例えばPA/TAKEDA PHARMACEUTICALなんて検索かけると700件以上ヒットして、その検索式をRSSにすると500件のエントリが含まれるRSSが出力される。これがfastladderだと新規登録で弾かれる。ちなみに研究者の検索する状況ではそんな多量のエントリーの含まれるフィードは出てこなかったりするので今まで問題にならなかったみたい。

ソース見てないからわかんないんだけど、fastladderの未読記事のmax200件にしてるからそれで引っかかってんのかなぁと

んだよWIPOのRSSはmax指定できないの?->できないっぽい

とりあえず、feedのエントリ数を減らすような中継かませばいいんじゃないかと、休日を利用してササッと書いてみた。

import feedparser
import feedgenerator
from time import mktime
from datetime import datetime

MAX_ENTRIES = 10
wipo_url = "http://www.wipo.int/pctdb/en/rss.jsp?C=1&QUERY="
query    = "(FP%2FPA%2FTAKEDA+AND+FP%2FPHARMACEUTICAL)"

d = feedparser.parse(wipo_url+query)

feed = feedgenerator.Rss201rev2Feed(
    title       = d.feed.title,
    link        = d.feed.link,
    feed_url    = d.url,
    description = d.channel.description
    )

for entry in d.entries[:MAX_ENTRIES]:
    feed.add_item(
        title       = entry.title,
        link        = entry.link,
        description = entry.description,
        pubdate     = datetime.fromtimestamp(mktime(entry.updated_parsed))
        )

print feed.writeString('utf-8')

あとは、CGIかFlaskで動かせばOKでしょう。

pubdateのとこで若干はまったけどsofのパワーで解決。

今は、イントラQAサイトを定着させるのにちょっと力を入れてる。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021