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=en
chrono-取得する見出しに応じて、 ニュース、カード、記事、シャピト、またはポリゴンの値を取得します。
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(/^#{$meduza}\//, '') json = JSON::parse(open($meduza_api % post_id).read) item.search('description').each do |description| description.content = json['root']['content']['body'].gsub('src="/image/', 'src="//meduza.io/image/') end end doc.to_xml end end puts Meduza.generate
途中で、 gsubメソッドを使用して画像の相対URLを絶対に変更します。
使用する
たとえば、 herokuホスティングにデプロイして健康に使用できる(そして完全に無料の)ミニマルなシナトラアプリケーションが作成されています。 herokuの「眠りに落ちる」アプリケーションを取り除くことは、 このようなサービスに役立ちます。
アプリケーションのソースコードはgithubに投稿されています。 ご覧いただきありがとうございます!
PS動作中のアプリケーションmeduza.herokuapp.com/rssへのリンク(無料のherokuアカウントが負荷に耐えられる限り)。