В моем приложении Django я загружаю видео с YouTube в какую-то папку внутри MEDIA_ROOT
.
Я также связываю загруженный файл с FileField
модели под названием видео.
Проблема возникает, когда заголовок видео содержит некоторые специальные символы. Например, «Idiot Test - 90% fail» будет сохранен на диск с удаленным %
, поэтому при сопоставлении этого файла по названию видео с моделью я получаю сообщение об ошибке, что такой файл не существует, потому что я передаю оригинал название видео (не прочитанное с диска) на FileField
, которое содержит %
.
Как я могу решить это? Должен ли я сначала удалить заголовок видео каких-либо специальных символов? Но тогда мне нужно было бы обслуживать то, что разрешено в разных ОС. Есть ли лучшее решение?
downloaded_path = pytube.download(sampler_settings.AUDIO_PATH, video_title)
downloaded = File(open(downloaded_path, 'rb'))
# create folder by the name of current session key where the downloaded file will be stored
session_folder = os.path.join(sampler_settings.AUDIO_PATH, session_key)
os.mkdir(session_folder)
main_sample = MainSample()
main_sample.session_key = session_key
main_sample.audio = os.path.join(session_folder, video_title)
main_sample.save()