Synchronize writing of downloads to avoid numbered folders like 'AJR (1)'.

This commit is contained in:
天クマ 2026-01-24 20:02:26 -03:00
commit 728c6068cd

View file

@ -36,6 +36,8 @@ public class DownloadService extends Service {
private ExecutorService executor; private ExecutorService executor;
private DownloadNotification notification; private DownloadNotification notification;
private static final Object lock = new Object();
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
@ -88,14 +90,19 @@ public class DownloadService extends Service {
root = DocumentFile.fromFile(new File(location)); root = DocumentFile.fromFile(new File(location));
} }
DocumentFile artist = root.findFile(MusicUtil.ascii(song.artistName)); DocumentFile artist;
DocumentFile album;
synchronized (lock) {
artist = root.findFile(MusicUtil.ascii(song.artistName));
if (artist == null) { if (artist == null) {
artist = root.createDirectory(MusicUtil.ascii(song.artistName)); artist = root.createDirectory(MusicUtil.ascii(song.artistName));
} }
DocumentFile album = artist.findFile(MusicUtil.ascii(song.albumName)); album = artist.findFile(MusicUtil.ascii(song.albumName));
if (album == null) { if (album == null) {
album = artist.createDirectory(MusicUtil.ascii(song.albumName)); album = artist.createDirectory(MusicUtil.ascii(song.albumName));
} }
}
String fileName = song.discNumber + "." + song.trackNumber + " - " + MusicUtil.ascii(song.title) + "." + song.container; String fileName = song.discNumber + "." + song.trackNumber + " - " + MusicUtil.ascii(song.title) + "." + song.container;
DocumentFile audio = album.createFile("audio/" + song.container, fileName); DocumentFile audio = album.createFile("audio/" + song.container, fileName);