not working

This commit is contained in:
√(noham)² 2024-01-28 14:31:07 +01:00
parent e2faf9a5fe
commit 8a62d38f93
10 changed files with 314 additions and 0 deletions

131
.gitignore vendored Normal file
View File

@ -0,0 +1,131 @@
# Editors
.vscode/
.idea/
# Vagrant
.vagrant/
# Mac/OSX
.DS_Store
# Windows
Thumbs.db
# Source for the following rules: https://raw.githubusercontent.com/github/gitignore/master/Python.gitignore
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
dist_chrome/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# node
node_modules/
test/

0
background.js Normal file
View File

BIN
images/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
images/icon128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
images/icon16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
images/icon48.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

124
load.js Normal file
View File

@ -0,0 +1,124 @@
// function fetchContent(url) {
// fetch(url)
// .then(response => {
// if (response.ok) {
// return response.text();
// }
// throw new Error(`Failed to fetch: ${response.statusText}`);
// })
// .then(html => {
// const parser = new DOMParser();
// const doc = parser.parseFromString(html, 'text/html');
// // Get the content of the script tag with id "kartable-state"
// const scriptElement = doc.getElementById('kartable-state');
// if (scriptElement) {
// const scriptContent = JSON.parse(scriptElement.textContent);
// // List every key in scriptContent
// const keys = Object.keys(scriptContent);
// // Check if there is a key at index 8
// if (keys.length > 8) {
// const keyAtIndex8 = keys[8];
// const contentAtIndex8 = scriptContent[keyAtIndex8];
// console.log(contentAtIndex8);
// return contentAtIndex8
// } else {
// console.error('Key at index 8 not found in scriptContent');
// }
// } else {
// console.error('Script with id "kartable-state" not found');
// }
// })
// .catch(error => console.error(error));
// }
// fetchContent(window.location.href);
// window.onload = function() {
// replaceArticles();
// console.log('done')
// };
window.onload = function() {
setTimeout(function() {
replaceArticles();
}, 3000);
};
function opener(url) {
console.log(url);
const match = url.match(/(\d+)$/);
if (match) {
const number = match[0];
console.log('Nombre à la fin de l\'URL :', number);
fetch(`https://www.kartable.fr/ressources/a/a/a/${number}`)
.then(response => {
if (response.ok) {
return response.text();
}
throw new Error(`Failed to fetch: ${response.statusText}`);
})
.then(html => {
const newWindow = window.open();
newWindow.location.href = "about:blank";
newWindow.document.write(html);
newWindow.document.close();
})
.catch(error => console.error(error));
} else {
console.log('Aucun nombre trouvé à la fin de l\'URL.');
}
}
function replaceArticles() {
var articles = document.querySelectorAll('.document-list__item');
articles.forEach(function (article) {
var titleElement = article.querySelector('.document-list__title');
if (titleElement) {
var articleText = titleElement.textContent;
var button = document.createElement('button');
button.textContent = articleText;
button.addEventListener('click', function () {
var link = titleElement.getAttribute('href');
if (link) {
opener(link);
}
});
article.parentNode.replaceChild(button, article);
console.log('done');
}
});
var articles = document.querySelectorAll('.document-readable');
articles.forEach(function (article) {
var articleText = article.querySelector('h3').textContent;
var button = document.createElement('button');
button.textContent = articleText;
button.addEventListener('click', function () {
var link = article.querySelector('h3 a');
if (link) {
opener(link.href);
}
});
article.parentNode.replaceChild(button, article);
console.log('done');
});
}

28
manifest.json Normal file
View File

@ -0,0 +1,28 @@
{
"manifest_version": 3,
"name": "KartablePro",
"version": "1.0",
"description": "Débloque tous les articles sur Kartable gratuitement",
"permissions": [
"activeTab",
"storage",
"tabs"
],
"action": {
"default_popup": "popup.html",
"default_icon": {
"16": "images/icon16.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
}
},
"background": {
"service_worker": "background.js"
},
"content_scripts": [
{
"matches": ["*://www.kartable.fr/*"],
"js": ["load.js"]
}
]
}

18
popup.html Normal file
View File

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AnnabacPro</title>
</head>
<body>
<h1>AnnabacPro</h1>
Fait par <a href="#" id="redirectButton1">√(noham)²</a>
<br>
repo : <a href="#" id="redirectButton2">KartablePro</a>
<script src="popup.js"></script>
</body>
</html>

13
popup.js Normal file
View File

@ -0,0 +1,13 @@
// popup.js
document.addEventListener('DOMContentLoaded', function () {
var redirectButton1 = document.getElementById('redirectButton1');
redirectButton1.addEventListener('click', function () {
window.open('https://nohamr.github.io', '_blank');
});
var redirectButton2 = document.getElementById('redirectButton2');
redirectButton2.addEventListener('click', function () {
window.open('https://github.com/NohamR/KartablePro', '_blank');
});
});