This maybe works

This commit is contained in:
Maikiwi 2022-10-16 17:26:52 -07:00
parent 4b2513330c
commit 51f28144d0
4 changed files with 36 additions and 12 deletions

View file

@ -770,7 +770,7 @@ export class BrowserWindow {
};
Object.assign(options, args);
let res = await fetch(
let res = await utils.fetch(
`https://amp-api.music.apple.com/${options.route}?${new URLSearchParams({
...options.GETBody,
}).toString()}`,
@ -882,9 +882,9 @@ export class BrowserWindow {
mkdirSync(utils.getPath("plugins"));
}
if (url.endsWith("/")) url = url.slice(0, -1);
let response = await fetch(`${url}/archive/refs/heads/main.zip`);
let response = await utils.fetch(`${url}/archive/refs/heads/main.zip`);
let repo = url.split("/").slice(-2).join("/");
let apiRepo = await fetch(`https://api.github.com/repos/${repo}`).then((res) => res.json());
let apiRepo = await utils.fetch(`https://api.github.com/repos/${repo}`).then((res) => res.json());
console.debug(`REPO ID: ${apiRepo.id}`);
// extract the files from the first folder in the zip response
let zip = new AdmZip(await response.buffer());
@ -894,7 +894,7 @@ export class BrowserWindow {
}
console.log(join(utils.getPath("plugins"), "gh_" + apiRepo.id));
zip.extractEntryTo(entry, join(utils.getPath("plugins"), "gh_" + apiRepo.id), false, true);
let commit = await fetch(`https://api.github.com/repos/${repo}/commits`).then((res) => res.json());
let commit = await utils.fetch(`https://api.github.com/repos/${repo}/commits`).then((res) => res.json());
console.debug(`COMMIT SHA: ${commit[0].sha}`);
let theme = JSON.parse(readFileSync(join(utils.getPath("plugins"), "gh_" + apiRepo.id, "package.json"), "utf8"));
theme.id = apiRepo.id;
@ -919,9 +919,9 @@ export class BrowserWindow {
mkdirSync(utils.getPath("themes"));
}
if (url.endsWith("/")) url = url.slice(0, -1);
let response = await fetch(`${url}/archive/refs/heads/main.zip`);
let response = await utils.fetch(`${url}/archive/refs/heads/main.zip`);
let repo = url.split("/").slice(-2).join("/");
let apiRepo = await fetch(`https://api.github.com/repos/${repo}`).then((res) => res.json());
let apiRepo = await utils.fetch(`https://api.github.com/repos/${repo}`).then((res) => res.json());
console.debug(`REPO ID: ${apiRepo.id}`);
// extract the files from the first folder in the zip response
let zip = new AdmZip(await response.buffer());
@ -931,7 +931,7 @@ export class BrowserWindow {
}
console.log(join(utils.getPath("themes"), "gh_" + apiRepo.id));
zip.extractEntryTo(entry, join(utils.getPath("themes"), "gh_" + apiRepo.id), false, true);
let commit = await fetch(`https://api.github.com/repos/${repo}/commits`).then((res) => res.json());
let commit = await utils.fetch(`https://api.github.com/repos/${repo}/commits`).then((res) => res.json());
console.debug(`COMMIT SHA: ${commit[0].sha}`);
let theme = JSON.parse(readFileSync(join(utils.getPath("themes"), "gh_" + apiRepo.id, "theme.json"), "utf8"));
theme.id = apiRepo.id;

View file

@ -3,6 +3,7 @@ import * as path from "path";
import { Store } from "./store";
import { BrowserWindow as bw } from "./browserwindow";
import { app, BrowserWindow, ipcMain } from "electron";
import fetch from "electron-fetch";
import ElectronStore from "electron-store";
export class utils {
@ -77,6 +78,29 @@ export class utils {
return bw.express;
}
/**
* MitM the electron fetch for a function that proxies github.
* Written in TS so Maikiwi doesn't fuck up
* @param url {string} URL param
* @param opts {object} Other options
*/
static readonly _mirror: boolean = this.getStoreValue("advanced.experiments").includes('cider_mirror') ? true : false;
static fetch(url: string, opts = {}) {
if (this._mirror === true) {
if (url.includes("api.github.com/")) {
return fetch(url.replace("api.github.com/", "mirror.api.cider.sh/v2/api/"), opts);
}
else if (url.includes("raw.githubusercontent.com/")) {
return fetch(url.replace("raw.githubusercontent.com/", "mirror.api.cider.sh/v2/raw/"), opts);
}
else {
return fetch(url, opts);
}
}
else {
return fetch(url, opts);
}
}
/**
* Fetches the i18n locale for the given language.
* @param language {string} The language to fetch the locale for.

View file

@ -1241,14 +1241,14 @@
<div class="md-option-line">
<div class="md-option-segment">
Load MusicKit from Apple
<small>Requires relaunch</small>
Theme & Plugin Mirror to Cider
<small>Only works in region where GitHub is blacklisted. Requires relaunch.</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<label>
<input type="checkbox"
v-model="app.cfg.advanced.experiments.includes('ampv3')"
@click="app.cfg.advanced.experiments.includes('ampv3') ? removeExperiment('ampv3') : addExperiment('ampv3')"
v-model="app.cfg.advanced.experiments.includes('cider_mirror')"
@click="app.cfg.advanced.experiments.includes('cider_mirror') ? removeExperiment('cider_mirror') : addExperiment('cider_mirror')"
switch />
</label>
</div>

View file

@ -122,7 +122,7 @@
<% } %>
<script async
src="<%- (env.useV3 ? "https://js-cdn.music.apple.com/musickit/v3/amp/musickit.js" : "https://api.cider.sh/musickit.js"); %>"
src="<%- (env.useV3 ? "https://js-cdn.music.apple.com/musickit/v3/amp/musickit.js" : "https://js-cdn.music.apple.com/musickit/v2/amp/musickit.js"); %>"
data-web-components>
</script>
<script src="index.js?v=1"></script>