Github Actions + Tencent Cloud 機能により、WeChat プッシュ天気、授業スケジュール、授業リマインダー、おやすみメッセージを毎日実現

序文:

最近、dy が非常に人気のある小規模プロジェクトであることを知り、WeChat 公式アカウントのプッシュについて知りたいと思っていました。他の人のプロジェクト (天気だけがプッシュされ、原作者は謝罪するのを忘れていました!) に基づいて、私自身のニーズをいくつか追加しました。 1. 毎日天気がプッシュされると、その日のコースがプッシュされます。 2.次の授業がある場合は授業前にプッシュリマインダー; 3.毎日のおやすみの心のこもった言葉と次の日へのコースプッシュ。

実装原則:

当初は毎日の天気プッシュのみでした (1 日に 1 回定期的にプッシュするだけで済みます) 実装は非常に簡単で、GitHub Actions を使用してスケジュールされたワークフローを作成するだけです。
需要が増加した後も、元のアイデアは変更されず、GitHub Actions を使用してワークフロー複数実行プロジェクトを作成すると、「おやすみの言葉」が押されて終了するまでプログラムが実行され続けるようになります。ただし、GitHub Actions には 2 つの致命的な制限があります: 1. プロジェクトを 1 か月に実行できる合計時間は通常 2000 分であり、プログラムは実行を続けるとすぐに時間が足りなくなります。2. 毎日のプッシュ時間を 7:40 に設定した場合、GitHub Actions は実行のためにキューに入れられるため、ピーク時間帯の場合、プロジェクトの実行が遅れます (通常、20 ~ 40 分遅れます)。 2 番目の点は、時間厳守のニーズを直接否定します。
GitHub Actions でワークフローを手動でトリガーすると、リアルタイムで実行されることに注意してください (このプロジェクトのデプロイ時間は通常約 50 秒です)。したがって、Tencent Cloud Function のタイミング機能を使用して GitHub Actions のワークフロー ファイルをトリガーすることで、問題は変わり、国を救う曲線を達成できます。
Tencent Cloud機能のタイミングトリガー機能を使用すると、毎日のプログラム設定のリマインダー、各クラスのリマインダー、毎日のおやすみリマインダー時間の2分前にアクション内のワークフローファイルをトリガーするだけで、時間制限を完璧に解決できます。 GitHub Actions の遅延とタイミング遅延。

1. 準備条件:

1. GitHubアカウント、登録アドレス(https://github.com/)

2. WeChat パブリック プラットフォーム アカウント、登録アドレス(https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)

3. Tencent Cloud Function アカウント、登録アドレス(https://cloud.tencent.com/)

4. Tianxingデータアカウント(おやすみハートワードの内容を取得するために使用)、登録アドレス(https://www.tianapi.com/)

第二に、効果図の実現

1.毎日のリマインダー

毎日のリマインダー

2. 授業のリマインダー

授業のリマインダー

3. おやすみの心のこもった言葉と次の日のレッスンのリマインダー

おやすみの言葉

3. 手順

1. GitHub プロジェクトをプルする

ウェアハウス内のプロジェクトを
自分のウェアハウスの GitHub プロジェクト アドレスにフォークします: https://github.com/ghwmx/WeiXinPost

2. プロジェクト内の構成ファイル config.py を変更します。

設定ファイルを変更する
ここに画像の説明を挿入

3. WeChatパブリックプラットフォームの関連設定、WeChatパブリックプラットフォームにログインし、インターフェイステスト公式アカウントを無料で登録します

appIDappsecretをコピーして、config.py の対応する場所に記入します。

ここに画像の説明を挿入

②appIDappsecretをコピーする

ここに画像の説明を挿入

③config.pyの該当箇所を記入します。

ここに画像の説明を挿入
二重引用符の記入に注意してください

④config.pyファイルの下部にあるテンプレートをコピーし、WeChatパブリックプラットフォームにそれぞれ追加します

説明: コードの 90 行目「今日は壊れた殻の日: { { ...}} の日」 に示すように、テンプレート内の { {***}} 以外のテキストは固定表示されます。 文はタイマーデバイスに対応しており、「今日はそして」のように変更できます。 今日は { {…}}愛の 日です。必要に応じて変更してください。
同様に、「 学校が始まるまで、まだ: { {...}} 日あります」はカウントダウンであり、誕生日などに変更できます。誕生日は当面はグレゴリオ暦のみをサポートしており、メイン プログラムは旧暦のニーズに応じて変更できます。
コピーする場合は、行頭の「#」を必ず削除してからtxtファイルにコピーし、整理してから追記してください。
ここに画像の説明を挿入

テンプレート 1 をコピーして以下を追加します。

WeChat パブリック プラットフォームで、「テンプレート メッセージ インターフェイス」を見つけます ----> テスト テンプレートを追加します ----> テンプレートのタイトル (つまり、WeChat で表示されるタイトル) ----> テンプレートの内容は次のとおりです。コピーしたばかりのコンテンツ --> 送信
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

⑤ テンプレートIDをコピーし、config.pyのtemplate_id1に記入します。

⑥次の授業リマインダーテンプレートはおやすみハートの言葉テンプレートと同じです

ここに画像の説明を挿入

⑦QRコードをスキャンしてテストし、公式アカウントをフォローし、フォロー後のWeChat IDをコピーし、config.pyにユーザーを記入します

注: 二重引用符を入力する必要があります
ここに画像の説明を挿入
ここに画像の説明を挿入

⑧変更内容を保存する

ここに画像の説明を挿入

これで、WeChat パブリック プラットフォームの構成は完了しました。

4. GitHub アクションの構成

①アクションワークフローファイルtemplate.ymlを開き、その中の内容をすべてコピーします。

ここに画像の説明を挿入
ここに画像の説明を挿入

②「アクション」をクリックしてワークフローファイルを設定します。

ここに画像の説明を挿入
すべてのコンテンツを削除するには、ワークフローを自分で設定するを選択し
ここに画像の説明を挿入
、コピーしたコンテンツをそこに貼り付け、保存して「アクション」をクリックすると、ワークフローが正しいかどうかをテストするために
ここに画像の説明を挿入
ここに画像の説明を挿入
新しく作成されたワークフローファイルが表示されます*操作が失敗した場合は、クリックして作成中に生成されたファイルを表示します操作エラー※位置ずれの原因は、環境設定が正しくない、またはプログラム自体の問題です。次の問題は、プログラム main.py の 79 行目の関数です。 get_Today_Class 実行中にエラーが発生しました。理由: 学校の開始時刻が設定されていません
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

③後続の Tencent Cloud 機能設定に備えて GitHub Token を取得します

個人設定をクリックします
ここに画像の説明を挿入

一番下までスクロールして「開発者設定」を選択します
ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入
この時点で、github の設定は完了です。

5.Tencent Cloud機能の設定

①ログイン後「クラウド機能」を検索

ここに画像の説明を挿入

ここに画像の説明を挿入

次に認証が行われます
ここに画像の説明を挿入

②認証完了後、「機能サービス」、「新規」を選択します。

ここに画像の説明を挿入

「ゼロから」を選択、関数名は任意、動作環境は「Python3.6」を選択
ここに画像の説明を挿入

次に関数本体の内容を変更し、GitHub で「txPost.py」を開いてすべての内容をコピーします
ここに画像の説明を挿入

ここに画像の説明を挿入

これをウィンドウに貼り付け、その中のトークン、ユーザー名、その他の情報を置き換えます。
ここに画像の説明を挿入

図に示されているユーザー名/プロジェクト名
ここに画像の説明を挿入

残りはデフォルトに設定されています
ここに画像の説明を挿入

ここに画像の説明を挿入

③機能を起動するタイミングトリガーを作成し、図のように動作させるだけここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

おめでとうございます。すべての構成が正常に完了しました。

結論

この記事は私の都合で長々と書いてしまい、今のところ話題になっていません(笑)。2022年の夏休み、家でサーバーを放り込んでいたら、ある音楽で彼女に天気が送られてくるのをたまたま見て、ああ、彼女いないけど変えようかなと思ってたんです。他の人のプロジェクトを書いて、自分について何か書きますか? 要求に応じて、プッシュする方法を学びましょう。自分の小さなNASに吊るすのは素敵だと思いませんか。作成したプログラムを NAS にハングアップしようとすると、小型 NAS のパフォーマンスが低すぎることがわかりました。

ps: 小型NASはテレビを見るためにセットトップボックスをいじったNASで、チップはHuaweiのhi3798とUbuntuシステムです。また、docker を学習し、openwrt をインストールし、その後、外の世界を見るためのバイパスとしてそれを使用しました。小型 NAS の写真を添付し​​ます。ははは、そしてちょっとした達成感。フォローアップに興味のある友人がいる場合は、時間があれば、セットトップ ボックスのフラッシュに関するチュートリアルを作成できます (笑)。
しかし、その後、Synology NAS、j1900 プロセッサを捨てました。パブリックネットワークIPと連携することで、私のあまりにも多くの奇妙なアイデアを満たすことができます。
ここに画像の説明を挿入
ここに画像の説明を挿入

私の親友が関連する Python 実験プロジェクトを完了する必要があるため、私もまた Python に精通しているので、この機会に完了させましょう。チュートリアルはもっと詳しく説明する必要があります。私は各ステップでスクリーンショットを撮るようにしています。少しでもお役に立てれば幸いです! ありがたい!

おすすめ

転載: blog.csdn.net/qq_29711355/article/details/126808897