python jupyter zvuk
Co má Mario společného se zvuky a Pythonem? Melodie z této populární hry vás upozorní na dokončení programu nebo na chybu.
To vše díky malé knihovně Chime, která umí přehrávat zvuky. A nejen ze hry Mario.
Šikovná upozornění
Určitě to znáte.
Pustíte skript v Pythonu a nevíte přesně, za jak dlouho skončí. Přepnete do jiné aplikace a pracujete v ní. Mezitím se občas přepnete zpátky (Ctrl-Tab, Cmd-Tab), abyste zkontrolovali, jestli už skript skončil.
Přepínání se několikrát opakuje a vás to nebaví. Chcete se nějak dozvědět, jestli skript skončil úspěšně nebo jestli v průběhu havaroval.
Šikovná upozornění
Přesně pro tyto účely se hodí malá knihovna chime. Ta má na starosti jen jednu jedinou věc - přehrávat zvuky.
Díky tomu můžete používat zvuková oznámení v Pythonu. Snadno.
Instalace
Knihovnu nainstalujete pomocí jednoduchého příkazu pip, který je nejrozšířenějším správcem Python balíčků.
pip install chime
Pokud používáte správce balíčků conda, použijte následující příkaz:
conda install chime
Poznámka: musíte mít povolený kanál conda-forge.
Začínáme
Knihovna chime není nijak komplikovaná. Spíše naopak.
# Import knihoven, které budete používat
import chime
import time
Pro začátek si vystačíte s pouhými 4 funkcemi, které přehrávají zvuková oznámení.
Informace
chime.info()
Úspěch
chime.success()
Varování
chime.warning()
Chyba
chime.error()
Zvuky v akci
Zkuste si pustit následující program, který poběží 3 vteřiny. Na konci se přehraje zvukové oznámení.
print('Tohle bude trvat 3s ...')
for i in range(1,4):
print('...', i)
time.sleep(1)
print('Hotovo!')
chime.success()
Zvuková témata
Pokud by vám výchozí zvukové téma, které se jmenuje chime, přišlo příliš fádní, můžete si ho snadno změnit.
chime.theme('mario')
chime.success()
Jak už bylo zmíněno v úvodu, chime obsahuje zvuky z populární herní plošinovky Mario.
Tento typ oznámení se vám nelíbí? Zvolte jiné téma!
Všechny zvuky, všechna témata
Pokud si chcete poslechnout všechny zvuky obsažené ve všech tématech, vyzkoušejte následující kód:
zvuky = [chime.info, chime.success, chime.warning, chime.error]
for zvukove_tema in chime.themes():
chime.theme(zvukove_tema)
for zvuk in zvuky:
print(f"{zvukove_tema}: {zvuk.__name__}")
zvuk(sync=True) # Python počká, až se zvuk přehraje celý
Synchronní či asynchronní
Určitě jste si v předchozím příkladu všimli parametru sync=True
.
Standardně je tento parametr nastaven na False
a znamená, že se zvuk přehrává asynchronně.
Neboli, že se zvuk začne přehrávat, ale Python nečeká na jeho ukončení a pokračuje dál.
V předchozím příkladu naopak chceme, aby se zvuky přehrávaly postupně a aby jeden nejdřív skončil, než se začne přehrávat další.
Proto je nastaven parametr na sync=True
.
Vlastní zvuky
Chcete si vytvořit vlastní zvuková témata? Není nic snazšího.
Stačí jen najít adresář, kam se knihovna chime nainstalovala.
Např. pomocí:
chime.__file__
/Users/username/miniconda3/envs/python/lib/python3.9/site-packages/chime.py
V tomto adresáři najdete adresář themes
, kde vytvoříte novou složku a nahrajete do ní následující 4 soubory:
error.wav
info.wav
success.wav
warning.wav
Název složky je zároveň názvem zvukového tématu.
Kouzla v Jupyteru
Pokud používáte Jupyter Notebook, budou se vám určitě hodit magické příkazy, které obstarají práci za vás.
Pokud spuštění buňky skončí úspěšně, automaticky se přehraje chime.success()
.
Pokud se vyskytne chyba, dozvíte se o ní díky chime.error()
.
To je hodně pohodlné.
Stačí jen načíst jupyter rozšíření...
%load_ext chime
... a použít na začátku buňky magic command.
%%chime
Vyzkoušejte si vše s následujícími příklady.
Nejdřív si napište jednoduchou funkci:
def tahle_funkce_bude_dlouha(pocet=3):
"""Funkce, která chvíli spí"""
print(f"Tohle bude trvat {pocet}s...")
for i in range(1,pocet+1):
print('...', i)
time.sleep(1)
print('Hotovo!')
Toto skončí dobře:
%%chime
tahle_funkce_bude_dlouha(3)
A toto skončí s chybou:
%%chime
tahle_funkce_bude_dlouha('XYZ')