Skip to content

seriwb/reins

Repository files navigation

CircleCI Coverage Status

reins

Twitterアカウントのタイムラインやリストのツイートから画像を含んだツイートの情報を取得し、 定期的に画像をダウンロードして保存してくれるツールです。

使い方

  1. Java SE 8をインストール
  2. releasesからzipファイルを取得し、適当な場所に展開
  3. 必要に応じてconf/config.txtの値を調整
  4. 画像取得対象のリストを選びたい場合は、conf/allow.txtにリスト名を追加
  5. 画像取得対象外のリストを設定したい場合は、conf/deny.txtにリスト名を追加
  6. コンソールからreins-0.3.5.jarがある場所まで移動し、以下のコマンドを実行
java -jar reins-0.3.5.jar

しばらくするとdirディレクトリ配下にダウンロードファイルが保存されていきます。 もう後は画像を見ること以外にやることはありません!ラクチン!!

プログラムは挙動がおかしいと感じるまで動かしたままで大丈夫です。 ダウンロードされてないように感じた場合は、お手数ですが一度終了させて再度起動させてみてください。

終了させる場合は、コンソール上でCtrl+Cを入力してください。

データをリセットしたい場合は、dbディレクトリを削除し、再実行してください。
特にreinsのバージョン(メジャーX.0.0、マイナー0.X.0)を上げる場合は、一度dbディレクトリを削除する必要があります。

詳しくはこちらを参照してください。

動作環境

  • Javaが動作するOS(Windows、Mac)
  • JRE : 1.8 以上

ここがすごい!

  • リスト毎、ユーザー毎に画像を保存するので見やすい!
  • リツイートのデータも、リツイート元のユーザー名ディレクトリに画像を保存するので、 お気に入りのユーザーの開拓が捗る!
  • 保存した画像ファイル名から元のつぶやきがたどれる!
  • 画像取得対象とするリストを設定できる!

現在の制約

rate limit対策が不十分

sleepでwaitしているだけなので、reins.tweet.waittimeをデフォルト値よりも小さくした場合、 Twitterさんに怒られる可能性があります。 デフォルト値の場合は、1時間動かしていてもrate limitに引っかかることがなかったので、 特に理由がない限り変更しない方がよいです。

今後の予定

  • ログインアカウントに絞った画像取得
    • ログインアカウントのツイート、RT、お気に入りから画像を取得
  • Pixivリンクの一覧化と画像取得
  • Instagramのデータ取得
  • GUIツール化

リリースノート

0.3.5版

バージョン0.3.5では以下の変更を行いました。

  • 特定リストのファイルが多くなると、ダウンロードに失敗する不具合を修正

0.3.4版

バージョン0.3.4では以下の変更を行いました。

  • 140文字制限拡張のツイートに対応
  • コマンド入力受付開始のメッセージを表示

0.3.3版

バージョン0.3.3では以下の変更を行いました。

  • タイムラインの画像取得に対応
    • オプションで選択可能です。以前の動作にする場合はreins.timeline.targetの値をfalseにしてください。
  • リストの画像取得の有無をオプションで設定可能に変更
  • 不要なログ出力を抑制し、その他必要なログを追加で設定

0.3.2版

バージョン0.3.2では以下の変更を行いました。

  • 画像取得の対象、または対象外とするリストが設定可能(ファイルの文字コードはUTF-8)
  • 異常終了したスレッドの自動復帰
  • コンソールに出力するログレベルをINFOからERRORに変更
  • 設定ファイル名をConfig.groovyからconfig.txtに変更
  • 取得する画像のサイズをlargeからorigに変更

0.3.1版

バージョン0.3.1では以下の変更を行いました。

  • 最新のTwitterAPIに対応
  • reins.tweet.maxcountのデフォルト値を100に変更
  • reins.loop.waittimeのデフォルト値を600(s)に変更

最新のTwitterAPIに対応

Twitter公式以外の画像URLの取得先変更に対応しました。

reins.tweet.maxcountのデフォルト値を100に変更

30回ページングを行うため、100の場合は1リストにつき3000Tweetを取得します。

0.3版

バージョン0.3では以下の機能追加、バグ対応を行いました。

リツイートの取得に関する動作変更

リツイートの取得有無を選択できるようになりました。
reins.retweet.targetをfalseにすることで、リツイートを取得しなくなります。

また、リツートの画像はリツイートしたユーザのディレクトリ配下のrtディレクトリに ユーザごとに分けて保存されるようになりました。

以前の動作にしたい場合は、reins.retweet.separateの値をfalseに変更してください。
リストのディレクトリ直下にリツイートのユーザのディレクトリも作成されます。

コマンド機能の追加

reinsを実行中のプロンプトで以下のコマンドが実行できるようになりました。

  • url 画像がつぶやかれたTweetのURLを取得する。(-oオプション:ブラウザでURLを表示)

画像がつぶやかれたTweetのURL取得

以下のコマンドを入力することで、指定した画像がつぶやかれたTweetのURLが取得できます。

url 画像ファイル名

さらに-oオプションを追加することで、デフォルトブラウザによるページの表示が可能です。

url -o 画像ファイル名

軽微な改善

  • Twitterの画像ファイルはlargeを指定して取得するように変更
  • logファイルにダウンロード画像のURL情報が、INFOで出力されるように変更
  • 本質でないログの出力抑制
  • Reinsのリファレンスを作成

バグ対応

以下のバグに対応しました。

  • 複数画像があるツイートから先頭の画像しか取れていなかったのを修正

プログラムガイド

ビルド手順

Gradleのbuildタスクを実施してください。

gradle build

プログラムの実行

以下のクラスに含まれるmainメソッドを実行してください。

/reins/src/main/groovy/box/white/reins/Main.groovy

※System.inを入れてからgradle runは正常動作しなくなったため、gradleからの実行はできません。

ビルド環境

  • JDK : 1.8.0_144
  • Groovy : 2.4.12
  • Gradle : 4.4.1

License

MIT License