mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-11 10:31:47 +00:00
Migrate from adblock-rs to cliqz
This commit is contained in:
2
plugins/adblocker/.gitignore
vendored
2
plugins/adblocker/.gitignore
vendored
@ -1,2 +0,0 @@
|
||||
/filter-lists/*
|
||||
!/filter-lists/.keep
|
||||
@ -1,3 +1,12 @@
|
||||
const { blockWindowAds } = require("./blocker");
|
||||
const { ElectronBlocker } = require("@cliqz/adblocker-electron");
|
||||
const { session } = require("electron");
|
||||
const fetch = require("node-fetch");
|
||||
|
||||
module.exports = win => blockWindowAds(win.webContents);
|
||||
const SOURCES = [
|
||||
"https://raw.githubusercontent.com/kbinani/adblock-youtube-ads/master/signed.txt"
|
||||
];
|
||||
|
||||
module.exports = () =>
|
||||
ElectronBlocker.fromLists(fetch, SOURCES)
|
||||
.then(blocker => blocker.enableBlockingInSession(session.defaultSession))
|
||||
.catch(err => console.log("Error loading adBlocker", err));
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
const { containsAds } = require("./contains-ads");
|
||||
|
||||
module.exports.blockWindowAds = webContents => {
|
||||
webContents.session.webRequest.onBeforeRequest((details, cb) => {
|
||||
const shouldBeBlocked = containsAds(details.url);
|
||||
cb({ cancel: shouldBeBlocked });
|
||||
});
|
||||
};
|
||||
@ -1,32 +0,0 @@
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const AdBlockClient = require("adblock-rs");
|
||||
const is = require("electron-is");
|
||||
|
||||
const sourcesFolder = path.resolve(__dirname, "filter-lists");
|
||||
const filterLists = fs
|
||||
.readdirSync(sourcesFolder)
|
||||
.filter(filename => filename.includes(".txt"))
|
||||
.map(filename =>
|
||||
fs
|
||||
.readFileSync(path.resolve(sourcesFolder, filename), {
|
||||
encoding: "utf-8"
|
||||
})
|
||||
.split("\n")
|
||||
);
|
||||
|
||||
const rules = [].concat(...filterLists);
|
||||
const debug = is.dev();
|
||||
const client = new AdBlockClient.Engine(rules, debug);
|
||||
|
||||
if (debug) {
|
||||
const serializedArrayBuffer = client.serialize(); // Serialize the engine to an ArrayBuffer
|
||||
console.log(
|
||||
`AdBlock engine size: ${(serializedArrayBuffer.byteLength / 1024).toFixed(
|
||||
2
|
||||
)} KB`
|
||||
);
|
||||
}
|
||||
|
||||
module.exports.containsAds = (req, base) => client.check(req, base || "", "");
|
||||
@ -1,37 +0,0 @@
|
||||
// This file downloads the configured adblock lists
|
||||
const fs = require("fs");
|
||||
const https = require("https");
|
||||
const path = require("path");
|
||||
|
||||
const SOURCES = [
|
||||
{
|
||||
name: "youtube-ads",
|
||||
url:
|
||||
"https://raw.githubusercontent.com/kbinani/adblock-youtube-ads/master/signed.txt"
|
||||
}
|
||||
];
|
||||
|
||||
function downloadAdblockLists(sources = SOURCES) {
|
||||
// fetch updated versions
|
||||
sources.forEach(source => {
|
||||
console.log(`Downloading list "${source.name}" (${source.url})`);
|
||||
https
|
||||
.get(source.url, response => {
|
||||
const filepath = path.resolve(
|
||||
__dirname,
|
||||
"filter-lists",
|
||||
`${source.name}.txt`
|
||||
);
|
||||
const file = fs.createWriteStream(filepath);
|
||||
response.pipe(file);
|
||||
})
|
||||
.on("error", err => {
|
||||
console.log("Error: " + err.message);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = downloadAdblockLists;
|
||||
if (require.main === module) {
|
||||
downloadAdblockLists();
|
||||
}
|
||||
Reference in New Issue
Block a user