Newsboat

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

プロジェクトのウェブページ より:

Newsbeuter はテキストターミナル用のオープンソースの RSS/Atom フィードリーダーです。Linux, FreeBSD, macOS などの Unix ライクなオペレーティングシステムで動作します。Newsbeuter は設定が自由自在で優れた機能を多数備えていることから、全てキーボードで動作できる高速かつスマートなフィードリーダーを望んている人にうってつけです。

Newsbeuter の開発は中止され、フォークされて newsboat が生まれました。[1]

インストール

newsboat は公式リポジトリからインストールできます。開発版は newsbeuter-gitAUR または newsboat-gitAUR パッケージでインストールできます。

使用方法

Newsboatは、設定済みのフィードなしでは起動できません。 フィードは、~/.config/newsboat/urls で構成できます。

インストールしたら、コマンドラインから newsboat を起動することができます:

newsboat

ナビゲーションはとてもわかりやすいものになっています。キーバインディングの完全なリストは man ページを見るか、newsbeuter の中から ? キーを押して下さい。

フィードの管理

フィードの追加・削除・タグ管理は全て urls ファイルの編集で行います。デフォルトでは ~/.config/newsboat/urls に存在します。

フィードの追加・削除

URL を追加するには、~/.config/newsboat/urls をお好きなテキストエディタで開いて、一行ごとに URL を追加します:

http://rss.cnn.com/rss/cnn_topstories.rss
http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml

ユーザー名/パスワードを入力しないとアクセスできない URL を追加するときは、以下のようにしてユーザー名/パスワードを指定します:

http://username:password@hostname.domain.tld/feed.rss

ユーザー名とパスワードが流出しないように、~/.config/newsboat/urls には適切なパーミッションを設定してください。

また、Newsbeuter は URL に含まれているユーザー名とパスワードをユーザーインターフェイスに表示しません。ユーザー名に @ が含まれる場合、ユーザー名・パスワードとホスト名を区切る @ と区別が付くように %40 を使ってください。

ローカルのファイルをフィードとして設定することもでき、その場合はローカルパスの前に file:// を付けて ~/.newsbeuter/urls ファイルに追加します:

file:///var/log/rss_eventlog.xml

フィードを削除したいときは、urls ファイルからそのフィードの行を消して下さい。

フィードのタグ管理

全てのフィードにはタグを割り当てることができます。タグ付けすることでフィードのカテゴライズが簡単になるだけでなく、一度に複数のフィードを対象としてコマンドを適用することができるようになります。

通常、~/.newsbeuter/urls ファイルには一行ごとに一つの RSS フィードの URL を記述します。RSS フィードにタグを付けるには、スペースやタブなどの空白で区切って、単語を後ろに付け加えて下さい。タグの中に空白を入れたいときは、タグをクォート (") で括って下さい (下の例を参照)。例:

http://blog.fefe.de/rss.xml?html interesting conspiracy news "cool stuff"
http://rss.orf.at/news.xml news orf
http://www.heise.de/newsticker/heise.rdf news interesting

上記のように設定したら、newsbeuter を起動してから t を押すことでタグを選択できます。"news" タグを選択した場合、3つの RSS フィード全てが表示されます。もう一度、t を押して "conspiracy" タグを選択すると、http://blog.fefe.de/rss.xml?html の RSS フィードしか表示されなくなります。Ctrl-T を押すとタグの選択が解除され、全ての RSS フィードが表示されるように戻ります。

特殊なタグ

フィードのカスタム名称

urls ファイルで特殊なタグを使うことでフィードの名前を定義することができます。タグの名前の前に ~ 記号を付けると、タグの名前がフィードの名前になります。例:

http://rss.cnn.com/rss/cnn_topstories.rss "~CNN Top stories"

上記の設定で "CNN Top stories" がフィードの名前として定義されます。

非表示のフィード

タグの名前の前に ! を付けることで、そのフィードを通常のフィードのリストから非表示にすることができます。例:

http://rss.orf.at/news.xml "!ORF News (hidden)"

非表示フィードのコンテンツはクエリしないかぎり表示されません。

クエリフィード

カスタムフィードは、いわゆる クエリフィード を作成することで既存のフィードから作成できます。クエリフィードと記事を照合することによって生成されるフィードです。クエリフィードは、通常のフィードと同様に、~/.config/newsboat/urls ファイルで定義されます。 構文は次のとおりです:

query:FEEDNAME:FILTER_EXPRESSION [TAG ...]

通常のフィードと同様、クエリフィードには FEEDNAME という名前があり、フィードリストに表示されます。 FILTER_EXPRESSION のフィルター式言語は、newsboat マニュアル で定義されています。 クエリフィードには、通常のフィードと同様に、オプションでタグを付けることができます。フィードのタグ付け を参照してください。

基本的な例

~/.config/newsboat/urls
"query:Example1:age > 1"
"query:Example2:(tags # \"example2\") and (title =~ \"example2\")"
"query:Example3:(rssurl =~ \"example3\") or (total_count > 3)"

最初の例では、1 日以上前の記事をすべて含む Example1 という名前のフィードを定義します。

2 番目の例では、フィードに example2 のタグが付けられたすべての記事を含む、Example2 という名前のフィードを定義します。 記事タイトルが example2 と一致する "および" ここで、#含む 演算子です。

3 番目の例では、フィード URL が一致するすべての記事を含む、Example3 という名前のフィードを定義します。 正規表現 example3 または 3 つ以上の記事を含むフィードの一部であるすべての記事。

ノート: クエリフィード定義は二重引用符で囲む必要があります。したがって、宣言内の他の二重引用符はエスケープする必要があります。

未読の記事

すべての未読記事を含む 未読記事 という名前のフィードを作成するには、次のように定義します。

~/.config/newsboat/urls
"query:Unread Articles:unread = \"yes\""

複数のフィードを 1 つに統合する

クエリフィードは、複数のフィードにコンテンツが分散されているクリエイターをフォローする場合に有効に使用できます。クエリフィードを使用すると、すべてのコンテンツを 1 か所に統合​​できます。

~/.config/newsboat/urls
"query:Metafeed:tags # \"metafeed\""
https://feed.url/1 metafeed !
https://feed.url/2 metafeed !
https://feed.url/3 metafeed !

コツは、個々のフィードに一意のタグを割り当てることです (ここでは metafeed を使用しました) これにより、フィルター式で照合できるようになります。また、個々のフィードがフィードリストに表示されないように、非表示のフィード (各フィードの末尾にある !) を使用します。

特定のフィードのフィルタリング

フィードに表示したくないコンテンツが含まれている場合は、クエリフィードを使用してフィルタリングできます。 たとえば、関心のあるパッケージの更新を監視するには、次のコマンドを使用できます。

~/.config/newsboat/urls
"query:Package Updates:(tags # \"packageupdates\") and (title =~ \"linux [0-9]|newsboat\")"
https://archlinux.org/feeds/packages/ packageupdates !

これで、このフィードには、linuxnewsboat の更新のみが表示されます。

記事を無視する

クエリフィード と同様に、フィードをフィルタリングするもう 1 つの方法は、~/.config/newsboat/configignore-article コマンドを使用することです。次の構文があります

ignore-article FEEDURL FILTER_EXPRESSION

~/.config/newsboat/config
ignore-article "https://feed/url1" "content =~ \"tele(phone|communications)\""                     
ignore-article "https://feed/url2" "title =~ \"text_1|text_2\""

最初の例では、コンテンツが一致する https://feed/url1 内のすべての記事を無視します。 tele(phone|communications)

2 番目の例では、タイトルが text_1|text_2 と一致する https://feed/url2 内のすべての記事を無視します。

無視モード

クエリフィードによるフィルタリングとは対照的に、Newsboat では、ignore-article コマンドに一致する記事をどう処理するかを決定できます。記事を削除したり、表示しなかったりすることができます。

~/.config/newsboat/config
# ignore-mode "download" # Default: Delete them.
# ignore-mode "display"  # Do not show them.

クエリフィードとの比較

純粋なフィルタリングに関して言えば、ignore-article で実行できることはすべて、クエリフィード でも実行できます。

クエリフィードは ~/.config/newsboat/urls ファイルで定義され、ignore-article コマンドは ~/.config/newsboat/config に配置されます。したがって、すべてのフィード関連のものを 1 か所にまとめておきたい場合は、次のようにすることをお勧めします。

ただし、スペースを節約したい場合など、Newsboat が特定の記事をダウンロードしないようにしたい場合は、 ignore-article を使用することが唯一の選択肢です。

設定

Newsboat は、デフォルトで ~/.newsboat/config または ~/.config/newsboat/config にある設定ファイルを介して設定できます。この設定ファイルは以下のような形式で記述されます:

<config-command> <arg1> ...

カラースキーム

パッケージには、/usr/share/doc/newsboat/contrib/colorschemes/ に多数のスキームが同梱されており、次のように include コマンドでロードできます。

include /usr/share/doc/newsboat/contrib/colorschemes/inkpot

追加オプション

設定ファイルにはコメントも付けられます。コメントの先頭には # 記号をつけて、以下行末までコメントになります。空白が含まれた設定引数を入力する必要があるときは、クォート " を使って引数全体を括って下さい。外部コマンドの出力を設定に組み入れることも可能です。バッククォート ` で囲まれたテキストはシェルコマンドとして評価され、その場所にはコマンドの出力が入ります。Bourne 互換シェルのバッククォートと同じように使うことができ、外部の情報を設定の中で使えるようになっています。

設定例は [2][3] を見て下さい。

ノート: 設定コマンドの完全なリストは、newsboat(1) § CONFIGURATION COMMANDS を見て下さい。

ヒントとテクニック

フィードの自動リロード

cronsystemd を使うことで自動的にフィードをリロードすることができます。crontab に行を追加するか、systemd のサービス/タイマーのコンボを作って以下のコマンドを実行してください:

/usr/bin/newsbeuter -x reload

もしくは、以下の設定をすることで Newsbeuter の起動時にフィードを全て自動的にリロードするように設定することもできます:

auto-reload yes

上記の設定をすると、Newsbeuter は定期的に自動リロードを行います。デフォルトでは60分に設定されています。自動リロードの間隔は以下のように設定できます:

reload-time <desired number of minutes>

フィードを並行ロードして更新を高速化する

デフォルトでは、Newsboat は ~/.newsboat/urls 内のエントリを順番に更新しようとします。ただし、次の設定では、一度に n 個ずつ並行して更新されます。nはお好みに合わせて調整してください。

reload-threads 100

記事の URL を外部のコマンドに渡す

外部のコマンドに記事の URL を渡すハックです。newsbeuter で記事を開くときのブラウザを設定する macro を使って他のコマンドのパスを利用して、その後、元の macro に戻します。

例えば、youtube のチャンネルを購読して mpv で動画を開きたい場合、以下のように設定します:

macro y set browser "mpv %u" ; open-in-browser ; set browser "elinks %u"
ノート: マクロを使うときは、まず , キーを押してからキーバインドを押して下さい。上の例の場合、, + y と入力します。

副題

ユーザーが副題を追加してフィードをより効率的に並べ替えることができる、もう 1 つの小さなハックがあります。このハッキングには、次のように偽のフィードを urls ファイルに追加することが含まれます。

---Heading---
ノート: --- 文字はオプションですが、見出しを識別する何らかの文字があるとスタイル設定に役立ちます。

次に、~/.config/newsboat/config に次の 2 行を追加します:

highlight feedlist "---.*---" COLOR_OF_YOUR_CHOOSING default bold
highlight feedlist ".*0/0.." default default invis

COLOR_OF_YOUR_CHOOSINGnewsboat がサポートする色 に置き換えます。

このトリックは、---Heading--- を次のように置き換えることでタグと対話することもできます:

"query:---Heading---:tags # \"Tag\""

次に、見出しの下にあるすべてのフィードに Tag をタグ付けします。

トラブルシューティング

Newsbeuter が起動しない

何もフィードを設定していないと Newsbeuter は起動しません。以下のようなエラーが表示される場合:

Error: no URLs configured. Please fill the file /home/ak/.newsbeuter/urls with RSS feed URLs or import an OPML file.

#フィードの管理 を見て URL を追加してください。

上記が問題ではない場合、おそらく newsbeuter の別のインスタンスが実行中です。Newsbeuter はデータベースにロックをかけるため一度にデータベースにアクセスできるインスタンスは一つのみとなっています。そのため、インスタンスを2つ開こうとしてもできません。

参照