Twitterのアイコンをランダムに変更するスクリプト
2017年最初の月ももう終わりですね。皆さんいかがお過ごしでしょうか。
私は毎日しんどいしんどい言いながら死んだ目で接客してます。
一体どこの層に需要があるのかわかりませんが、タイトルの様なものを作ったので公開します。
これなに珍百景
アイコン用画像フォルダにぶっ込んである画像からランダムでアイコンを変更します。
"/change_icon"のリプライをトリガーに動作します。
いままでTwitter連携アプリはTwitter gem一本を使ってたけどなんだかTweetstream Gemのほうがよさげなので併用。
ちなみにきっかけは、TwitterGemでは「誰がどれかをツイ消しをした」というところまでしか取得できないのに対しstreamのほうは「誰がどのツイートを消した」というところまで取得できることを知ったため。とはいっても降ってくるのはツイのidなのでどっちみち消えた物は見れないけど。
リプライの判定が
/^@TwitterID ¥/change_name/
なので(要は前方一致)、以降は何が書いてあっても無視します。つまりこれを利用して連投規制回避ができるということ。うるさければ完全一致にして弾いてもいいと思う。
どっかのアホに毎秒アイコンを変えられてTLがすごいことになったのでレスポンスも任意でいいと思います。でもレスポンスないと変わったのかどうかわかりにくいところあるよね。
また、TwitterのAPI制限が大きく変わってから今の仕様をよくしらないのでどれくらいの頻度でアイコンを変えられるのか不明。ほどほどに。
#coding: utf-8 require 'twitter' require 'tweetstream' #Ck/Cs CONSUMER_KEY = "ぴゅぴゅんって飛び出した" CONSUMER_SECRET = "明日も追い越して" ACCESS_TOKEN = "ときめきポポロン♪って" ACCESS_SECRET = "きらめきの音が響く" #TL取得用 TweetStream.configure do |config| config.consumer_key = CONSUMER_KEY config.consumer_secret = CONSUMER_SECRET config.oauth_token = ACCESS_TOKEN config.oauth_token_secret = ACCESS_SECRET config.auth_method = :oauth end #画像変更/投稿用 REST_client = Twitter::REST::Client.new do |config| config.consumer_key = CONSUMER_KEY config.consumer_secret = CONSUMER_SECRET config.access_token = ACCESS_TOKEN config.access_token_secret = ACCESS_SECRET end Streaming_client.on_inited do puts 'TL Connected.' end icons = Dir.glob("アイコンをぶち込んであるディレクトリ/*") Streaming_client.userstream do |obj| if obj.class == Twitter::Tweet && obj.text =~ (/^@Twitter_ID \/change_icon/) icon = File.open(icons.sample) #iconsから一つランダムに取得 REST_client.update_profile_image(icon) REST_client.update("@#{obj.user.screen_name} Done. #{Time.now}", options = {in_reply_to_status_id: obj.id}) end end
私はこれにアイコンリセットコマンドを追加してます。また、指定されたアイコンに変更したりする機構も付けたいのでそのうち。
にしても自分用に他の機能も付けてるとはいえ120行あったスクリプトを公開用に整理したらここまで短くなるの何も言えねえな。