Aplikacja kliencka dla systemu Linux / WSL służąca do automatycznego zgrywania, katalogowania i porządkowania podcastów z aplikacji mobilnej TOK FM bezpośrednio z telefonu podłączonego pod USB (MTP).
Skrypt automatycznie odczytuje pliki .mp3 pobrane na telefonie, odpytuje bazę danych i stronę TOK FM w celu odtworzenia oryginalnych nazw odcinków, po czym kopiuje je do uporządkowanej struktury katalogów na Twoim komputerze.
Autor aplikacji często jeździ rowerem i w tym czasie chętnie słucha audycji TOK FM. Słuchanie bezpośrednio ze smartfona ma jednak spore wady – szybko rozładowuje baterię telefonu, a obsługa ekranu dotykowego podczas dynamicznej jazdy jest skrajnie niewygodna i niebezpieczna.
Zdecydowanie lepszym, trwalszym i bezpieczniejszym rozwiązaniem jest korzystanie z dedykowanego odtwarzacza MP3/MP4 z fizycznymi przyciskami w połączeniu ze słuchawkami zausznymi (np. kostnymi). Pozwala to na komfortowe słuchanie ulubionych audycji przy zachowaniu pełnego kontaktu z otoczeniem i słyszeniu dźwięków ruchu drogowego (np. nadjeżdżających z tyłu samochodów). Ten projekt powstał po to, aby błyskawicznie przetransferować i uporządkować legalnie pobrane pliki podcastów na tradycyjne urządzenie grające.
Note
Program został zoptymalizowany pod kątem działania w środowisku Linux (w tym WSL - Windows Subsystem for Linux).
Tip
Aplikacja została oryginalnie stworzona kilka lat temu przez kerszl. W 2026 roku kod przeszedł gruntowną modernizację, optymalizację oraz dostosowanie do nowego układu strony TOK FM w trybie pair-programmingu z asystentem AI Antigravity od Google DeepMind.
Important
Ważna informacja prawna:
- Repozytorium nie zawiera ani nie udostępnia żadnych plików audycji czy materiałów dźwiękowych.
- Aby pobrać podcasty na swój telefon (które ten skrypt następnie kopiuje i porządkuje), musisz posiadać aktywny abonament TOK FM Premium. Skrypt służy wyłącznie jako pomocnicze narzędzie do porządkowania własnych, legalnie pobranych plików na prywatnym odtwarzaczu.
- Logowanie w stylu
pwntools: przejrzyste, kolorowe i animowane komunikaty w konsoli informujące o postępie prac ([*],[+],[-]). - Automatyczne wykrywanie katalogów telefonu: automatycznie rozpoznaje strukturę katalogów aplikacji TOK FM na telefonie (
/moved/lub/files/). - Inteligentne połączenie WSL-USB (MTP): weryfikuje połączenie telefonu przez USBIPD w WSL, a w razie potrzeby automatycznie montuje telefon przez
jmtpfs. - Dynamiczny Fallback: jeśli na telefonie znajduje się plik odcinka, którego nie ma w lokalnej bazie danych, program w locie pobierze metadane bezpośrednio z dedykowanej strony podcastu.
- Wypełnianie luk w bazie: zaawansowane parametry aktualizacji (
forcelub limit stron) ułatwiające odtworzenie brakującej historii podcastów. - Auto-konfiguracja: wykrywa nowe audycje i generuje gotowy do wklejenia kod konfiguracyjny JSON.
Do montowania telefonu przez MTP wymagany jest pakiet jmtpfs:
sudo apt update
sudo apt install jmtpfsgit clone https://github.com/kerszl/tokfm-oymd.git
cd tokfm-oymd
pip3 install -r requirements.txtPodłącz telefon do portu USB (jeśli używasz WSL, upewnij się, że urządzenie MTP jest udostępnione do WSL przez usbipd). Następnie uruchom:
python tokfm-oymd.py kopiujProgram automatycznie zweryfikuje połączenie, zamontuje pamięć telefonu, przeskanuje pliki, dopasuje ich nazwy i skopiuje je do odpowiednich katalogów według schematu:
Result/Nieprzesluchane/[Nazwa Audycji]/[Rok - Miesiąc]/[Dzień] - [Tytuł odcinka].mp3
Warning
Uwaga: Zdefiniowane w skrypcie tokfm-oymd.py ścieżki (punkt montowania telefonu oraz katalog docelowy zapisu plików na komputerze) muszą być dostosowane do Twoich rzeczywistych ścieżek w systemie plików.
Aby zaktualizować lokalną bazę danych SQLite najnowszymi odcinkami ze strony internetowej TOK FM:
python tokfm-oymd.py update [full/lite] [force/liczba_stron]full– aktualizuje wszystkie audycje zdefiniowane w plikutok-fm-full.json.lite– aktualizuje tylko wybrane audycje (ulubione) zdefiniowane w plikutok-fm-fav.json.force– wyłącza domyślne szybkie zatrzymywanie na duplikatach i przeszukuje całą historię stron danej audycji.[liczba_stron](np.5) – przeszukuje dokładnie zadeklarowaną liczbę stron wstecz, ignorując pojedyncze duplikaty (przydatne do uzupełniania niedawnych braków).
Weryfikuje stan odsłuchania podcastów i przenosi przesłuchane/nieprzesłuchane odcinki między odpowiednimi katalogami:
python tokfm-oymd.py move_heardpython tokfm-oymd.py search_podcasttok-fm-fav.json– konfiguracja Twoich ulubionych audycji (dla opcjiupdate lite).tok-fm-full.json– konfiguracja wszystkich śledzonych audycji (dla opcjiupdate full).tokfm.db– lokalna baza SQLite przechowująca metadane wszystkich odcinków.
