chromium_legacyを必要なMacでダウンロードできない問題
レガシーブラウザでGithubのreleaseのページに行って、assetsの下を開こうにも、アイコンがぐるぐる回り続けるだけでダウンロードリンクが表示されない問題がある。
ということで、下記の質問をChatGPTやBing AIに投げてみた。
あなたはwebデザインのプロです。古いブラウザでgithubにアクセスして公開プロジェクトの配布ファイルをダウンロードしようとすると、assetsのボタンの表示がグルグル回るだけでダウンロードリンクが表示されません。例 https://github.com/blueboxd/chromium-legacy/releases/tag/stable これはブラウザが悪いのではなく、webサイトがgoogle chromeのみを表示ターゲットにしてサイトの構成をアップデートしたためで、これは公平ではありません。一方、githubはassetsのapiがあり、プロジェクトによって特定のurlを指定することで、macのターミナルのようなコマンドツールを使うことで、ダウンロードリンクを取得することができるようです。この仕組みを応用することで、ブラウザのurlに入力したgithubのプロジェクトのurlを書き換えて、assetsのapiに対応したurlに書き換えるjavascriptを作ってください。
ChatGPT
以下は、GitHubのプロジェクトURLをassetsのAPIに対応したURLに書き換えるJavaScriptの例です。
// GitHubのプロジェクトURLを取得
var githubUrl = window.location.href;// URLを正規表現を使ってassetsのAPIに対応したURLに書き換える
var regex = /github.com\/([^\/]+)\/([^\/]+)\/releases\/tag\/([^\/]+)/;
var matches = githubUrl.match(regex);
if (matches && matches.length === 4) {
var owner = matches[1];
var repo = matches[2];
var tag = matches[3];
var apiUrl = 'https://api.github.com/repos/' + owner + '/' + repo + '/releases/tags/' + tag;
apiUrl += '/assets';
// ページのリダイレクトを実行
window.location.href = apiUrl;
}このJavaScriptは、GitHubのプロジェクトのURLを取得し、正規表現を使ってassetsのAPIに対応したURLに書き換えています。その後、書き換えたURLにリダイレクトすることで、ダウンロードリンクを取得できるようになります。
このJavaScriptを使用するには、GitHubのプロジェクトのページでブラウザの開発者ツールを開き、コンソールに上記のJavaScriptを貼り付けて実行するか、別途JavaScriptファイルとして保存してプロジェクトのページに読み込ませる必要があります。ただし、GitHubのAPIには制限があるため、大量のリクエストを送信する場合には注意が必要です。また、このJavaScriptはGitHubのAPIの仕様に依存しており、将来的に仕様が変更される可能性があるため、動作の確認が必要です。
Bing AI
はえ〜すごいもんだね。
※まともに動かないのでBing でもう一度頼んでみた。
あなたは優秀なプログラマです。 GitHubの公開プロジェクトの配布ファイルをダウンロードするには、assetsのボタンをクリックする必要がありますが、古いブラウザでは表示されないことがあります。これは、GitHubがGoogle Chromeなどの最新のブラウザに対応したサイトの構成をアップデートしたためです。これは公平ではないかもしれませんが、GitHubの方針です。 いっぽう、GitHubにはassetsのAPIがあり、プロジェクトによって特定のURLを指定することで、Macのターミナルなどのコマンドツールを使ってダウンロードリンクを取得することができます。例えば、https://github.com/blueboxd/chromium-legacy/releases/tag/stable の場合は、以下のようなコマンドを実行すればダウンロードリンクを取得できます。 curl -s https://api.github.com/repos/blueboxd/chromium-legacy/releases/tags/stable | grep browser_download_url | cut -d '"' -f この仕組みを応用して、ブラウザのURLに入力したGitHubのプロジェクトのURLを書き換えて、assetsのAPIに対応したURLにリダイレクトするJavaScriptを作ってください。
ご指示いただいた内容に基づいて、以下のようなJavaScriptコードを作成しました。このコードは、GitHubのプロジェクトページのURLを入力すると、そのプロジェクトの最新リリースのダウンロードリンクを取得して、そのリンクにリダイレクトします。
const redirect = async () => {
const url = window.location.href;
const repo = url.match(/github.com\/([^/]+\/[^/]+)/)[1];
const apiUrl = `https://api.github.com/repos/${repo}/releases/latest`;
const response = await fetch(apiUrl);
const data = await response.json();
const downloadUrl = data.assets[0].browser_download_url;
window.location.href = downloadUrl;
};
redirect();このコードは、GitHubのプロジェクトページで実行することができます。ただし、このコードはあくまで例示であり、実際に使用する際には適切な変更が必要です。
これをブラウザのコンソールに貼り付けると、シンプルにダウンロードのダイアログが出てくる。
Firefox Legacy 68.12.0p3(ESR 68.12.0相当)だと動くけど、Waterfox ClassicだとSyntaxError: redeclaration of const redirectとエラーが出るし、TenFourFox for intel(FPR32SP5 )だとnullとか言ってくる。
Waterfox Classic用
このエラーは、const redirectが再宣言されたことを示しています。constは定数であり、一度宣言されると再宣言することはできません。const redirectが宣言されている場所を確認し、その宣言を削除するか、変数名を変更してください。
修正後のコードは次のようになります。
const redirectFunction = async () => {
const url = window.location.href;
const repo = url.match(/github.com\/([^/]+\/[^/]+)/)[1];
const apiUrl = `https://api.github.com/repos/${repo}/releases/latest`;
const response = await fetch(apiUrl);
const data = await response.json();
const downloadUrl = data.assets[0].browser_download_url;
window.location.href = downloadUrl;
};
redirectFunction();
これで動いた。すごい。(TenFourFoxでは動かなかったけど)