banner
虫子游戈

虫子游戈

一个写故事的人类
mastodon
email

Typoraは文章の画像を微信公众号の素材库にアップロードします

私はこの記事《WeChat 公式アカウントの画像アップロードインターフェースを利用して、自分だけの画像ホスティング機能を作成する!》を参考にしましたが、2 つの問題がありました:

  1. 画像は素材ライブラリにアップロードされず、別の画像ライブラリにアップロードされます(素材ライブラリで管理できませんが、画像メッセージを送信するために使用でき、一般的には十分です);
  2. アップロードされた画像の名前には完全なパス名が含まれており、次のようなファイル名が生成されます:C:\\\\Users\\\\username\\\\AppData\\\\Local\\\\Temp\\\\Typora\\\\typora-icon.png 。冗長で肥大化しています。

ChatGPT の助けを借りて、問題 1 は簡単に解決しましたが、問題 2 は非常に困難でした。その後、Python を使って素材ライブラリにアップロードする簡単なテストを行ったところ、画像ファイル名が正常に保持されることがわかりました。そこで、ChatGPT に上記の Go プログラムを Python バージョンに書き換えてもらうことを思いつき、問題 2 はこうして解決されました。理由はよくわかりません。

ここで得られた Python バージョンを共有します:

import requests

import json

import sys

  

# 定数定義

APP_ID = "あなたのAPP_ID"

APP_SECRET = "あなたのAPP_SECRET"

  

ACCESS_TOKEN_URL = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APP_ID}&secret={APP_SECRET}"

UPLOAD_PERMANENT_IMAGE_URL = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token="

  

# access_tokenを取得

response = requests.get(ACCESS_TOKEN_URL)

if response.status_code == 200:

    res = response.json()

    access_token = res.get("access_token")

else:

    print(f"アクセストークンの取得に失敗しました: {response.text}")

    sys.exit(1)

  

# access_tokenが存在することを確認

if access_token:

    urls = []

    # コマンドライン引数を取得し、画像をアップロード

    for v in sys.argv[1:]:

        files = {

            'media': open(v, 'rb'),

        }

        data = {

            'type': 'image',

        }

  

        # 画像アップロードリクエストを送信

        upload_response = requests.post(f"{UPLOAD_PERMANENT_IMAGE_URL}{access_token}&type=image", files=files, data=data)

  

        if upload_response.status_code == 200:

            res_url = upload_response.json()

            url = res_url.get("url")

            if url:

                urls.append(url)

        else:

            print(f"画像 {v} のアップロードに失敗しました: {upload_response.text}")

  

    # アップロード成功のURLを出力

    if urls:

        print("アップロード成功:")

        for url in urls:

            print(url)

else:

    print(f"アクセストークンの取得に失敗しました: {response.text}")  

 
他の手順は原文とほぼ同じですが、対応する Python 操作を使用する必要があります。

設定が完了したら、Typora で執筆中に画像を自動的に WeChat 公式アカウントの素材ライブラリにアップロードできるようになります。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。