Files
nlp-master/nlp-quantic/audio_phone/index.html
Claude Agent e8b44473af feat(quantic): curs NLP Quantic (curs/34) - audio pentru telefon
- courses.py: curs "quantic" (shop.cursnlp.ro/curs/34, root nlp-quantic/)
- download.py: yt-dlp cu 8 fragmente paralele + fara progress bar
- rename_phone_quantic.py: copii MP3 cu ID3 (titlu, album per modul, track) + coperta
- rename_phone_practitioner.py: font fallback Linux, an pe coperta din YEAR
- nlp-quantic/: coperti M1-M5, pagina index.html pentru descarcare pe telefon, PDF-uri rezumat

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017NC1T6XwMepWVPuGZELZtT
2026-09-19 17:19:29 +00:00

59 lines
3.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="ro">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>NLP Quantic audio</title>
<style>
:root { --bg:#fff; --fg:#1a1a1a; --muted:#666; --line:#e3e3e3; --btn:#8e2a22; --btnfg:#fff; }
@media (prefers-color-scheme: dark) { :root { --bg:#121212; --fg:#eee; --muted:#aaa; --line:#333; --btn:#c0504a; } }
body { margin:0; padding:16px; background:var(--bg); color:var(--fg); font:16px/1.4 system-ui, sans-serif; max-width:720px; }
h1 { font-size:1.4em; margin:0 0 12px; }
h2 { font-size:1.1em; margin:24px 0 8px; display:flex; justify-content:space-between; align-items:center; gap:8px; }
button { background:var(--btn); color:var(--btnfg); border:0; border-radius:8px; padding:10px 14px; font-size:15px; }
button.big { width:100%; padding:14px; font-size:17px; }
.track { border-top:1px solid var(--line); padding:10px 0; }
.track a { color:var(--fg); }
audio { width:100%; margin-top:6px; }
#status { color:var(--muted); margin-top:8px; min-height:1.4em; }
</style>
</head>
<body>
<h1>NLP Quantic – audio</h1>
<button class="big" onclick="downloadAll(document.querySelectorAll('a.mp3'))">Descarcă tot (13 fișiere, 1.8 GB)</button>
<div id="status">Dacă browserul întreabă „permiți descărcări multiple?”, apasă Permite.</div>
<div id="list"></div>
<script>
const MODULES = {
"Quantic M1": ["Q1-01 NLP Quantic M1Z1.mp3", "Q1-02 NLP Quantic M1Z2.mp3", "Q1-03 Workshop Bonus - Experiente in apropierea mortii.mp3"],
"Quantic M2": ["Q2-01 Modulul 2 - ziua 1.mp3", "Q2-02 Modulul 2 - ziua 2.mp3"],
"Quantic M3": ["Q3-01 Modulul 3 ziua 1.mp3", "Q3-02 Modulul 3 ziua 2.mp3"],
"Quantic M4": ["Q4-01 Modulul 4 ziua 1.mp3", "Q4-02 Modulul 4 ziua 2.mp3"],
"Quantic M5": ["Q5-01 Modulul 5 ziua 1.mp3", "Q5-02 Modulul 5 ziua 2.mp3", "Q5-03 Workshop Bonus.mp3", "Q5-04 Workshop Bonus - Karma si Reincarnarea.mp3"],
};
const list = document.getElementById("list");
for (const [dir, files] of Object.entries(MODULES)) {
const sec = document.createElement("section");
sec.innerHTML = `<h2>${dir}<button>Descarcă modulul</button></h2>`;
for (const f of files) {
const url = encodeURIComponent(dir) + "/" + encodeURIComponent(f);
sec.insertAdjacentHTML("beforeend",
`<div class="track"><a class="mp3" href="${url}" download="${f}">${f.replace(".mp3", "")}</a>
<audio controls preload="none" src="${url}"></audio></div>`);
}
sec.querySelector("h2 button").onclick = () => downloadAll(sec.querySelectorAll("a.mp3"));
list.appendChild(sec);
}
async function downloadAll(links) {
const status = document.getElementById("status");
for (let i = 0; i < links.length; i++) {
status.textContent = `Pornesc descărcarea ${i + 1}/${links.length}: ${links[i].textContent}`;
links[i].click();
await new Promise(r => setTimeout(r, 2500)); // browsers drop rapid-fire download clicks
}
status.textContent = `Gata: ${links.length} descărcări pornite. Le găsești în folderul Download.`;
}
</script>
</body>
</html>