LoginSignup
3
2

More than 5 years have passed since last update.

Twitterで100万円キャンペーンの集計

Posted at

あけましておめでとうございます。
お金持ちの人のアカウントをフォロー&RTすると100万円!というキャンペーンがが流行りの2019年ですね。

1億円を配りたくなった、配りたい人なんとかしてくれと言われた人用に記事を書いてみました。
もしそんな方のお役に立てたなら当選者の1人として扱っていただければ幸いです。

以下のような条件のキャンペーンをやること想定で書いています。Twitter APIでこれをどう実現するかという内容が主です。

キャンペーン概要

  • 特定のアカウントがキャンペーン参加用のツイートを投稿する
  • 参加者は該当アカウントのフォロー状態となり、上記のツイートをRTする
    • 参加用ツイートの指定期間外のものは無効とする
  • 参加者の中から 抽選で100名を選び当選者とする

- 当選者にはDMを送信し当選物の受け渡しについての調整を進める。落選者には何も連絡なし

まずはシステムを使わないでカジュアルにばらまくパターンです。

1.システムなんて無用。人力で十分ですよパターン

  • RTの通知欄を無作為なタイミングで当選者数以上の3〜5倍の確認し、その時最も最新でRTしていた人のアカウントを記録する
    • キャンペーン終了後、収集したアカウントをランダムで並び替え、DMを100人に送るまで以下を行う
      • 当選者の上から順にフォロー状態をチェックし、フォローをしていたら当選のDMを送る
    • フォローをしていなかった/外された、ユーザーが消える可能性があるのでバッファで3倍〜5倍の人の数を集めるとしています

2.API使って事前に準備をしておいて集めるパターン

  • 去年UserStreamが抹殺された今、リツイートの収集はAPIでやる限り4パターンしか方法はありません
    • Account Activity API
      • 最近のTwitter APIの闇その1です。2ももちろんあります。
      • APIをこういう目的で使うよという申請文を書き、あまりそれをよく読んでない審査官のチェックをくぐりぬけたもののみが使える選ばれしもののAPIです。個人の1フォロワーのアカウントで5回申請しましたが最終的に全滅でした。。
      • 基本的にAPI保持ユーザーに関連したイベントはだいたいとれます。RTももちろんとれます。
    • 検索API
      • 5秒に1回最大100件取得できるので、5.25秒ごとくらいのインターバル(経験則的にAPIのレスポンスはだいたい平均0.2〜0.3秒くらい)で検索をかける。参加用ツイートへのツイートしかでてこないようにクエリを調整する。
        • 例: RT @campaignakaunto 100万円です
      • おそらくすごいペースでRTされるので検知の漏れはかなり発生するのですが、まずはここから運試しということです
    • Filter realtime Tweets
      • Streaming APIの生き残りです。検索と同じようにクエリを指定してリアルタイムなRTイベントを受け取ります
      • 検知数の制約がないのでこちらのほうが検知の漏れが少ないです
    • Firehose
      • これだけ使ったこと無いの正直よくわからないのですが、年間100万ドル以上払うとツイートの全量データがもらえるらしいです
      • 別の会社を通して手に入れると100万ドルもしないかも
      • いずれにせよこれ使う金があったらもっとばらまいた方がいいと思います

開催後に集計を始めなければいけなくなった場合

  • 集計をはじめる前の人は全員落選!とするのがぶっちゃけ一番楽なのですが、機会の平等のためそれはなしとします
  • 以下手順でフォロワーのユーザーIDを集めた後、参加用ツイートを集めているかをチェックします
    • フォロワーのユーザーID取得でフォロワー全員のIDを取得
    • 取得したIDをランダムに並べ替え、特定ユーザーの概要情報取得で取得したフォロワーを上から100人ずつ見ていき、参加用ツイートをRTしているかチェックする。
    • このAPIで取得したユーザー情報には最新のツイートも含まれているので、RTの有無もだいたいチェックできます
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2