fix: sanitize song title for file name (#644)

This commit is contained in:
Kingkor Roy Tirtho 2023-08-26 00:40:50 +06:00
parent 08b627e86a
commit 1a7ea0ce6a
3 changed files with 8 additions and 3 deletions

View File

@ -14,6 +14,7 @@ import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/provider/youtube_provider.dart'; import 'package:spotube/provider/youtube_provider.dart';
import 'package:spotube/services/download_manager/download_manager.dart'; import 'package:spotube/services/download_manager/download_manager.dart';
import 'package:spotube/services/youtube/youtube.dart'; import 'package:spotube/services/youtube/youtube.dart';
import 'package:spotube/utils/primitive_utils.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
class DownloadManagerProvider extends ChangeNotifier { class DownloadManagerProvider extends ChangeNotifier {
@ -130,7 +131,7 @@ class DownloadManagerProvider extends ChangeNotifier {
String getTrackFileUrl(Track track) { String getTrackFileUrl(Track track) {
final name = final name =
"${track.name} - ${TypeConversionUtils.artists_X_String(track.artists ?? <Artist>[])}.m4a"; "${track.name} - ${TypeConversionUtils.artists_X_String(track.artists ?? <Artist>[])}.m4a";
return join(downloadDirectory, name); return join(downloadDirectory, PrimitiveUtils.toSafeFileName(name));
} }
bool isActive(Track track) { bool isActive(Track track) {

View File

@ -57,4 +57,8 @@ abstract class PrimitiveUtils {
}), }),
); );
} }
static String toSafeFileName(String str) {
return str.replaceAll(RegExp(r'[^\w\s\.\-_]'), "_");
}
} }

View File

@ -1090,10 +1090,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: media_kit_libs_android_audio name: media_kit_libs_android_audio
sha256: "767a93c44da73b7103a1fcbe2346f7211b7c44fa727f359410e690a156f630c5" sha256: f16e67d4c5a85cb603290da253456bc8ea3d85d932c778e3afd11195db2dc26d
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.1" version: "1.3.2"
media_kit_libs_ios_audio: media_kit_libs_ios_audio:
dependency: "direct main" dependency: "direct main"
description: description: