RSSを使用する他の多くの人と同様に、私はニュースを完全にではなく、短いバージョンで返すフィードにうんざりしています。 この場合、フィードをオフラインで読むことはできません。
Meduza.ioも例外ではありません。テキストが削除されるため、ニュースを読むには毎回リーダーからブラウザーに移動する必要があります。 これは、Medusaに通常のモバイルバージョンがなく、電話のWebバージョンが非常に遅い場合に特にひどく見えました。
rssでhtmlを解析するためのさまざまなサービスがあり
ますが、Medusaのコンソールクライアントに遭遇したとき、すぐに質問がありました。そこではどのAPIが使用され、それを使用してアプリケーションを作成できますか?

API
遠くまで行く必要はありませんでした。コンソールアプリケーションコード
はgithubに投稿されており 、目的のAPIにアクセスするjs-kuです。
ニュースリストの取得
https://meduza.io/api/v3/search?chrono=news&page=0&per_page=10&locale=enchrono-取得する見出しに応じて、
ニュース、カード、記事、シャピト、または
ポリゴンの値を取得します。
page-ページ番号。
per_page-ページ上の投稿の数。
locale-ロケール
ruまたは
en ;
別のニュースを入手する
https://meduza.io/api/v3/shapito/2015/06/02/vyshel-neofitsialnyy-terminalnyy-klient-meduzyここでは、最後の段落から取得したURLが単純に置換されます。
アイデア
https://meduza.io/rss/allで元のrssフィードを取得しますが、切り捨てられたニュースの代わりにAPIを介して受信したニューステキストを置き換えます。
実装例(プロトタイプ)
私はルビーを取り、元のrssフィードを解析するためのコードをいくつか書きました。
Nokogiri::XML(open('https://meduza.io/rss/all'))
また、1つのニュース項目のjsonを解析するコード:
JSON::parse(open('https://meduza.io/api/v3/' + post_url).read)['root']['content']['body']
一方を他方に置き換えて、次のようなものを取得します。
require 'open-uri' require 'json' require 'nokogiri' $meduza = 'https://meduza.io' $meduza_rss = $meduza + '/rss/%s' $meduza_api = $meduza + '/api/v3/%s' class Meduza def Meduza.generate(feed = 'all') doc = Nokogiri::XML(open($meduza_rss % feed)) doc.xpath('/rss/channel/item').each do |item| post_id = item.xpath('link').inner_text.gsub(/^
途中で、
gsubメソッドを使用して画像の相対URLを絶対に変更します。
使用する
たとえば、
herokuホスティングに
デプロイして健康に使用できる(そして完全に無料の)ミニマルな
シナトラアプリケーションが作成さ
れています。 herokuの「眠りに落ちる」アプリケーションを取り除くことは、
このようなサービスに役立ちます。
アプリケーションのソースコードは
githubに
投稿されています。
ご覧いただきありがとうございます!
PS動作中のアプリケーション
meduza.herokuapp.com/rssへのリンク(無料のherokuアカウントが負荷に耐えられる限り)。