From 7492061f58505ae6a8fe1fccb40f182e6b3f27c0 Mon Sep 17 00:00:00 2001 From: pierre geeraert Date: Tue, 30 Jun 2026 23:55:35 +0100 Subject: [PATCH] add some options for podcast aggregator , multiple urls --- django_code/apps/podcast_aggregator/admin.py | 6 +++++ django_code/apps/podcast_aggregator/apps.py | 3 ++- .../migrations/0001_initial.py | 25 +++++++++++++++++++ .../migrations/0002_podcastdata_enabled.py | 18 +++++++++++++ django_code/apps/podcast_aggregator/models.py | 1 + django_code/apps/podcast_aggregator/utils.py | 10 ++++++-- 6 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 django_code/apps/podcast_aggregator/migrations/0001_initial.py create mode 100644 django_code/apps/podcast_aggregator/migrations/0002_podcastdata_enabled.py diff --git a/django_code/apps/podcast_aggregator/admin.py b/django_code/apps/podcast_aggregator/admin.py index 8c38f3f..9479bd9 100644 --- a/django_code/apps/podcast_aggregator/admin.py +++ b/django_code/apps/podcast_aggregator/admin.py @@ -1,3 +1,9 @@ from django.contrib import admin +from import_export.admin import ImportExportModelAdmin +from import_export import resources +from .models import podcastData # Register your models here. +@admin.register(podcastData) +class JobAdmin(ImportExportModelAdmin): + list_display = ('podcast_name','podcast_url','enabled') diff --git a/django_code/apps/podcast_aggregator/apps.py b/django_code/apps/podcast_aggregator/apps.py index 24f670d..6a33e27 100644 --- a/django_code/apps/podcast_aggregator/apps.py +++ b/django_code/apps/podcast_aggregator/apps.py @@ -3,4 +3,5 @@ from django.apps import AppConfig class PodcastAggregatorConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' - name = 'podcast_aggregator' + name = 'apps.podcast_aggregator' + label = 'podcast' diff --git a/django_code/apps/podcast_aggregator/migrations/0001_initial.py b/django_code/apps/podcast_aggregator/migrations/0001_initial.py new file mode 100644 index 0000000..7b5ec3a --- /dev/null +++ b/django_code/apps/podcast_aggregator/migrations/0001_initial.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.29 on 2026-06-30 22:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='podcastData', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('podcast_name', models.CharField(max_length=100, null=True)), + ('podcast_url', models.CharField(max_length=100, null=True)), + ], + options={ + 'db_table': 'podcasts', + }, + ), + ] diff --git a/django_code/apps/podcast_aggregator/migrations/0002_podcastdata_enabled.py b/django_code/apps/podcast_aggregator/migrations/0002_podcastdata_enabled.py new file mode 100644 index 0000000..039dec0 --- /dev/null +++ b/django_code/apps/podcast_aggregator/migrations/0002_podcastdata_enabled.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.29 on 2026-06-30 22:08 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('podcast', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='podcastdata', + name='enabled', + field=models.BooleanField(default=True), + ), + ] diff --git a/django_code/apps/podcast_aggregator/models.py b/django_code/apps/podcast_aggregator/models.py index 071c7e4..bdf6bf9 100644 --- a/django_code/apps/podcast_aggregator/models.py +++ b/django_code/apps/podcast_aggregator/models.py @@ -3,5 +3,6 @@ from django.db import models class podcastData(models.Model): podcast_name = models.CharField(max_length=100, null=True) podcast_url = models.CharField(max_length=100, null=True) + enabled = models.BooleanField(default=True) class Meta: db_table = 'podcasts' \ No newline at end of file diff --git a/django_code/apps/podcast_aggregator/utils.py b/django_code/apps/podcast_aggregator/utils.py index b0e3990..c1a8e91 100644 --- a/django_code/apps/podcast_aggregator/utils.py +++ b/django_code/apps/podcast_aggregator/utils.py @@ -8,7 +8,7 @@ def rss_to_dict(url): response = requests.get(url) data = xmltodict.parse(response.content) - #print(data['rss']) + print(data['rss']) title = data['rss']['channel']['title'] @@ -16,7 +16,12 @@ def rss_to_dict(url): #print(data['rss'].keys()) #use first object as it's ordered in a chronological order - today_object = data['rss']['channel']['item'][0] + + + today_object = data['rss']['channel']['item'] + if isinstance(today_object, list): + today_object = data['rss']['channel']['item'][0] + today_title = today_object['title'] today_podcast_url = data['rss']['channel']['item'][0]['enclosure']['@url'] @@ -44,6 +49,7 @@ def podcasts(): telegram.clear_expired_messages() url = "https://feeds.audiomeans.fr/feed/44f6a116-20a6-44c4-98c4-b3e1bdd46dce.xml" + url_bbc = "https://podcast.voice.api.bbci.co.uk/rss/audio/p002vsmz?api_key=Wbek5zSqxz0Hk1blo5IBqbd9SCWIfNbT" today_podcast = rss_to_dict(url) print(today_podcast) file= pretty_filename(today_podcast[1],'mp3')