🎉
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
export function constructHeaders(username, password) {
|
||||
const Authorization = constructAuthHeader(username, password);
|
||||
return {
|
||||
Authorization,
|
||||
Accept: "application/json"
|
||||
};
|
||||
}
|
||||
function constructAuthHeader(username, password) {
|
||||
const credentials = `${username}:${password}`;
|
||||
return `Basic ${toBase64(credentials)}`;
|
||||
}
|
||||
function toBase64(data) {
|
||||
const existsTextEncoder= typeof TextEncoder !== 'undefined';
|
||||
if (!existsTextEncoder)
|
||||
return btoa(data);
|
||||
const existsUint8ArrayToBase64= typeof Uint8Array.prototype.toBase64 === 'function';
|
||||
if (existsUint8ArrayToBase64)
|
||||
return new TextEncoder().encode(data).toBase64();
|
||||
|
||||
const binString= Array.from(new TextEncoder().encode(data))
|
||||
.map(x=> String.fromCharCode(x)).join("");
|
||||
return btoa(binString);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<opml version="1.0">
|
||||
<head>
|
||||
<dateCreated>Tue, 21 Apr 2026 11:06:35 GMT</dateCreated>
|
||||
<title>jaa-podcasty subscriptions in CommaFeed</title>
|
||||
</head>
|
||||
<body>
|
||||
<outline text="Epizody z vypršených odběrů" type="rss" title="Epizody z vypršených odběrů" xmlUrl="https://jaandrle.cz/p/2026-04-07.xml" htmlUrl="https://jaandrle.cz/podcasts/" />
|
||||
<outline text="Playlist: Čestmír & Daniela - YouTube" type="rss" title="Playlist: Čestmír & Daniela - YouTube" xmlUrl="http://rss-bridge.jaandrle.cz/?action=display&bridge=YoutubeBridge&token=Chief*Snowplow1*Drastic&context=By+playlist+Id&p=PLPK5bz7v9zh1BFEHQrNri-iCeugTjq1Jj&duration_min=&duration_max=&format=Atom" htmlUrl="http://rss-bridge.jaandrle.cz/?action=display&bridge=YoutubeBridge&token=Chief*Snowplow1*Drastic&context=By+playlist+Id&p=PLPK5bz7v9zh1BFEHQrNri-iCeugTjq1Jj&duration_min=&duration_max=&format=Atom" />
|
||||
<outline text="5:59" type="rss" title="5:59" xmlUrl="https://feeds.transistor.fm/5-59" htmlUrl="https://www.seznamzpravy.cz/" />
|
||||
<outline text="Pinepods News Podcast" type="rss" title="Pinepods News Podcast" xmlUrl="https://news.pinepods.online/feed.xml" htmlUrl="https://news.pinepods.online" />
|
||||
<outline text="Český rozhlas - Věda" type="rss" title="Český rozhlas - Věda" xmlUrl="https://api.mujrozhlas.cz/rss/topic/8c432621-a9a9-4c0a-8376-ea4ae5707fbb.rss" htmlUrl="https://www.mujrozhlas.cz/topic/view/8c432621-a9a9-4c0a-8376-ea4ae5707fbb" />
|
||||
<outline text="Bilance" type="rss" title="Bilance" xmlUrl="https://feeds.transistor.fm/bilance" htmlUrl="https://www.ceskatelevize.cz/porady/14021364946-bilance/" />
|
||||
<outline text="Vlevo dole" type="rss" title="Vlevo dole" xmlUrl="https://feeds.transistor.fm/vlevo-dole" htmlUrl="https://www.seznamzpravy.cz/sekce/vlevo-dole" />
|
||||
<outline text="Afrika" type="rss" title="Afrika" xmlUrl="https://feeds.transistor.fm/afrika" htmlUrl="http://www.voxpot.cz" />
|
||||
<outline text="Přepište dějiny" type="rss" title="Přepište dějiny" xmlUrl="https://anchor.fm/s/404d8bdc/podcast/rss" htmlUrl="https://www.prepistedejiny.cz" />
|
||||
<outline text="PULS" type="rss" title="PULS" xmlUrl="https://feeds.transistor.fm/puls" htmlUrl="https://puls.voxpot.cz" />
|
||||
<outline text="Sféry" type="rss" title="Sféry" xmlUrl="https://predplatne.denikn.cz/podcasts/podcasts/public?code=sfery&token=6d6be77f-3c74-4e95-873c-7eaf48f936a4" htmlUrl="https://denikn.cz/tag/sfery/" />
|
||||
<outline text="Amerika, bejby" type="rss" title="Amerika, bejby" xmlUrl="https://predplatne.denikn.cz/podcasts/podcasts/public?code=amerikabejby&token=6d6be77f-3c74-4e95-873c-7eaf48f936a4" htmlUrl="https://denikn.cz/tag/amerikabejby/" />
|
||||
<outline text="Evropa v souvislostech" type="rss" title="Evropa v souvislostech" xmlUrl="https://www.spreaker.com/show/6034659/episodes/feed" htmlUrl="https://www.spreaker.com/podcast/evropa-v-souvislostech--6034659" />
|
||||
<outline text="Kecy a politika" type="rss" title="Kecy a politika" xmlUrl="https://anchor.fm/s/99c6e0b4/podcast/rss" htmlUrl="https://kecyapolitika.cz" />
|
||||
<outline text="FrontKec podcast" type="rss" title="FrontKec podcast" xmlUrl="https://anchor.fm/s/108d0600c/podcast/rss" htmlUrl="https://www.frontendisti.cz/frontkec" />
|
||||
<outline text="Žárovky" type="rss" title="Žárovky" xmlUrl="https://api.mujrozhlas.cz/rss/podcast/33bb78ff-f079-3bd7-b717-4d6ed480a5b8.rss" htmlUrl="https://www.mujrozhlas.cz/rapi/view/show/33bb78ff-f079-3bd7-b717-4d6ed480a5b8" />
|
||||
<outline text="Smysl pro tumor" type="rss" title="Smysl pro tumor" xmlUrl="https://feeds.transistor.fm/smysl-pro-tumor" htmlUrl="https://www.ceskatelevize.cz" />
|
||||
<outline text="Podcast o Zeměploše Terryho Pratchetta" type="rss" title="Podcast o Zeměploše Terryho Pratchetta" xmlUrl="https://anchor.fm/s/f0417ddc/podcast/rss" htmlUrl="https://podcasters.spotify.com/pod/show/veve3" />
|
||||
<outline text="Online Plus" type="rss" title="Online Plus" xmlUrl="https://api.mujrozhlas.cz/rss/podcast/1e6ac29e-b39d-3d0d-8db2-ce1c74cf75b0.rss" htmlUrl="https://www.mujrozhlas.cz/rapi/view/show/1e6ac29e-b39d-3d0d-8db2-ce1c74cf75b0" />
|
||||
<outline text="IRL: Online Life is Real Life" type="rss" title="IRL: Online Life is Real Life" xmlUrl="https://feeds.simplecast.com/lP7owBq8" htmlUrl="https://irlpodcast.org/" />
|
||||
<outline text="Kocouři paní Figgové" type="rss" title="Kocouři paní Figgové" xmlUrl="https://kocouri.napotitku.cz/feed/podcast/" htmlUrl="https://kocouri.napotitku.cz/podcasts/kocouri-pani-figgove/" />
|
||||
<outline text="Zákulisí sociologie" type="rss" title="Zákulisí sociologie" xmlUrl="https://www.omnycontent.com/d/playlist/452119ab-9cb3-4d72-9381-b2e600f8d1cd/0eda4054-8f27-43dd-98ce-b38a010b760a/c1913cc9-dbdb-4534-951f-b38a010b7613/podcast.rss" htmlUrl="https://talk.youradio.cz/porady/zakulisi-sociologie" />
|
||||
<outline text="Bitcoin a blondýna" type="rss" title="Bitcoin a blondýna" xmlUrl="https://anchor.fm/s/f180aba0/podcast/rss" htmlUrl="https://www.mesec.cz/bitcoin-a-blondyna" />
|
||||
<outline text="S MĚŠCEM V PLUSU" type="rss" title="S MĚŠCEM V PLUSU" xmlUrl="https://anchor.fm/s/1029f4b30/podcast/rss" htmlUrl="https://www.mesec.cz" />
|
||||
<outline text="Destinace Brusel" type="rss" title="Destinace Brusel" xmlUrl="https://api.mujrozhlas.cz/rss/podcast/306aa0d7-12c9-356c-ad32-fee341bc1257.rss" htmlUrl="https://www.mujrozhlas.cz/rapi/view/show/306aa0d7-12c9-356c-ad32-fee341bc1257" />
|
||||
<outline text="Spotlight" type="rss" title="Spotlight" xmlUrl="https://www.spreaker.com/show/5781875/episodes/feed" htmlUrl="https://www.spreaker.com/podcast/spotlight--5781875" />
|
||||
<outline text="Filtr" type="rss" title="Filtr" xmlUrl="https://feeds.captivate.fm/filtr/" htmlUrl="https://pagenotfound.cz/" />
|
||||
<outline text="Lupa.cz" type="rss" title="Lupa.cz" xmlUrl="https://lupacz.libsyn.com/rss" htmlUrl="http://www.lupa.cz" />
|
||||
<outline text="Podcast Živě" type="rss" title="Podcast Živě" xmlUrl="https://www.omnycontent.com/d/playlist/87baeba4-4dea-4967-b7da-b2a300763cfe/fa74f3c8-6b8b-4b1a-8f14-b33f008c2849/57267aa8-2b4e-448e-8606-b33f008c2891/podcast.rss" htmlUrl="https://www.zive.cz/" />
|
||||
<outline text="Podcasty z Matfyzu" type="rss" title="Podcasty z Matfyzu" xmlUrl="https://feed.podbean.com/matfyz/feed.xml" htmlUrl="https://matfyz.podbean.com" />
|
||||
<outline text="Pop Culture Detective: Audio Files – The Pop Culture Detective Agency" type="rss" title="Pop Culture Detective: Audio Files – The Pop Culture Detective Agency" xmlUrl="https://popculturedetective.agency/series/pop-culture-detective-audio-files/feed" htmlUrl="https://popculturedetective.agency" />
|
||||
<outline text="De Facto FSV UK" type="rss" title="De Facto FSV UK" xmlUrl="https://rss.buzzsprout.com/1784031.rss" htmlUrl="https://www.buzzsprout.com/1784031" />
|
||||
<outline text="starojda" type="rss" title="starojda" xmlUrl="https://anchor.fm/s/f4d920c/podcast/rss" htmlUrl="https://www.youtube.com/user/starojda" />
|
||||
<outline text="Škrty" type="rss" title="Škrty" xmlUrl="https://rss.buzzsprout.com/1975085.rss" htmlUrl="https://skrty.buzzsprout.com" />
|
||||
<outline text="Příběh, který se opravdu stal" type="rss" title="Příběh, který se opravdu stal" xmlUrl="https://media.rss.com/pribehkteryseopravdustal/feed.xml" htmlUrl="https://rss.com/podcasts/pribehkteryseopravdustal" />
|
||||
<outline text="Mlčení zabíjí" type="rss" title="Mlčení zabíjí" xmlUrl="https://anchor.fm/s/3d662618/podcast/rss" htmlUrl="https://podcasters.spotify.com/pod/show/mlceni-zabiji" />
|
||||
<outline text="Studio N" type="rss" title="Studio N" xmlUrl="https://predplatne.denikn.cz/podcasts/podcasts/public?code=studio-n&token=6d6be77f-3c74-4e95-873c-7eaf48f936a4" htmlUrl="https://denikn.cz/tag/studio-n/" />
|
||||
<outline text="Vrtěti psem" type="rss" title="Vrtěti psem" xmlUrl="https://predplatne.denikn.cz/podcasts/podcasts/public?code=vrtetipsem&token=6d6be77f-3c74-4e95-873c-7eaf48f936a4" htmlUrl="https://denikn.cz/tag/vrtetipsem/" />
|
||||
<outline text="Chyba systému" type="rss" title="Chyba systému" xmlUrl="https://api.mujrozhlas.cz/rss/podcast/47833fff-1845-3b97-b263-54fe2c4026b7.rss" htmlUrl="https://www.mujrozhlas.cz/rapi/view/show/47833fff-1845-3b97-b263-54fe2c4026b7" />
|
||||
<outline text="Houpačky" type="rss" title="Houpačky" xmlUrl="https://api.mujrozhlas.cz/rss/podcast/367636b7-b3af-39c0-80be-dd0f5c3b16d8.rss" htmlUrl="https://www.mujrozhlas.cz/rapi/view/show/367636b7-b3af-39c0-80be-dd0f5c3b16d8" />
|
||||
<outline text="Zvídavec Evy Sinkovičové" type="rss" title="Zvídavec Evy Sinkovičové" xmlUrl="https://api.mujrozhlas.cz/rss/podcast/590a0a50-7f99-3cd8-98e4-4240c79f8090.rss" htmlUrl="https://www.mujrozhlas.cz/rapi/view/show/590a0a50-7f99-3cd8-98e4-4240c79f8090" />
|
||||
<outline text="Dataři" type="rss" title="Dataři" xmlUrl="https://api.mujrozhlas.cz/rss/podcast/e20ec382-fadb-35e6-b4c8-a9fcf2c8a1c7.rss" htmlUrl="https://www.mujrozhlas.cz/rapi/view/show/e20ec382-fadb-35e6-b4c8-a9fcf2c8a1c7" />
|
||||
<outline text="Vinohradská 12" type="rss" title="Vinohradská 12" xmlUrl="https://api.mujrozhlas.cz/rss/podcast/ee6095c0-33ac-3526-b8bf-df233af38211.rss" htmlUrl="https://www.mujrozhlas.cz/rapi/view/show/ee6095c0-33ac-3526-b8bf-df233af38211" />
|
||||
<outline text="Romancov & spol." type="rss" title="Romancov & spol." xmlUrl="https://predplatne.denikn.cz/podcasts/podcasts/public?code=romancovaspol&token=6d6be77f-3c74-4e95-873c-7eaf48f936a4" htmlUrl="https://denikn.cz/tag/romancovaspol/" />
|
||||
<outline text="Toulky první republikou" type="rss" title="Toulky první republikou" xmlUrl="https://api.mujrozhlas.cz/rss/podcast/8e6624c4-c26d-3e41-a990-c159e6302a63.rss" htmlUrl="https://www.mujrozhlas.cz/rapi/view/show/8e6624c4-c26d-3e41-a990-c159e6302a63" />
|
||||
<outline text="HACKERKA" type="rss" title="HACKERKA" xmlUrl="https://api.mujrozhlas.cz/rss/podcast/4dbaabce-9cb6-3fe9-afaa-93e88cf8e963.rss" htmlUrl="https://www.mujrozhlas.cz/rapi/view/show/4dbaabce-9cb6-3fe9-afaa-93e88cf8e963" />
|
||||
</body>
|
||||
</opml>
|
||||
Executable
+32
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env node
|
||||
import { exit } from "node:process";
|
||||
import { log } from "node:console";
|
||||
|
||||
import { users } from "../.env.js";
|
||||
const credentials= users[0];
|
||||
|
||||
const host= "https://rss.jaandrle.cz/";
|
||||
const Authorization= "Basic " + toBase64(credentials);
|
||||
const headers= { Authorization, Accept: "application/json" };
|
||||
|
||||
const rootCategory= await fetch(host+"rest/category/get", { headers }).then(res=> res.json());
|
||||
const unreadEntries= await fetch(host+"rest/category/entries?id=all&readType=unread", { headers }).then(res=> res.json());
|
||||
|
||||
log({
|
||||
rootCategory,
|
||||
unreadEntries,
|
||||
});
|
||||
exit(0);
|
||||
|
||||
function toBase64(data) {
|
||||
const existsTextEncoder= typeof TextEncoder !== 'undefined';
|
||||
if (!existsTextEncoder)
|
||||
return btoa(data);
|
||||
const existsUint8ArrayToBase64= typeof Uint8Array.prototype.toBase64 === 'function';
|
||||
if (existsUint8ArrayToBase64)
|
||||
return new TextEncoder().encode(data).toBase64();
|
||||
|
||||
const binString= Array.from(new TextEncoder().encode(data))
|
||||
.map(x=> String.fromCharCode(x)).join("");
|
||||
return btoa(binString);
|
||||
}
|
||||
Reference in New Issue
Block a user