Sanitize remote tracks' saving locations with slashes on their names

For that case, the resulting saved file made use of these slashes to
store the tracks in subdirectories of federation_cache/xx/xx/xx, instead of
in the federation_cache/xx/xx/xx directory itself. As a consequence, the
tracks are downloaded in the wrong location, and upon any trial of
playing the tracks, funkwhale responds with the message
"The track cannot be loaded. You can have connectivity issues"

An example of a podcast with this kind of RSS items is located in
https://www.rtve.es/api/programas/2082/audios.rss

This commit overcomes this by a simple replacement of the offending
slashes to hyphens.
This commit is contained in:
Blopware 2021-04-29 19:22:33 +02:00 committed by Georg Krause
parent 33f7993477
commit 0c8f4400b0
No known key found for this signature in database
GPG Key ID: FD479B9A4D48E632
2 changed files with 5 additions and 0 deletions

View File

@ -75,11 +75,15 @@ def set_query_parameter(url, **kwargs):
@deconstructible @deconstructible
class ChunkedPath(object): class ChunkedPath(object):
def sanitize_filename(self, filename):
return filename.replace("/", "-")
def __init__(self, root, preserve_file_name=True): def __init__(self, root, preserve_file_name=True):
self.root = root self.root = root
self.preserve_file_name = preserve_file_name self.preserve_file_name = preserve_file_name
def __call__(self, instance, filename): def __call__(self, instance, filename):
self.sanitize_filename(filename)
uid = str(uuid.uuid4()) uid = str(uuid.uuid4())
chunk_size = 2 chunk_size = 2
chunks = [uid[i : i + chunk_size] for i in range(0, len(uid), chunk_size)] chunks = [uid[i : i + chunk_size] for i in range(0, len(uid), chunk_size)]

View File

@ -0,0 +1 @@
Sanitize remote tracks' saving locations with slashes on their names (#1435)