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.