diff options
Diffstat (limited to 'src/assets')
-rw-r--r-- | src/assets/images/pixiv-icon.png | bin | 0 -> 4920 bytes | |||
-rw-r--r-- | src/assets/images/pixiv-icon.svg | 56 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/pixiv.js | 181 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/tiktok.js | 2 |
4 files changed, 238 insertions, 1 deletions
diff --git a/src/assets/images/pixiv-icon.png b/src/assets/images/pixiv-icon.png new file mode 100644 index 00000000..3dd6e660 --- /dev/null +++ b/src/assets/images/pixiv-icon.png Binary files differdiff --git a/src/assets/images/pixiv-icon.svg b/src/assets/images/pixiv-icon.svg new file mode 100644 index 00000000..2e3cb564 --- /dev/null +++ b/src/assets/images/pixiv-icon.svg @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="67.73333mm" + height="67.73333mm" + viewBox="0 0 67.733331 67.733331" + version="1.1" + id="svg5" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" + sodipodi:docname="pixiv-icon.svg" + inkscape:export-filename="/mnt/main_storage/Git/libredirect/src/assets/images/pixiv-icon.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.622695" + inkscape:cx="53.614512" + inkscape:cy="136.50132" + inkscape:window-width="1888" + inkscape:window-height="1060" + inkscape:window-x="32" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-103.98557,-52.402599)"> + <circle + style="fill:#0096fa;fill-opacity:1;stroke-width:2.64583" + id="path1234" + cx="137.85223" + cy="86.269264" + r="33.866665" /> + <path + style="fill:#ffffff;stroke-width:0.313386" + d="m 122.7229,105.30379 c -0.24873,-0.40245 0.7237,-1.54717 1.31432,-1.54717 0.347,0 0.42151,-2.55398 0.42151,-14.446665 V 74.863294 l -1.03225,0.892679 c -2.10117,1.817053 -3.35517,3.636697 -3.35517,4.868584 0,2.298073 -1.08814,1.726257 -2.82048,-1.482147 l -0.78346,-1.451038 1.56693,-1.400312 c 10.52844,-9.408887 24.10553,-12.052505 33.56986,-6.536439 2.25569,1.314672 4.93919,4.203746 6.03254,6.494663 1.20804,2.531212 1.59075,4.221702 1.60031,7.068726 0.0327,9.739076 -9.81435,16.74731 -21.67016,15.422863 -2.55639,-0.285577 -6.17239,-1.083524 -7.85889,-1.734229 -0.5011,-0.193334 -0.54843,0.07462 -0.54843,3.104446 v 3.31605 l 0.94017,0.48616 c 0.56299,0.29114 0.94015,0.7344 0.94015,1.10491 0,0.58416 -0.2265,0.61873 -4.05553,0.61873 -2.5259,0 -4.13318,-0.12566 -4.26142,-0.33315 z m 19.92492,-9.384243 c 3.71424,-0.704393 6.88163,-2.766994 8.79493,-5.727265 3.22224,-4.985408 2.57484,-12.126756 -1.49817,-16.526092 -4.49505,-4.855189 -12.08781,-5.637541 -19.30051,-1.988706 l -1.49264,0.755112 0.0825,10.88286 0.0824,10.88286 2.11342,0.706325 c 3.4895,1.166218 8.18184,1.590735 11.21817,1.014906 z" + id="path6646" /> + </g> +</svg> diff --git a/src/assets/javascripts/helpers/pixiv.js b/src/assets/javascripts/helpers/pixiv.js new file mode 100644 index 00000000..2fedb455 --- /dev/null +++ b/src/assets/javascripts/helpers/pixiv.js @@ -0,0 +1,181 @@ +window.browser = window.browser || window.chrome; + +import commonHelper from './common.js' + +const targets = [ + /^https?:\/\/(www\.|)pixiv\.net.*/ +]; + +let redirects = { + "pixivMoe": { + "normal": [ + "https://pixiv.moe" + ], + "tor": [] + } +} + +const getRedirects = () => redirects; +const getCustomRedirects = function () { + return { + "pixivMoe": { + "normal": [...pixivMoeNormalRedirectsChecks, ...pixivMoeNormalCustomRedirects], + "tor": [] + }, + }; +}; + +function setRedirects(val) { + redirects.pixivMoe = val; + browser.storage.local.set({ pixivRedirects: redirects }) + console.log("pixivRedirects: ", val) + for (const item of pixivMoeNormalRedirectsChecks) + if (!redirects.pixivMoe.normal.includes(item)) { + var index = pixivMoeNormalRedirectsChecks.indexOf(item); + if (index !== -1) pixivMoeNormalRedirectsChecks.splice(index, 1); + } + setPixivMoeNormalRedirectsChecks(pixivMoeNormalRedirectsChecks); + + for (const item of pixivMoeTorRedirectsChecks) + if (!redirects.pixivMoe.normal.includes(item)) { + var index = pixivMoeTorRedirectsChecks.indexOf(item); + if (index !== -1) pixivMoeTorRedirectsChecks.splice(index, 1); + } + setPixivMoeTorRedirectsChecks(pixivMoeTorRedirectsChecks); +} + +let pixivMoeNormalRedirectsChecks; +const getPixivMoeNormalRedirectsChecks = () => pixivMoeNormalRedirectsChecks; +function setPixivMoeNormalRedirectsChecks(val) { + pixivMoeNormalRedirectsChecks = val; + browser.storage.local.set({ pixivMoeNormalRedirectsChecks }) + console.log("pixivMoeNormalRedirectsChecks: ", val) +} + +let pixivMoeTorRedirectsChecks; +const getPixivMoeTorRedirectsChecks = () => pixivMoeTorRedirectsChecks; +function setPixivMoeTorRedirectsChecks(val) { + pixivMoeTorRedirectsChecks = val; + browser.storage.local.set({ pixivMoeTorRedirectsChecks }) + console.log("pixivMoeTorRedirectsChecks: ", val) +} + +let pixivMoeNormalCustomRedirects = []; +const getPixivMoeNormalCustomRedirects = () => pixivMoeNormalCustomRedirects; +function setPixivMoeNormalCustomRedirects(val) { + pixivMoeNormalCustomRedirects = val; + browser.storage.local.set({ pixivMoeNormalCustomRedirects }) + console.log("pixivMoeNormalCustomRedirects: ", val) +} + +let pixivMoeTorCustomRedirects = []; +const getPixivMoeTorCustomRedirects = () => pixivMoeTorCustomRedirects; +function setPixivMoeTorCustomRedirects(val) { + pixivMoeTorCustomRedirects = val; + browser.storage.local.set({ pixivMoeTorCustomRedirects }) + console.log("pixivMoeTorCustomRedirects: ", val) +} + +let disable; +const getDisable = () => disable; +function setDisable(val) { + disable = val; + browser.storage.local.set({ disablePixiv: disable }) + console.log("disablePixiv", val); +} + +let protocol; +const getProtocol = () => protocol; +function setProtocol(val) { + protocol = val; + browser.storage.local.set({ pixivProtocol: val }) + console.log("pixivProtocol: ", val) +} + +function redirect(url, type, initiator) { + // https://www.pixiv.net/artworks/96572356 + // https://www.pixiv.net/en/artworks/96572356 + // https://pixiv.moe/illust/96572356 + + if (disable) return null; + if (initiator && ([...redirects.pixivMoe.normal, ...pixivMoeNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))) return null; + if (!targets.some((rx) => rx.test(url.href))) return null; + console.log("PixivMoe!!"); + + if (type != "main_frame" && type != "sub_frame") return null; + + let instancesList; + if (protocol == 'normal') instancesList = [...pixivMoeNormalRedirectsChecks, ...pixivMoeNormalCustomRedirects]; + if (protocol == 'tor') instancesList = [...pixivMoeTorRedirectsChecks, ...pixivMoeTorCustomRedirects]; + if (instancesList.length === 0) return null; + let randomInstance = commonHelper.getRandomInstance(instancesList); + + let pathName = url.pathname + .replace('/artworks/', '/illust/') + .replace(/\/..\//, '/') + + return `${randomInstance}${pathName}`; +} + +async function init() { + return new Promise((resolve) => { + fetch('/instances/data.json').then(response => response.text()).then(data => { + let dataJson = JSON.parse(data); + browser.storage.local.get( + [ + "disablePixiv", + "pixivRedirects", + + "pixivMoeNormalRedirectsChecks", + "pixivMoeNormalCustomRedirects", + + "pixivMoeTorRedirectsChecks", + "pixivMoeTorCustomRedirects", + + "pixivProtocol" + ], + r => { + disable = r.disablePixiv ?? false; + + protocol = r.pixivProtocol ?? "normal"; + + if (r.pixivRedirects) redirects = r.pixivRedirects; + + pixivMoeNormalRedirectsChecks = r.pixivMoeNormalRedirectsChecks ?? [...redirects.pixivMoe.normal]; + pixivMoeNormalCustomRedirects = r.pixivMoeNormalCustomRedirects ?? []; + + pixivMoeTorRedirectsChecks = r.pixivMoeTorRedirectsChecks ?? [...redirects.pixivMoe.tor]; + pixivMoeTorCustomRedirects = r.pixivMoeTorCustomRedirects ?? []; + + resolve(); + } + ) + }); + }); +} + +export default { + + getRedirects, + getCustomRedirects, + setRedirects, + + getDisable, + setDisable, + + getProtocol, + setProtocol, + + getPixivMoeNormalRedirectsChecks, + setPixivMoeNormalRedirectsChecks, + getPixivMoeTorRedirectsChecks, + setPixivMoeTorRedirectsChecks, + + getPixivMoeTorCustomRedirects, + setPixivMoeTorCustomRedirects, + getPixivMoeNormalCustomRedirects, + setPixivMoeNormalCustomRedirects, + + redirect, + init, +}; diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js index fe0c31e0..2edc437e 100644 --- a/src/assets/javascripts/helpers/tiktok.js +++ b/src/assets/javascripts/helpers/tiktok.js @@ -100,7 +100,7 @@ function redirect(url, type) { // https://www.tiktok.com/@keysikaspol/video/7061265241887345946 // https://www.tiktok.com/@keysikaspol - if (type != "main_frame" && "sub_frame" && "xmlhttprequest") return null; + if (type != "main_frame" && type != "sub_frame" && type != "xmlhttprequest") return null; let instancesList; if (protocol == 'normal') instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; |