Files
oscloud-news/public/posts/vhsky-2025/index.html

400 lines
25 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="en" dir="auto" data-theme="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>VHSky.cz ohlédnutí za rokem 2025 🎬 | Oscloud News</title>
<meta name="keywords" content="vhsky, peertube">
<meta name="description" content="VHSky.cz vzniklo jako PeerTube instance pro komunitní videoobsah. Rok 2025 byl prvním rokem, kdy se ukázalo, že má smysl projekt dělat dál.
Proč vlastně PeerTube? 🤔
YouTube se stal faktickým monopolem na video hosting. Pravidla se mění podle toho, jak se to hodí korporátu, algoritmy rozhodují o tom, co se dostane k divákům, a celý systém stojí na centralizovaném modelu, který tvůrcům dává minimální kontrolu.
VHSky.cz vzniklo jako alternativa pro ty, kteří chtějí publikovat videa bez reklam, bez sledování a bez závislosti na jedné komerční platformě. Ne jako náhrada YouTube, ale jako svobodná možnost vedle něj.">
<meta name="author" content="archos">
<link rel="canonical" href="https://blog.oscloud.cz/posts/vhsky-2025/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.343cc480b9ffc8f04ccbe5e968ad674880cab773ec19905e93033065c1e7a804.css" integrity="sha256-NDzEgLn/yPBMy&#43;XpaK1nSIDKt3PsGZBekwMwZcHnqAQ=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://blog.oscloud.cz/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.oscloud.cz/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.oscloud.cz/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://blog.oscloud.cz/apple-touch-icon.png">
<link rel="mask-icon" href="https://blog.oscloud.cz/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://blog.oscloud.cz/posts/vhsky-2025/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><script defer src="https://analytics.oscloud.cz/script.js" data-website-id="70aaf052-385c-41fb-9cfe-d3b3c6f54f2d"></script>
<meta property="og:url" content="https://blog.oscloud.cz/posts/vhsky-2025/">
<meta property="og:site_name" content="Oscloud News">
<meta property="og:title" content="VHSky.cz ohlédnutí za rokem 2025 🎬">
<meta property="og:description" content="VHSky.cz vzniklo jako PeerTube instance pro komunitní videoobsah. Rok 2025 byl prvním rokem, kdy se ukázalo, že má smysl projekt dělat dál.
Proč vlastně PeerTube? 🤔 YouTube se stal faktickým monopolem na video hosting. Pravidla se mění podle toho, jak se to hodí korporátu, algoritmy rozhodují o tom, co se dostane k divákům, a celý systém stojí na centralizovaném modelu, který tvůrcům dává minimální kontrolu.
VHSky.cz vzniklo jako alternativa pro ty, kteří chtějí publikovat videa bez reklam, bez sledování a bez závislosti na jedné komerční platformě. Ne jako náhrada YouTube, ale jako svobodná možnost vedle něj.">
<meta property="og:locale" content="cs-cz">
<meta property="og:type" content="article">
<meta property="article:section" content="posts">
<meta property="article:published_time" content="2025-12-13T00:00:00+00:00">
<meta property="article:modified_time" content="2025-12-13T00:00:00+00:00">
<meta property="article:tag" content="Vhsky">
<meta property="article:tag" content="Peertube">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="VHSky.cz ohlédnutí za rokem 2025 🎬">
<meta name="twitter:description" content="VHSky.cz vzniklo jako PeerTube instance pro komunitní videoobsah. Rok 2025 byl prvním rokem, kdy se ukázalo, že má smysl projekt dělat dál.
Proč vlastně PeerTube? 🤔
YouTube se stal faktickým monopolem na video hosting. Pravidla se mění podle toho, jak se to hodí korporátu, algoritmy rozhodují o tom, co se dostane k divákům, a celý systém stojí na centralizovaném modelu, který tvůrcům dává minimální kontrolu.
VHSky.cz vzniklo jako alternativa pro ty, kteří chtějí publikovat videa bez reklam, bez sledování a bez závislosti na jedné komerční platformě. Ne jako náhrada YouTube, ale jako svobodná možnost vedle něj.">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://blog.oscloud.cz/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "VHSky.cz ohlédnutí za rokem 2025 🎬",
"item": "https://blog.oscloud.cz/posts/vhsky-2025/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "VHSky.cz ohlédnutí za rokem 2025 🎬",
"name": "VHSky.cz ohlédnutí za rokem 2025 🎬",
"description": "VHSky.cz vzniklo jako PeerTube instance pro komunitní videoobsah. Rok 2025 byl prvním rokem, kdy se ukázalo, že má smysl projekt dělat dál.\nProč vlastně PeerTube? 🤔 YouTube se stal faktickým monopolem na video hosting. Pravidla se mění podle toho, jak se to hodí korporátu, algoritmy rozhodují o tom, co se dostane k divákům, a celý systém stojí na centralizovaném modelu, který tvůrcům dává minimální kontrolu.\nVHSky.cz vzniklo jako alternativa pro ty, kteří chtějí publikovat videa bez reklam, bez sledování a bez závislosti na jedné komerční platformě. Ne jako náhrada YouTube, ale jako svobodná možnost vedle něj.\n",
"keywords": [
"vhsky", "peertube"
],
"articleBody": "VHSky.cz vzniklo jako PeerTube instance pro komunitní videoobsah. Rok 2025 byl prvním rokem, kdy se ukázalo, že má smysl projekt dělat dál.\nProč vlastně PeerTube? 🤔 YouTube se stal faktickým monopolem na video hosting. Pravidla se mění podle toho, jak se to hodí korporátu, algoritmy rozhodují o tom, co se dostane k divákům, a celý systém stojí na centralizovaném modelu, který tvůrcům dává minimální kontrolu.\nVHSky.cz vzniklo jako alternativa pro ty, kteří chtějí publikovat videa bez reklam, bez sledování a bez závislosti na jedné komerční platformě. Ne jako náhrada YouTube, ale jako svobodná možnost vedle něj.\nPeerTube umožňuje provozovat vlastní instanci, mít kontrolu nad obsahem i pravidly a nestavět projekt na komerčních algoritmech. Decentralizace, open source a vlastní data nejsou slogan, ale základní princip.\nČísla, která mluví 📊 Za rok jsme překonali hranici 20 000 zhlédnutí (aktuálně 20 191). Na instanci je 809 videí, 330 registrovaných uživatelů a 340 komentářů. Celkem hostujeme přes 500 GB video obsahu.\nNejde o závratná čísla ve srovnání s YouTube, ale ukazují, že komunita roste organicky a že obsah má pro lidi smysl.\nCo fungovalo ✅ Technické zázemí Během roku jsme přesunuli média na S3 úložiště u společnosti Hetzner. Pro diváky jde o neviditelnou změnu, ale technicky o zásadní krok data jsou oddělená od aplikačního serveru a zálohování je výrazně jednodušší a spolehlivější.\nU stejného poskytovatele běží také VPS s runnerem, který zajišťuje náročnější úlohy, například automatické generování titulků. Díky tomu může hlavní instance zůstat lehká a stabilní i při vyšší zátěži.\nKomunitní spolupráce 🤝 Runner pro titulky se stal základem pro jednu hezkou komunitní akci. Společně se nám podařilo připravit českou verzi videa, které slouží jako barvitý úvod do světa sociální sítě Fediverse. Video představuje alternativní pohled na sociální média s respektem k soukromí, důrazem na uživatele a bez vlivu velkých technologických firem.\nNa překladu a zpracování se podíleli:\nautor videa: Elena Rossini a tým produkce: Jan Dytrych dabing: Zloběna časování audia: Schmaker skript: Jann OpenAlt 2025 Největším testem byl OpenAlt. Podařilo se vystreamovat všechny přednášky, což ukázalo, že technické zázemí drží i pod zátěží. OpenAlt znovu potvrdil, že dělat projekty otevřeně a komunitně má smysl a bylo fajn potkat lidi, kteří přemýšlejí podobně.\nDíky patří 🙏 Velké poděkování patří moderátorům, kteří udržují komunitu funkční a atmosféru slušnou zvlášť Schmakerovi za dlouhodobou a konzistentní práci.\nDíky také Jiřímu Eischmannovi, bez kterého by VHSky.cz vůbec nevznikly.\nA velké díky Adamu Štrauchovi a týmu z rosti.cz za poskytnutí výkonného zázemí pro OpenAlt runnery a za dlouhodobě vstřícný přístup k open-source projektům. Bez této podpory by streamování OpenAltu v takovém rozsahu nebylo možné.\nCo dál 🚀 Pokračovat v obsahu a dál zapojovat komunitu i tady patří velký dík Schmakerovi, který na tom odvádí obrovský kus práce.\nPokud to vyjde, rádi bychom se příští rok znovu objevili na OpenAltu s větším klidem a zkušenostmi z letoška.\nZávěr VHSky.cz není o číslech, reklamě ani honbě za rychlým růstem. Dává smysl tehdy, když dává smysl lidem, kteří ho sledují, podporují nebo se na něm jakkoli podílejí. Rok 2025 ukázal, že tenhle přístup funguje.\nDíky všem, kteří u toho byli ať už sledováním, pomocí, finanční podporou nebo obyčejnou zpětnou vazbou. Právě tohle drží projekt při životě. Pokračujeme dál.\n",
"wordCount" : "534",
"inLanguage": "en",
"datePublished": "2025-12-13T00:00:00Z",
"dateModified": "2025-12-13T00:00:00Z",
"author":{
"@type": "Person",
"name": "archos"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://blog.oscloud.cz/posts/vhsky-2025/"
},
"publisher": {
"@type": "Organization",
"name": "Oscloud News",
"logo": {
"@type": "ImageObject",
"url": "https://blog.oscloud.cz/favicon.ico"
}
}
}
</script>
</head>
<body id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://blog.oscloud.cz/" accesskey="h" title="Oscloud News (Alt + H)">
<img src="https://blog.oscloud.cz/logo.png" alt="" aria-label="logo"
height="32">Oscloud News</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="https://blog.oscloud.cz/" title="🇨🇿">
<span>🇨🇿</span>
</a>
</li>
<li>
<a href="https://blog.oscloud.cz/archives/" title="Archiv">
<span>Archiv</span>
</a>
</li>
<li>
<a href="https://blog.oscloud.cz/search/" title="Vyhledávání">
<span>Vyhledávání</span>
</a>
</li>
<li>
<a href="https://blog.oscloud.cz/tags/" title="Tagy">
<span>Tagy</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="https://blog.oscloud.cz/">Home</a>&nbsp;»&nbsp;<a href="https://blog.oscloud.cz/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
VHSky.cz ohlédnutí za rokem 2025 🎬
</h1>
<div class="post-meta"><span title='2025-12-13 00:00:00 +0000 UTC'>December 13, 2025</span>&nbsp;·&nbsp;<span>3 min</span>&nbsp;·&nbsp;<span>archos</span>
</div>
</header>
<div class="post-content"><p>VHSky.cz vzniklo jako PeerTube instance pro komunitní videoobsah. Rok 2025 byl prvním rokem, kdy se ukázalo, že má smysl projekt dělat dál.</p>
<h2 id="proč-vlastně-peertube-">Proč vlastně PeerTube? 🤔<a hidden class="anchor" aria-hidden="true" href="#proč-vlastně-peertube-">#</a></h2>
<p>YouTube se stal faktickým monopolem na video hosting. Pravidla se mění podle toho, jak se to hodí korporátu, algoritmy rozhodují o tom, co se dostane k divákům, a celý systém stojí na centralizovaném modelu, který tvůrcům dává minimální kontrolu.</p>
<p>VHSky.cz vzniklo jako alternativa pro ty, kteří chtějí publikovat videa bez reklam, bez sledování a bez závislosti na jedné komerční platformě. Ne jako náhrada YouTube, ale jako svobodná možnost vedle něj.</p>
<p>PeerTube umožňuje provozovat vlastní instanci, mít kontrolu nad obsahem i pravidly a nestavět projekt na komerčních algoritmech. Decentralizace, open source a vlastní data nejsou slogan, ale základní princip.</p>
<h2 id="čísla-která-mluví-">Čísla, která mluví 📊<a hidden class="anchor" aria-hidden="true" href="#čísla-která-mluví-">#</a></h2>
<p>Za rok jsme překonali hranici 20 000 zhlédnutí (aktuálně 20 191). Na instanci je 809 videí, 330 registrovaných uživatelů a 340 komentářů. Celkem hostujeme přes 500 GB video obsahu.</p>
<p>Nejde o závratná čísla ve srovnání s YouTube, ale ukazují, že komunita roste organicky a že obsah má pro lidi smysl.</p>
<img src="/images/vhsky.png" alt="Statistiky platformy" width="600">
<h2 id="co-fungovalo-">Co fungovalo ✅<a hidden class="anchor" aria-hidden="true" href="#co-fungovalo-">#</a></h2>
<h3 id="technické-zázemí">Technické zázemí<a hidden class="anchor" aria-hidden="true" href="#technické-zázemí">#</a></h3>
<p>Během roku jsme přesunuli média na S3 úložiště u společnosti <a href="https://www.hetzner.com/">Hetzner</a>. Pro diváky jde o neviditelnou změnu, ale technicky o zásadní krok data jsou oddělená od aplikačního serveru a zálohování je výrazně jednodušší a spolehlivější.</p>
<p>U stejného poskytovatele běží také VPS s runnerem, který zajišťuje náročnější úlohy, například automatické generování titulků. Díky tomu může hlavní instance zůstat lehká a stabilní i při vyšší zátěži.</p>
<h3 id="komunitní-spolupráce-">Komunitní spolupráce 🤝<a hidden class="anchor" aria-hidden="true" href="#komunitní-spolupráce-">#</a></h3>
<p>Runner pro titulky se stal základem pro jednu hezkou komunitní akci. Společně se nám podařilo připravit českou verzi videa, které slouží jako barvitý úvod do světa sociální sítě Fediverse. Video představuje alternativní pohled na sociální média s respektem k soukromí, důrazem na uživatele a bez vlivu velkých technologických firem.</p>
<p>Na překladu a zpracování se podíleli:</p>
<ul>
<li>autor videa: <a href="https://mastodon.social/@_elena">Elena Rossini</a> a tým</li>
<li>produkce: <a href="https://social.dytrych.cloud/@jan">Jan Dytrych</a></li>
<li>dabing: <a href="https://mastodon.arch-linux.cz/@Onqa6">Zloběna</a></li>
<li>časování audia: <a href="https://schmaker.eu/profile/schmaker">Schmaker</a></li>
<li>skript: Jann</li>
</ul>
<iframe title="Úvod do Fediverse: Moderní podoby sociální sítě" width="560" height="315" src="https://vhsky.cz/videos/embed/hNuFEJwjbcubMgsVnqtoXz" style="border: 0px;" allow="fullscreen" sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>
<h2 id="openalt-2025">OpenAlt 2025<a hidden class="anchor" aria-hidden="true" href="#openalt-2025">#</a></h2>
<p>Největším testem byl OpenAlt. Podařilo se vystreamovat všechny přednášky, což ukázalo, že technické zázemí drží i pod zátěží. OpenAlt znovu potvrdil, že dělat projekty otevřeně a komunitně má smysl a bylo fajn potkat lidi, kteří přemýšlejí podobně.</p>
<h2 id="díky-patří-">Díky patří 🙏<a hidden class="anchor" aria-hidden="true" href="#díky-patří-">#</a></h2>
<p>Velké poděkování patří moderátorům, kteří udržují komunitu funkční a atmosféru slušnou zvlášť <a href="https://schmaker.eu/profile/schmaker">Schmakerovi</a> za dlouhodobou a konzistentní práci.</p>
<p>Díky také <a href="https://eischmann.cz/">Jiřímu Eischmannovi</a>, bez kterého by VHSky.cz vůbec nevznikly.</p>
<p>A velké díky Adamu Štrauchovi a týmu z <a href="https://rosti.cz/">rosti.cz</a> za poskytnutí výkonného zázemí pro OpenAlt runnery a za dlouhodobě vstřícný přístup k open-source projektům. Bez této podpory by streamování OpenAltu v takovém rozsahu nebylo možné.</p>
<h2 id="co-dál-">Co dál 🚀<a hidden class="anchor" aria-hidden="true" href="#co-dál-">#</a></h2>
<p>Pokračovat v obsahu a dál zapojovat komunitu i tady patří velký dík Schmakerovi, který na tom odvádí obrovský kus práce.</p>
<p>Pokud to vyjde, rádi bychom se příští rok znovu objevili na OpenAltu s větším klidem a zkušenostmi z letoška.</p>
<h2 id="závěr">Závěr<a hidden class="anchor" aria-hidden="true" href="#závěr">#</a></h2>
<p>VHSky.cz není o číslech, reklamě ani honbě za rychlým růstem. Dává smysl tehdy, když dává smysl lidem, kteří ho sledují, podporují nebo se na něm jakkoli podílejí. Rok 2025 ukázal, že tenhle přístup funguje.</p>
<p>Díky všem, kteří u toho byli ať už sledováním, pomocí, finanční podporou nebo obyčejnou zpětnou vazbou. Právě tohle drží projekt při životě. Pokračujeme dál.</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="https://blog.oscloud.cz/tags/vhsky/">Vhsky</a></li>
<li><a href="https://blog.oscloud.cz/tags/peertube/">Peertube</a></li>
</ul>
<nav class="paginav">
<a class="next" href="https://blog.oscloud.cz/posts/vitejte-na-oscloud-news/">
<span class="title">Next »</span>
<br>
<span>Vítejte na Oscloud News</span>
</a>
</nav>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="https://blog.oscloud.cz/">Oscloud News</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>