やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GitHubのリリース機能から最新リンクを取得したかったができない

 タグとかリリースとかアセット名とかわけわからん。

情報源

 Draft new releaseボタンなんてない。古い。GitHubが機能を無くしやがったと思われる。

 以下はただHTMLページに飛ぶだけ。ソースコードファイル一式が欲しい。

/releases/latest

 以下はリンクが存在しない。Not Foundページになってしまう。

/owner/name/releases/latest/download/asset-name.zip

 というかasset-nameってなに?

実例

https://github.com/ytyaru/Python.PyPI.mypack/releases/latest
https://github.com/ytyaru/Python.PyPI.mypack/releases/latest/download/asset-name.zip
https://github.com/ytyaru/Python.PyPI.mypack/releases/latest/download
https://github.com/ytyaru/Python.PyPI.mypack/releases/latest/download/v0.0.1.zip
https://github.com/ytyaru/Python.PyPI.mypack/releases/latest/download/v0.0.1.tar.gz

 取得できない。リリースページからリンクを取得すると以下。これをlatestにしたいのだが……。

https://github.com/ytyaru/Python.PyPI.mypack/archive/v0.0.1.zip
https://github.com/ytyaru/Python.PyPI.mypack/archive/v0.0.1.tar.gz

 asset-nameってなに? 当然のごとく出てきたけど知らんがな。

HTMLから無理やり取得

 WebスクレイピングしてURLを取得する方法などがある。

アセット名ってなに?

GET /repos/:owner/:repo/releases/:release_id/assets

 これでアセット名を取得できそう。だが、リリースIDがわからん。

https://api.github.com/repos/ytyaru/Python.PyPI.mypack/releases/:release_id/assets
GET /repos/:owner/:repo/releases

 これで取得できそうか?

https://api.github.com/repos/ytyaru/Python.PyPI.mypack/releases

 ブラウザで実行したら以下のような空の配列が返ってきた。え……。

[

]

 リリースを作成するAPIがある。

POST /repos/:owner/:repo/releases

 これで作らないとダメなの? でも実際にリリースページにできてるよ? 個数も0から1になってたし。どういうことだよ。わけわからん。API死んでる? なにか間違ってる?

ダウンロードリンク

 トップページからclone or downloadボタンをクリックするとDownload ZIPボタンがある。ここから以下のリンクを取得できる。

 これ、ちゃんとダウンロード数カウントされるのだろうか?

所感

 結局、どうすればいいの? 面倒くさすぎ。やめた。もうPyPIでふつうにダウンロードできればそれでいいや……。無駄足。

対象環境

$ uname -a
Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux