Skrypt Radio2Podcast
O skrypcie
Krótki opis
Stworzyłem Radio2Podcast do nagrywania audycji radiowych i przekształcania ich w podcasty. Można wybrać stację, ustawić czas nagrywania i zapisać pliki lokalnie, na serwerze FTP, SFTP lub w NextCloud.
Skrypt można pobrać tutaj: Radio2Podcast 0.052
Lista zmian
- 2024-12-28 wydano wersję 0.052
- Skrypt wykonuje konwersję audio tylko raz dla każdej unikalnej konfiguracji parametrów (format, bitrate, kanały), co przyspiesza działanie i zmniejsza obciążenie procesora.
- Dodano obsługę formatu AAC/M4A (
libfdk_aac
) z profilem HE-AAC.
- 2024-10-20 wydano wersję 0.051
- Dodano SFTP jako nową lokalizację zapisu, obok lokalnego, FTP i NextCloud.
- Nagrywanie odbywa się teraz w formacie .ts z oryginalną jakością strumienia, przed konwersją do wybranego formatu (np. mp3 lub opus).
- Dodano obsługę pauz podczas nagrywania (np. do pomijania reklam), kontrolowanych za pomocą parametrów wiersza poleceń. Więcej informacji w sekcji użycia.
- 2024-08-30 wydano wersję 0.05
- Zmieniłem nazwę skryptu z RSRS na Radio2Podcast.
- Zmiany w logice skryptu – od teraz nazwy audycji i stacji mogą składać się z kilku wyrazów. Jeśli tytuł audycji lub nazwa stacji zawierają specyficzne znaki diakrytyczne, skrypt zachowuje je w RSS, ale podczas tworzenia ścieżek do plików zastępuje je odpowiednikami łacińskimi.
- Dodano do config.json możliwość wyboru ścieżki zapisu plików lokalnie. Domyślnie jest to ./ (czyli lokalizacja skryptu), ale można użyć innego katalogu.
- 2024-07-18 wydano wersję 0.04
- Wiele drobnych poprawek, aby skrypt był bardziej wygodny w użyciu, zmieniając parametry wywołujące skrypt, dodając funkcję monitorującą liczbę plików przechowywanych lokalnie.
- 2024-05-01 wydano wersję 0.3
- Dodano podstawową obsługę podcastów. Skrypt przesyła plik na serwer FTP do odpowiedniego folderu, a następnie sprawdza listę plików audio w tym folderze i generuje plik RSS przy każdym uruchomieniu. Plik RSS jest zgodny ze standardami – chociaż nadal nie wiem, dlaczego nie można go dodać do PocketCasts. W innych aplikacjach do podcastów wszystko działa poprawnie. Plik RSS odnosi się do okładki w folderze, okładka musi być plikiem nazwanym podcast.jpg. Dodatkowo poprawiono zarządzanie ścieżkami plików.
- 2024-04-03 wydano wersję 0.02
- Skrypt został całkowicie przebudowany. Można wybrać format pliku (mp3 lub opus), bitrate i kanały (stereo lub mono) dla każdego miejsca docelowego. Umożliwia to zapisanie pliku lokalnie w formacie .opus 32kbps stereo, na FTP w formacie mp3 32kbps mono i w Nextcloud w formacie .opus 16kbps mono. Ta funkcja będzie również przydatna, gdy skrypt zacznie obsługiwać podcasty. Dodałem obsługę aac(m4a) do planu rozwoju.
- 2024-03-29 wydano wersję 0.01
Plan rozwoju
- wiele formatów
Możliwość zapisu różnych typów plików w zależności od lokalizacji (przykład: .mp3 na serwer FTP i .opus w NextCloud)(zrobione w wersji 0.02)- ~~Możliwość użycia formatów opus, mp3, aac/m4a ~~ (zrobione w wersji 0.052)
- obsługa podcastów
Jeśli użytkownik zdecyduje się na zapis plików na FTP, skrypt powinien generować RSS podcastu.(zrobione w wersji 0.03)Kanał powinien być zgodny ze standardami podcastów.(zrobione w wersji 0.05)- Przepisanie kodu generującego RSS. Zamiast biblioteki pod2gen, użycie feedgen.
- Skrypt powinien generować prosty obraz okładki.
- ścieżka zapisu plików
Dodanie do pliku config.json możliwości wyboru ścieżki zapisu plików lokalnych. Przydatne, jeśli skrypt działa na VPS, na którym jednocześnie działa serwer WWW.(zrobione w wersji 0.05)Dodanie obsługi SFTP(zrobione w wersji 0.05)- Dodanie obsługi Mega.nz
- Dodanie obsługi Dropbox
- modularność
- Przebudowa skryptu, żeby składał się z modułów/podskryptów odpowiedzialnych tylko za fragment działania kodu. Obecnie wszystko skumulowane w jednym skrypcie podczas gdy łatwiej będzie edytować skrypt i pracować nad jego konkretnymi fragmentami (np. modułem tworzenia rss).
Jak używać skryptu
Przed pierwszym użyciem
Zainstaluj:
- Python 3
- pip (menedżer pakietów Pythona)
- ffmpeg (z obsługą
libfdk_aac
) - Moduły Pythona:
webdavclient3
,pod2gen
,paramiko
Parametry działania:
- Nazwa stacji – nazwa strumienia radiowego.
- Nazwa audycji – do tworzenia folderów i nazw plików.
- Czas nagrywania – określony w minutach.
- Miejsce zapisu – użyj flagi
-s
, aby wskazać lokalizacje zapisu: lokalnie, FTP, SFTP lub NextCloud. Można wybrać jedno lub kilka miejsc. - Pauzy i segmenty – użyj flagi
-p
aby robić pauzy podczas nagrywania i pomijać niepożądane fragmenty, np. reklamy.
Działanie w praktyce
python3 r2p.py "BBC Radio 1" "Morning Show" 25 -s local nextcloud -p 10,3,15
Skrypt nagra strumień BBC Radio 1 przez łącznie 25 minut, zapisując nagranie lokalnie i na NextCloud. Nagranie rozpocznie się i będzie trwało 10 minut, następnie skrypt zrobi pauzę na 3 minuty, a potem skrypt wznowi nagrywanie na kolejne 15 minut. Pozwala to na pominięcie niechcianych części, takich jak reklamy, poprzez kontrolowanie segmentów nagrywania i pauz.
W systemie Linux możesz użyć crontaba (tabeli Cron) aby zaplanować nagrywanie i stworzyć harmonogram nagrywania. Oto przewodnik, jak to zrobić.
Generowanie kanału RSS
Skrypt automatycznie generuje kanał RSS za każdym razem, gdy plik jest przesyłany na serwer FTP/SFTP, przekształcając nagrane audycje w podcast. Ta funkcja upraszcza dystrybucję nagranych audycji radiowych jako podcastu, co ułatwia słuchaczom subskrybowanie i automatyczne otrzymywanie nowych odcinków.