diff --git a/api/config/settings/common.py b/api/config/settings/common.py index 8af05491fd2b838e69d476e231a2754b56ebdbb0..373c196d66edb07f9a988991ba6059b624ce25c8 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -989,3 +989,5 @@ PODCASTS_THIRD_PARTY_VISIBILITY = env("PODCASTS_THIRD_PARTY_VISIBILITY", default PODCASTS_RSS_FEED_REFRESH_DELAY = env.int( "PODCASTS_RSS_FEED_REFRESH_DELAY", default=60 * 60 * 24 ) +# maximum items loaded through XML feed +PODCASTS_RSS_FEED_MAX_ITEMS = env.int("PODCASTS_RSS_FEED_MAX_ITEMS", default=250) diff --git a/api/funkwhale_api/audio/serializers.py b/api/funkwhale_api/audio/serializers.py index 8f46edc9a919df37c35b3e11b8a45196a10f7b43..310176238ac30e2aa4a1cb767f1197284074bba7 100644 --- a/api/funkwhale_api/audio/serializers.py +++ b/api/funkwhale_api/audio/serializers.py @@ -366,8 +366,10 @@ def get_channel_from_rss_url(url): ) ) if parsed_feed.feed.get("rights"): - track_defaults["copyright"] = parsed_feed.feed.rights - for entry in entries: + track_defaults["copyright"] = parsed_feed.feed.rights[ + : music_models.MAX_LENGTHS["COPYRIGHT"] + ] + for entry in entries[: settings.PODCASTS_RSS_FEED_MAX_ITEMS]: logger.debug("Importing feed item %s", entry.id) s = RssFeedItemSerializer(data=entry) if not s.is_valid(): @@ -510,7 +512,9 @@ class RssFeedSerializer(serializers.Serializer): **artist_kwargs, defaults={ "attributed_to": service_actor, - "name": validated_data["title"], + "name": validated_data["title"][ + : music_models.MAX_LENGTHS["ARTIST_NAME"] + ], "content_category": "podcast", }, ) @@ -695,12 +699,16 @@ class RssFeedItemSerializer(serializers.Serializer): { "disc_number": validated_data.get("itunes_season", 1), "position": validated_data.get("itunes_episode", 1), - "title": validated_data["title"], + "title": validated_data["title"][ + : music_models.MAX_LENGTHS["TRACK_TITLE"] + ], "artist": channel.artist, } ) if "rights" in validated_data: - track_defaults["rights"] = validated_data["rights"] + track_defaults["rights"] = validated_data["rights"][ + : music_models.MAX_LENGTHS["COPYRIGHT"] + ] if "published_parsed" in validated_data: track_defaults["creation_date"] = datetime.datetime.fromtimestamp(