Gift history
Please access after login.
Wait a moment...
695
0
2021-10-13 19:23:42
51000 mXYM
( 2)
はじめまして&いつもありがとうございます、えすくまくん(の中の人)です🐻
今更ですがハンドルネームは
りょーちゃん です。気軽に
りょーちゃん と呼んでください、すぐ懐きます。
今日これだけは覚えて帰ってください、よろしくお願いします。
絶賛稼働中のえすくまくんシステムでは
毎日朝/夜9時に仮想通貨Symbol(XYM)の価格を画像付きでお届け しておりますが、これを毎日手作業でやるとなると...
それはもうとんでもなく大変 で長く続けていられません。想像しただけで眩暈がしそうです🙄ヒィン
プロ野球選手のほぼ100%が毎日睡眠をとっているように、
ITエンジニアのほぼ100%が「面倒なことはプログラムにやらせたい」と日々悶々としています 。そこで今回は
"めんどくさがりだけどやることはやりたい" 、そんな
ずぼらストイック志向 なあなたへ
Twitterへ画像付きツイートを自動投稿する仕組み についてサンプルコードを交えつつご紹介していきます。
自動投稿するbotを作成したかったので
TwitterAPI の申請を行いました。
いきなりですがここが最難関です 。内容もさることながら
延々と英語を読み進めるのが心理的にかなり重たい です。
効率の良い英語学習について知見をお持ちの方はコメント欄でご教示頂けますと幸いです。 申請方法はこちらの記事でとても丁寧に解説してくださっているので参考までに。
【2021年版】TwitterAPIの申請・APIキー発行方法!ツイッターボット作成に必要な手順を解説 ---------------------------------------------------
特にしんどいのは
利用目的等を記入するステップ です。
下記4点について回答していきます(各200字以上)。使わない項目について記入する必要はありません。
1. Are you planning to analyze Twitter data? (ツイッターのデータを分析する計画はありますか?) 2. Will you app use Tweet Retweet, Like, Follow, or Direct Message functionality? (あなたのアプリはツイートやリツイート、いいね、フォロー、DM機能を使用しますか?) 3. Do you plan to display Tweets or aggregate data about Twitter content outside Twitter? (Twitter以外のTwitterコンテンツに関するツイートや集計データを表示する予定はありますか?) 4. Will your product, service, or analysis make Twitter content or derived information available to a government entity? (あなたの製品・サービス・分析によって、ツイッターのコンテンツや派生情報を政府機関が利用するようになりますか?) えすくまくんシステムでは
とりあえすツイートができればよかった ので
2. のみ回答しました。
↓
さらにその後Twitter本社からAPI利用に関する詳細確認メールが届くのでこちらにも返信します。
回答は実際に私が返信した内容です。 ・If your use involves Tweeting, Retweeting, or liking content, share how you will interact with Twitter users or their content. (ツイート、リツイート、またはコンテンツのいいねを使用する場合は、Twitterユーザーまたはそのコンテンツとどのようにやり取りするかを共有してください。) 回答: Run the Python script you created with AWS lambda and tweet it. The body of the tweet will be created in the Python script, and the images to be attached to the tweet will be those prepared in Amazon S3 (storage service) beforehand. The parameters required for tweeting, such as API Key and Access token, are scripted to be obtained from AWS Systems Manager (users other than myself will not be able to view each parameter). 「Twitterユーザーまたはそのコンテンツとどのようにやり取りするか」は
具体的なシステム処理の部分まで踏み込んだ内容を書くまで納得してもらえませんでした。。 ・The core use case, intent, or business purpose for your use of the Twitter APIs.Please note, “business purpose” in this context includes uses not necessarily connected to a commercial business. We require information about the problem, user story, or the overall goal your use of Twitter content is intended to address. (Twitter APIを使用するための主要なユースケース、意図、またはビジネス目的。この文脈での「ビジネス目的」には、必ずしも商業ビジネスに関連するわけではない用途が含まれることに注意してください。問題、ユーザーストーリー、またはTwitterコンテンツの使用が対処することを目的とした全体的な目標に関する情報が必要です。) 回答: "To implement a social network posting system using Python". I'm a self-taught coder who recently started learning how to code. I would like to deepen my understanding of Python and APIs by building such a system as part of my learning. The background of the project is just to improve my skills through building the system. 4往復くらいしてようやく納得してもらうことができました。
本当は1. の分析もやるつもりで申請出したのですが、"可能な限り詳細かつ網羅的な説明を提供してください" とのこと。。 詳細な設計までは決めていなかったので納得してもらえないだろうなということで一旦諦めました。。 Twitterはポリシー等かなり厳しい のでこの辺りにはきちんと目を通しておきましょう。
Developer Agreement and Policy Automation rules The Twitter Rules メールでの詳細確認を終え無事申請が通ると以下のようなメールが届きます。
長かった。。 送られてきたリンクから
Developer Portal へログインできます。
プロジェクトを作成し、下記4つのパラメータを生成/メモしておきましょう。
・API Key ・API Secret Key ・Access Token ・Access Token Secret
APIキー等をLambda関数のPythonスクリプトにべた書きするのはセキュリティの観点でよろしくない ため、各種パラメータは
AWS Systems Manager で管理することとしました。
AWSマネジメントコンソールから「
Systems Manager 」と検索し、パラメータストアから上記4つのパラメータをひとつずつ登録していきます。
「パラメータの作成」 から
・名前:登録するパラメータの名前 ・利用枠:標準 ・タイプ:安全な文字列 ・値:Developer Portalで作成したパラメータ 登録後はこのようになります。
※私は別用途で使用するためbearer_tokenを登録していますが、今回のツイートには使用しませんので無視してください。 Pythonスクリプトからパラメータを取得するサンプルはこちら↓
ちなみにCK = Consumer Key、CS = Consumer Secretです。
添付用に加工した画像はS3に保存しているためそちらから呼び出す方法も考えましたが、Twitterでは画像ファイルとしてうまく表示できないようでした。細かい部分で地味に引っかかりますね。。
Amazon S3に置いた画像ファイルがTwitter, Facebook, Chatwork, Slack, Discordでどう展開されるか試してみた えすくまくんシステムでは画像投稿手段として
こちらのAPI を採用しました。
使用するパラメータとして
media_data (base64エンコードしたもの)を選んだのは
単に馴染みがあったから なので、バイナリファイルでも構いません。
base64変換する対象はOpenCVおよびPillowで加工しLambdaの/tmp ディレクトリに格納した画像です。
えすくまくんの画像加工 についてはこちらの記事で詳しく解説しております。
【サンプルコード付き】OpenCV+Pillowを利用してAWS Lambdaで画像を加工する(文字入力、色変更、フォント変更) はじめまして&いつもありがとうございます、えすくまくん(の中の人)です🐻前回えすくまくんシステムで配信中の画像デザインについてご紹介しましたが、今回は実際に画像加工で利用しているPythonライブラリ「OpenCV」「Pillow」について、基本的な使い方やAWS Lambdaで実装する際に躓いた話を中心にお届けします。... 続きを読む
いよいよツイートの作成です。
Twitterオブジェクトを生成し、投稿したい文章と画像を組み込んでいきます。
画像は一度メディア用エンドポイントにアップロードしてmedia_idを取得してからくっつける流れとなります。
※TwitterAPIには v2 というバージョンがありますが、リファレンスをサラッと眺めたところだとこちらはデータ取得や分析用途に比重が寄っているようです。
えすくまくんシステムで利用しているツイート部分のソースコード(一部加工済)はこちらです。
---------------------------------------------------
最後まで読んできただき、ありがとうございます!
今回は
Twitterへ画像付きツイートを自動投稿する仕組み についてサンプルコードを交えてお届けしました。
Systems Managerからパラメータを取得する部分 なんかは開発シーンでよく利用されているメジャーなものなので、押さえておくと役立つ機会もありそうです。
TwitterではSymbol(XYM)やプログラミングに関する話題を投稿しています。
ぜひフォローよろしくお願いします! それではまた!
Previous and Next articles
Writer
コミュニティ発Symbol Walletアプリ【EXYM】を開発しています。
またTwitterで毎日XYM価格を画像でお届けする【えすくまくん】を育てています。
NEMLOGでは主に開発に関するトピックを扱っていきます。
Symbolアドレス:NCJNZYDNJSWKTTOV66F6WOQ76ON2WBS2Q4452NI
https://symbol-sakura-16.next-web-technology.com:3001,https://symbol.harvest-monitor.com:3001,https://hideyoshi-node.net:3001,https://harvest-01.symbol.farm:3001,https://criptian-xym-node.net:3001,https://35665.xym.stir-hosyu.com:3001,https://yuna.keshet.finance:3001,https://cryptocat-xym-node.com:3001,https://misaki-xym.com:3001,https://ik1-305-12844.vs.sakura.ne.jp:3001,https://17107.xym.stir-hosyu.com:3001,https://23639.xym.stir-hosyu.com:3001,https://sym-main-01.opening-line.jp:3001,https://sym-main-02.opening-line.jp:3001,https://sym-main-03.opening-line.jp:3001,https://sym-main-04.opening-line.jp:3001,https://sym-main-05.opening-line.jp:3001,https://sym-main-06.opening-line.jp:3001,https://sym-main-07.opening-line.jp:3001,https://sym-main-08.opening-line.jp:3001,https://sym-main-09.opening-line.jp:3001,https://sym-main-10.opening-line.jp:3001,https://symbol-node-01.kokichi.tokyo:3001,https://50038.xym.stir-hosyu.com:3001,https://27423.xym.stir-hosyu.com:3001,https://angel.vistiel-arch.jp:3001,https://xym.stakeme.tokyo:3001,https://00-symbol-node.yagiyoshi.com:3001,
6BED913FA20223F8,051FAEC15105C808,73019335A785A3AE,5289A9B0DBB7EB25,6B245EAF1302E444,2C4A4893229DD0A9,63509D495CAD7B80,481D74291A71FD1F,009388A38C91A8B2,4E94920841641B77,027C6AD49DE2C9F9,29FCA5D3092205EC,56085AD9FCE150AC,7D47EE5423795E68,1FCD7C6B47C7AC5C,34F165131675B97B,2277A3D3C939E3BD,1BEE7E51C52B9E4C,7DE0FA227D5C284A,69C715D2F4E80338,5CF9D768B02E51EA,5B96E6496754C18E,35584939456EE19C,430AB6F115D709C5,202FC8C6762F1286,1DA6F5986C56CAB4,77F0C0918BDDCA75,05D935AB3DBBBDA7,3AB05B7B3373067F,383EEBD409479BDD,282E5F730EEF0F3C,108AFF21E54B77EB,0C4AAE8E82E054FD,18964001EF89D687,15BDE2DDF36FE763,01E2769C92FFB187,427C7F0474B2170B,3F2EEE17968715D5,6C0AFBA20EEBF08B,22975F2097F16D15,2A30D04FF35E8641,03ACEC4F51A71804,5235C4249928922B,2BFEB24F70B91041,741320E728843965,7C4E97850A863208,0586FF7E5ED1C680,606432C50BDE4EB5,15A6AD5E5ED6AC0E,59932634EDBF2A21,5E4F05ED77C64434,71C79278A325FF67,616EC15DE7D641A0,25C2DAB4FE687CBE,3D78B91922741293,5DC4B8DCDC4D3098,2693037B1881D5FA,178FE008F5DCE797,174A93DA9B651FBD,128B2CD071838D3E,1F5630200C5A6025,43449FF761B3DD67,4B20F46C289CA548,35DBA0A70A96615F,78CE44A425CD4514,37179FDE046FE7F2,1739E47C99BAF114,0F3B4A0F2E58703B,3C41561BE3DF7461,2AF0FBFEBF29231F,74CD75720BA4F553,1A5229DC90802C6C,0D2888CD0CBB78EE,2558F02FE439C78F,5DDD07C51EC896A7,437B094116B91BF3,6C9E7CFE33220C8F,38E1C92F412FCA96,2FB263845F59AF82,28C3C38B84138804,659821D4511185A7,7C6095DA82D3E981,70ADA95932385F9F,0BE6C51AD316BF2B,78E6ED1B6C05FD98,39534A8DFD9C0F1E,1BAF1FE1AAF90CD0,6782B8D9162D0C12,5EF22919F6EA15F7,04A3F3F5C088626A,7484B044AC8EF734,305B0ECE763A1E81,08738DB598D0BA37,6F4018163AC51F88,46650CE0C72739A8,0208FCB9186781E5,4E685399C9F8C991,77DB7D348B042A18,578ED7B270B43E64,0B34212023AA5139,479CEDAEE6FAC642,4266458B86437B4B,1F7022D092066B94,0CA28E24CB575AA6,4DCC3C025CDC0BB8,1BD05266C7410EE1,45C46BC710C187AF,7CC2C672543CA102,555BA3719D30D3B9,75C4079CCCCF3E82,66C98D947EAC56FB,1C041AB88A8D222B,79C13E9FE7DA49AB,54D872B5DB378F52,5C97B2414157B039,31E7A64CFF778586,1DFD11EEDA4662C4,18506C180280D8AB,02E95DB8811B3F7A,2D289599AF071703,17EA80052AF590B0,5239AE78AA9011CC,6B6511925501765B,2730974F2D11E9FA,08AB4E53E95E417E,1D0DD379C8C4BA49,26EE7E07E1255FAB,015FABE3F602FA91,366D7D6540335156,2D1E8E73B9F09391,043694AD272BCEBA,064335A213099492,3C40AE05D9758591,71C4BCA24A2FA6C1,20170ABD32244B78,74EBE4C9FD9C3BC8,713583F712D574FA,7C05BBBD486CF544,634D5A328A659C41,2DA0EC8CA32B7CE6,4D0ECC9F6F70D67D,7426EE72B3DFD620,3C3E58B64A8CD43C,5007CF79DF192FB2,1531F39F1B0AA8C3,5D1E928E7902404F,74599424DE012A19,52F96AC0043B02D8,0C694031CFC22C84,03D6EE58174D16DD,054B071E97323D54,2B58942A0A9D3908,7FE10DF86F32776F,1A08F9B88AE4CCF9,03CB7A99E6F6F65A,2F0BAAAD886013B2,7D8FF6C570E909C3,237ACBD2073D7C22,29498519D19B27CF,03E85F9F15A92D27,62B4F899B6DADDFF,6649A6F82740775E,1FA7CAD8017C3045,5FFB7126DD87CC5B,07039874D46F8B44,3391DD8105AD0C82,56C97E544EA9C149,6103DBFFA022249B,41E9771D99FF96A5,65CF7BE26FC7BF56,789063B9FDA7D02B,3EE026A17E4D1895,44B13D3F4EEB8AC9,248AAD9D9E2C1984,0CEDE2DEDDB4832F,5DFE51E2C6617CA4,4FAE3B092339A328,03B7E30D264E586B,3B5B8D2389EEB8C9,0058930348E8DA39,43C44AE173D50661,16E0B9B56763A2A6,43B05E6CCD87A765,33276E3A53106C11,24F35BCEA31E9AFB,49320DB27BA10BF5,01B69528B052EFA3,21C3025E1B2B9D3C,613FFCD9027A73D9,79A5BC34AE8B6314,35BFF98EA19690D4,156CDDD2D6791814,6E4E5A6C8F1ECA31,21BCF4CD26C307FF,15F6E07EAC6D5186,71A24162BA611651,0EDC8542160D8DAA,771BAE5451E881A8,1E47CA21337876B5,7688DC299D77C545,1166391DB32354A4,6A0AF7328EBBE113,38E48122C0FC8BCF,484874B2C669D6E1,4EF142A5D00BDA63,0508049897379E24,50B28C0858AE222C,75F2674CEE45E919,2F0DC3D306469BF9,5A86884742F89C7F,78F0F31776134860,1576EB985E541EA9,17D9C6FCB4FAB2A0,6B2E9EAF2632AEC8,007050CE9F59E77C,5D88028B3A9E633A,554191B46C16E4C4,5A0E1268E65E99F2,41A67647778AEA4D,7EADDBC2119EADA0,3D4235EB6FC9247D,5D25658948613563,5629D816678CF8FC,48A147A7F34C0131,46DF1D828736AFE1,748D83A906C897E4,0708BF363BA9595A,58384D5F0D793C09,531A0934DE43FBAC,1C4EEB7AD6B44AF4,383B57EBD5272C12,41F8077951D07ADF,0F52B4D356FDA824,1FE0805A112A03DF,38E8FFDFCD6510FF,0F65746CB1D7AD53,1E9E3010A1412DDB,7401A59C5DBD66A4,5FDC6383C702EC40,3B97B8CA49739205,