これは、ホームタイムラインから人気のあるMastodon投稿のダイジェストを生成するPythonプロジェクトです。ダイジェストはローカルで生成されます。ダイジェストには、フォローしているユーザーからの投稿とフォロワーからのブーストの2つのリストが表示されます。各リストは、サーバー側のコンテンツ フィルターを尊重し、まだ操作していないコンテンツを識別することによって作成されます。ダイジェストは、Web ブラウザーでローカルに自動的に開かれます。ダイジェストアルゴリズムは好みに合わせて調整できます(コマンド引数を参照)。
Dockerまたはローカルの Python 環境で実行できます。ただし、最初に環境を設定します。
ツールをローカルで実行する前に、.env.exampleを .env (git では無視されます) にコピーし、関連する環境変数を入力する必要があります。
cp .env.example .env
MASTODON_TOKEN: これはアクセス トークンです。ホームインスタンスの [設定] > [開発] で生成できます。トークンに必要なのは読み取りアクセス許可のみです。
MASTODON_BASE_URL: これは、Mastodonホームインスタンスのプロトコル対応URLです。たとえば、もしそうなら、あなたは設定します。
@Gargron@mastodon.social
https://mastodon.social
MASTODON_USERNAME: これは、ホームインスタンスの Mastodon アカウントのユーザー名です。たとえば、もしそうなら、あなたは設定します。
@Gargron@mastodon.social
Gargron
まず、イメージをビルドします。
make build
次に、ダイジェストを生成して開くことができます。
make run
コマンド引数を渡すこともできます。
make run FLAGS="-n 8 -s Simple -t lax"
まず、環境変数が設定されていることを確認します。
set -a
source .env
set +a
あなたのPython3環境内から、単に:
pip install -r requirements.txt
マストドンダイジェストは、次の方法ですぐに生成できます。
python run.py
ダイジェストはデフォルトで書き込まれます。その後、選択したブラウザで表示できます。
render/index.html
アルゴリズムを調整するために、いくつかのコマンド引数を使用できます。コマンド引数は、フラグを渡すことで確認できます。
-h
python run.py -h
usage: mastodon_digest [-h] [-n {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24}] [-s {ExtendedSimple,ExtendedSimpleWeighted,Simple,SimpleWeighted}] [-t {lax,normal,strict}] [-o OUTPUT_DIR] options: -h, --help show this help message and exit -n {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24} The number of hours to include in the Mastodon Digest (default: 12) -s {ExtendedSimple,ExtendedSimpleWeighted,Simple,SimpleWeighted} Which post scoring criteria to use. Simple scorers take a geometric mean of boosts and favs. Extended scorers include reply counts in the geometric mean. Weighted scorers multiply the score by an inverse sqaure root of the author's followers, to reduce the influence of large accounts. (default: SimpleWeighted) -t {lax,normal,strict} Which post threshold criteria to use. lax = 90th percentile, normal = 95th percentile, strict = 98th percentile (default: normal) -o OUTPUT_DIR Output directory for the rendered digest (default: ./render/)
Dockerとmakeで実行している場合は、次のようにフラグを渡すことができます。
make run FLAGS="-n 8 -s Simple -t lax"
-n: ダイジェストを作成するときに振り返る時間数。これは 1 から 24 の整数にすることができます。デフォルトは12 です。朝は12作品、夕方は8作品がうまくいくことがわかりました。
-s:使用するスコアリング方法。[シンプル加重] がデフォルトです。
Simple:各投稿は、ブーストの数とお気に入りの数の修正された幾何平均でスコアリングされます。
SimpleWeighted:と同じですが、すべてのスコアに作成者のフォロワー数の平方根の逆数が乗算されます。したがって、非常に多くの聴衆を持つ著者は、より高いブーストとお気に入りの数を満たす必要があります。これがデフォルトのスコアラーです。
Simple
ExtendedSimple:各投稿は、ブーストの数、お気に入りの数、返信の数の修正された幾何平均でスコアリングされます。
ExtendedSimpleWeighted:と同じですが、すべてのスコアに作成者のフォロワー数の平方根の逆数が乗算されます。したがって、非常に多くの聴衆を持つ著者は、より高いブーストとお気に入りの数を満たす必要があります。
ExtendedSimple
-t: 含めるスコアのしきい値。標準がデフォルトです
lax: 投稿は90パーセンタイル以内のスコアを達成する必要があります。
normal: 投稿は95パーセンタイル以内のスコアを達成する必要があります。これはデフォルトのしきい値です。
strict:投稿は98パーセンタイル以内のスコアを達成する必要があります。
私はまだこれらを試しているので、将来デフォルトを変更する可能性があります。
おそらく多くのこと!
このリポジトリにはテストがないことに気付いたでしょう。それは私がまだこれをおもちゃとして扱っていて、仕事ではないからです。しかし、テストは良いかもしれません!
私はまだ新しい興味深いアルゴリズムを組み込むための最良の構造/プロセス/何かについて考えています。多分私はそれに時間を費やすでしょう、多分そうではありません。
私はこれをインテルとM1のmacOSマシンでテストしました。私はそれが他のアーキテクチャやオペレーティングシステムで動作すると信じていますが、私は試していません。GUI Web ブラウザーの可用性は重要です。
このプロジェクトは@MattHodgesによって管理されています。
悪ではなく、善のために使ってください。