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ファイルとして保存してプロジェクトのページに読み込ませる必要があります。ただし、GitHubAPIには制限があるため、大量のリクエストを送信する場合には注意が必要です。また、このJavaScriptGitHubAPIの仕様に依存しており、将来的に仕様が変更される可能性があるため、動作の確認が必要です。

Bing AI

はえ〜すごいもんだね。

※まともに動かないのでBing でもう一度頼んでみた。

 

あなたは優秀なプログラマです。 GitHubの公開プロジェクトの配布ファイルをダウンロードするには、assetsのボタンをクリックする必要がありますが、古いブラウザでは表示されないことがあります。これは、GitHubGoogle 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では動かなかったけど)