API Dokumentace

Kompletní dokumentace API endpointů pro Zpěvníkář

Autentizace pomocí Cookies

API používá cookies pro autentizaci. Zde je návod, jak je získat a použít.

Jak získat cookies z prohlížeče?

  1. Otevři aplikaci v prohlížeči a přihlas se
  2. Otevři Developer Tools (F12 nebo Ctrl+Shift+I)
  3. Jdi na záložku Application (Chrome) nebo Storage (Firefox)
  4. Vlevo najdi Cookies → klikni na URL tvé aplikace
  5. Zkopíruj hodnoty všech cookies začínajících na __clerk

Použití v Pythonu

import requests

BASE_URL = "https://your-domain.com"
cookies = {
    "__clerk_db_jwt": "YOUR_COOKIE_VALUE",
    "__session": "YOUR_SESSION_VALUE"
}

response = requests.post(
    f"{BASE_URL}/api/import-song",
    json={"url": "...", "save": True},
    cookies=cookies
)

⚠️ Důležité: Cookies expirují po odhlášení nebo po určité době. Pokud dostaneš chybu 401, znovu se přihlas a zkopíruj nové cookies.

Podporované zdroje pro import

API podporuje import písní z následujících zdrojů:

Písničky Akordy

https://pisnicky-akordy.cz/jarek-nohavica/kdyz-me-brali-za-vojaka

SuperMusic

https://www.supermusic.cz/piesen.php?id=1591

YouSongs

https://yousongs.cz/pisen/4147-Hop-trop-Tri-krize.aspx

KaraokeTexty

https://www.karaoketexty.cz/texty-pisni/vypsana-fixa/krasny-smutny-den-576185
POST
/api/import-song

Importuje píseň z externího zdroje (pisnicky-akordy.cz, supermusic.cz/sk, nebo yousongs.cz)

Request Body

Content-Type: application/json
Schema:
{
  "url": "string (required) - URL písně z podporovaného zdroje",
  "save": "boolean (optional) - Pokud true, uloží píseň přímo do databáze"
}
Example:
{
  "url": "https://pisnicky-akordy.cz/jarek-nohavica/kdyz-me-brali-za-vojaka",
  "save": false
}

Response

Status:
200
Example:
{
  "title": "Když mě brali za vojáka",
  "artist": "Jaromír Nohavica",
  "content": "[verse]\n[Ami]Když mě brali za vojáka..."
}

Příklady použití

// Vlož do konzole prohlížeče (F12 → Console)
// Musíš být přihlášený na webu

const response = await fetch('/api/import-song', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  credentials: 'include', // Důležité: posílá cookies automaticky
  body: JSON.stringify({
    url: 'https://pisnicky-akordy.cz/jarek-nohavica/kdyz-me-brali-za-vojaka',
    save: true  // true = uloží do databáze, false = jen vrátí data
  })
});

const data = await response.json();
console.log(data);
POST
/api/generate-pdf

Generuje PDF zpěvník z písní

Request Body

Content-Type: application/json
Schema:
{
  "songs": "array (required) - Pole písní",
  "showChords": "boolean (required) - Zobrazit akordy v PDF",
  "sortBy": "string (required) - Řazení: \"title\" nebo \"created_at\""
}
Example:
{
  "songs": [
    {
      "title": "Název písně",
      "artist": "Autor",
      "content": "[verse]\n[Ami]Text písně...",
      "note": "Poznámka (optional)",
      "created_at": "2024-01-01T00:00:00Z"
    }
  ],
  "showChords": true,
  "sortBy": "title"
}

Response

Status:
200
Example:
PDF binary data

Příklady použití

// Vlož do konzole prohlížeče (F12 → Console)
// Musíš být přihlášený na webu

const response = await fetch('/api/generate-pdf', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  credentials: 'include', // Důležité: posílá cookies automaticky
  body: JSON.stringify({
    songs: [
      {
        title: 'Název písně',
        artist: 'Autor',
        content: '[verse]\n[Ami]Text písně...',
        note: null,
        created_at: '2024-01-01T00:00:00Z'
      }
    ],
    showChords: true,
    sortBy: 'title'
  })
});

const blob = await response.blob();
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'zpevnik.pdf';
a.click();

Chybové kódy

400
Bad Request - Neplatný požadavek
401
Unauthorized - Neplatné nebo expirované cookies
500
Internal Server Error - Chyba serveru