FileCR Assistant Bypass & Helper

extracts software download links (including 'fast download' URLs) and provides access to premium contents.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey, το Greasemonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Userscripts για να εγκαταστήσετε αυτόν τον κώδικα.

You will need to install an extension such as Tampermonkey to install this script.

Θα χρειαστεί να εγκαταστήσετε μια επέκταση διαχείρισης κώδικα χρήστη για να εγκαταστήσετε αυτόν τον κώδικα.

(Έχω ήδη έναν διαχειριστή κώδικα χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Έχω ήδη έναν διαχειριστή στυλ χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

// ==UserScript==
// @name               FileCR Assistant Bypass & Helper
// @name:zh-CN         FileCR 助手
// @name:zh-TW         FileCR 助手
// @namespace          xiakele
// @version            2.2

// @description        extracts software download links (including 'fast download' URLs) and provides access to premium contents.
// @description:zh-CN  一键获取FileCR的软件下载链接(包括快速下载),无需拓展即可访问premium内容。
// @description:zh-TW  一鍵取得FileCR的軟體下載連結(包括快速下載),無需拓展即可存取premium內容。
// @author             xiakele
// @license            MIT
// @match              *://filecr.com/*
// @icon               https://filecr.com/favicon.png
// @grant              window.onurlchange
// ==/UserScript==

(function () {
	const versionInfo = {
		id: 'ddgilliopjknmglnpkegbjpoilgachlm',
		version: '9.9.9',
	};

	if (!document.cookie.includes('extensionIsInstalled')) {
		document.cookie = 'extensionIsInstalled=true; expire=Fri, 01 Jan 2077 00:00:00 GMT';
	}

	window.addEventListener(
		'message',
		event => {
			const data = {
				direction: 'from-content-script',
				responseFor: event.data.id,
				type: 'response',
			};
			if (event.data.id === 'install-check') {
				data.data = null;
				window.postMessage(data);
				return;
			}

			switch (event.data.action) {
				case 'app.info': {
					data.data = versionInfo;
					break;
				}

				case 'downloads.extractLink': {
					data.data = event.data.data.url;
					break;
				}

				case 'favorites.has': {
					data.data = false;
					break;
				}

				default: {
					return;
				}
			}

			window.postMessage(data);
		},
	);

	async function getLinks(meta) {
		if (['Torrent', 'Internal'].includes(meta.type)) {
			return fetch(`/api/actions/downloadlink/?id=${meta.id}`)
				.then(data => data.json())
				.then(json => ({provider: meta.type, url: json.url}));
		}

		return fetch(`https://filecr.com/api/actions/worker/?link_id=${meta.id}`)
			.then(data => data.json())
			.then(json => ({provider: json.download_provider, url: json.url}));
	}

	async function displayLinks(json) {
		if (document.querySelector('#link-field')) {
			return;
		}

		const trigger = document.querySelector('#trigger');
		const div = document.createElement('div');
		div.id = 'link-field';
		document.querySelector('.download-info').append(div);
		trigger.innerHTML = 'Loading...';
		const linksMeta = json.props.pageProps.post.downloads[0].links;
		const downloadLinks = await Promise.all(linksMeta.map(meta => getLinks(meta)));
		for (const [i, link] of downloadLinks.entries()) {
			const a = document.createElement('a');
			a.href = link.url;
			a.classList.add('link-light');
			a.innerHTML = `Link ${i + 1} (${link.provider})\n`;
			div.append(a);
		}

		trigger.innerHTML = 'COMPLETE!';
	}

	let reloaded = false;
	function addTrigger() {
		if (document.querySelector('.e-404') && !reloaded) {
			reloaded = true;
			window.location.reload();
		}

		if (!document.querySelector('.download-info') || document.querySelector('#trigger')) {
			return;
		}

		const rawJSON = JSON.parse(document.querySelector('#__NEXT_DATA__').textContent);
		const a = document.createElement('a');
		a.id = 'trigger';
		a.innerHTML = 'GET DOWNLOAD LINKS';
		a.classList.add('link-light');
		if (window.location.pathname.includes(rawJSON.query.postSlug)) {
			a.addEventListener('click', () => displayLinks(rawJSON));
		} else {
			a.addEventListener('click', () => window.location.reload());
			a.innerHTML += '<br>(Data mismatch. Reload is required.)';
		}

		document.querySelector('.download-info').append(a);
	}

	addTrigger();
	if (window.onurlchange === null) {
		window.addEventListener('urlchange', () => addTrigger());
	} else {
		const observer = new MutationObserver(() => addTrigger());
		observer.observe(document.head, {childList: true});
	}
})();