diora-web/podcasts/urls.py
mrwnslz 69442f4a4d Smarte Transkription B: Datenmodell, Einstellungen und Test-Endpunkt
TranscriptionSettings (Token Fernet-verschluesselt wie SiteLogin), TranscriptionJob und EpisodeArticle in podcasts; Source.synthetic in feeds, das Refresh, Aufraeumen, OPML-Export, Kommando und Umstellen auf Nachrichten ueberspringt bzw. verweigert. GET/POST /podcasts/transcription/settings/ und POST /podcasts/transcription/test/ (SSRF-Pruefung ueber chapters._open, jetzt auch fuer POST; eingebaute Instanz aus DIORA_WHISPER_URL ausgenommen).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-09 09:27:01 +01:00

68 lines
5.1 KiB
Python

from django.urls import path
from . import audiobooks, discover, folders, radio, transcription, views
urlpatterns = [
path('search/', views.podcast_search, name='podcast_search'),
path('feeds/', views.feed_list, name='podcast_feed_list'),
path('feeds/add/', views.add_feed, name='podcast_add_feed'),
path('feeds/import/', views.import_opml, name='podcast_import_opml'),
path('feeds/export.opml', views.export_opml, name='podcast_export_opml'),
path('feeds/refresh/', views.refresh_feed_now, name='podcast_refresh_feed'),
path('feeds/refresh-all/', views.refresh_all_feeds, name='podcast_refresh_all_feeds'),
path('state/', views.podcast_state, name='podcast_state'),
path('feeds/<int:pk>/remove/', views.remove_feed, name='podcast_remove_feed'),
path('feeds/<int:pk>/set-auto-queue/', views.set_auto_queue, name='podcast_set_auto_queue'),
path('feeds/<int:pk>/settings/', views.feed_settings, name='podcast_feed_settings'),
path('feeds/<int:pk>/move/', views.move_feed, name='podcast_move_feed'),
path('audiobooks/', audiobooks.audiobook_list, name='podcast_audiobooks'),
path('audiobooks/<int:feed_id>/', audiobooks.audiobook_detail, name='podcast_audiobook'),
path('folders/', folders.folders, name='podcast_folders'),
path('folders/rename/', folders.rename_folder, name='podcast_folder_rename'),
path('folders/delete/', folders.delete_folder, name='podcast_folder_delete'),
path('bookmarks/', audiobooks.bookmark_add, name='podcast_bookmark_add'),
path('bookmarks/<int:pk>/', audiobooks.bookmark_update, name='podcast_bookmark_update'),
path('bookmarks/<int:pk>/delete/', audiobooks.bookmark_delete, name='podcast_bookmark_delete'),
path('feeds/<int:pk>/episodes/', views.feed_episodes, name='podcast_feed_episodes'),
path('episodes/', views.episode_list, name='podcast_episode_list'),
path('episodes/favorite/', views.set_favorites, name='podcast_set_favorites'),
path('episodes/discard/', views.discard_episodes, name='podcast_discard_episodes'),
path('episodes/<int:pk>/', views.episode_detail, name='podcast_episode_detail'),
path('episodes/<int:pk>/transcript/', views.episode_transcript, name='podcast_episode_transcript'),
path('episodes/<int:pk>/silences/', views.episode_silences, name='podcast_episode_silences'),
path('episodes/<int:pk>/sponsor/', views.episode_sponsor, name='podcast_episode_sponsor'),
path('episodes/<int:pk>/favorite/', views.set_favorite, name='podcast_set_favorite'),
path('transcription/settings/', transcription.transcription_settings, name='podcast_transcription_settings'),
path('transcription/test/', transcription.transcription_test, name='podcast_transcription_test'),
path('stats/', views.podcast_stats, name='podcast_stats'),
path('queue/', views.queue_get, name='podcast_queue_get'),
path('queue/add/', views.queue_add, name='podcast_queue_add'),
path('queue/remove/', views.queue_remove, name='podcast_queue_remove'),
path('queue/reorder/', views.queue_reorder, name='podcast_queue_reorder'),
path('later/add/', views.later_add, name='podcast_later_add'),
path('later/remove/', views.later_remove, name='podcast_later_remove'),
path('lists/', views.lists_switch, name='podcast_lists_switch'),
path('stream/seen/', views.stream_seen, name='podcast_stream_seen'),
path('radio/', radio.radio, name='podcast_radio'),
path('radio/heard/', radio.radio_heard, name='podcast_radio_heard'),
# Stöbern (docs/podcasts.md, podcasts/discover.py)
path('discover/search/', discover.search_view, name='podcast_discover_search'),
path('discover/similar/<int:pk>/', discover.similar_view, name='podcast_discover_similar'),
path('discover/people/', discover.people_view, name='podcast_discover_people'),
path('discover/person/', discover.person_view, name='podcast_discover_person'),
path('discover/elsewhere/', discover.elsewhere_view, name='podcast_discover_elsewhere'),
path('discover/topics/', discover.topics_view, name='podcast_discover_topics'),
path('discover/forgotten/', discover.forgotten_view, name='podcast_discover_forgotten'),
path('discover/recommend/', discover.recommend_view, name='podcast_discover_recommend'),
path('discover/take/', discover.take_view, name='podcast_discover_take'),
path('settings/', views.podcast_settings, name='podcast_settings'),
path('progress/save/', views.save_progress, name='podcast_save_progress'),
path('progress/mark-played/', views.mark_played, name='podcast_mark_played'),
path('progress/dismiss/', views.dismiss_episodes, name='podcast_dismiss_episodes'),
path('inbox/', views.inbox, name='podcast_inbox'),
path('import-downloads/', views.import_downloads, name='podcast_import_downloads'),
path('import-downloads/clear/', views.clear_import_downloads, name='podcast_clear_import_downloads'),
path('player/', views.player_state, name='podcast_player_state'),
path('player/report/', views.player_report, name='podcast_player_report'),
path('player/command/', views.player_command, name='podcast_player_command'),
path('player/stream/', views.player_stream, name='podcast_player_stream'),
]