Node.jsでGitHubリポジトリの画像を保存

Pocket

GitHub REST API v3を使って画像を保存する際の覚書です。

hiroshi-sawai.comのdocsは、GitHubのプライベートリポジトリにmarkdownで記載した内容を取得してhtmlに変換してデプロイしています。
Getting started with the REST APIを参考にして画像を保存した際の覚書です。

cURLは以下コードで保存きます。

$ curl --output sample.png \
    -H 'Authorization: Bearer {{token}}' \
    -H 'User-Agent: {{user}}' \
    -H 'Accept: application/vnd.github.v3.raw' \
    https://api.github.com/repos/{{user}}/{{repository}}/contents/path/to/sample.png

Node.jsではHTTP request libraryとしてgotを使用しました。

const options = {
    encoding: null,  // 画像データはnullを設定しないと正しく保存されない
    headers: {
        'User-Agent': {{user}},
        Accept: 'application/vnd.github.v3.raw',
        Authorization: `Bearer {{token}}`,
    },
};

(async () => {
    try {
        const response = await got({{url}}, options);
        filesystems.writeFile(
            `sample.png`,
            response.body,
            { flag: 'w+' },
            (err: any) => {
                if (err) throw err;
            }
        );
        console.log(url);
    } catch (error: any) {
        console.log('error')
        console.log(url);
    }
})();

オプションでencoding: nullを指定しないとPNGファイルとして認識されませんでした。

参考:[Node]画像をバイナリデータで取得する時にはまった

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。