Skip to content

Commit 6ec98d2

Browse files
committed
Fix os rename across drives
1 parent 0f65c8c commit 6ec98d2

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

src/music_caster.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
from subprocess import Popen, PIPE, DEVNULL # noqa
3737
import re
3838
import sys
39+
from shutil import copy2
3940
from shared import is_already_running
4041

4142

@@ -151,7 +152,15 @@ def ensure_single_instance(debugging=False):
151152
SETTINGS_FILE = Path(args.settings_path).absolute() if args.settings_path and USING_TAURI_FRONTEND else DEFAULT_SETTINGS_FILE
152153
if OLD_SETTINGS_FILE.exists():
153154
SETTINGS_FILE.parent.mkdir(parents=True, exist_ok=True)
154-
os.rename(OLD_SETTINGS_FILE, SETTINGS_FILE)
155+
try:
156+
os.rename(OLD_SETTINGS_FILE, SETTINGS_FILE)
157+
except OSError as e:
158+
if e.winerror == 17:
159+
copy2(OLD_SETTINGS_FILE, SETTINGS_FILE)
160+
os.remove(OLD_SETTINGS_FILE)
161+
else:
162+
raise e
163+
155164

156165
PHANTOMJS_DIR = Path('phantomjs')
157166
# c:\Users\maste\AppData\Local\Programs\Music Caster\settings.json
@@ -301,7 +310,14 @@ def activate_instance(port=2001, default_timeout=0.5, to_port=2004):
301310
if DatabaseConnection.DATABASE_FILE.exists():
302311
print('not moving database because file already exists')
303312
else:
304-
os.rename(DatabaseConnection.OLD_DATABASE_FILE, DatabaseConnection.DATABASE_FILE)
313+
try:
314+
os.rename(DatabaseConnection.OLD_DATABASE_FILE, DatabaseConnection.DATABASE_FILE)
315+
except OSError as e:
316+
if e.winerror == 17:
317+
copy2(DatabaseConnection.OLD_DATABASE_FILE, DatabaseConnection.DATABASE_FILE)
318+
os.remove(DatabaseConnection.OLD_DATABASE_FILE)
319+
else:
320+
raise e
305321
try:
306322
with DatabaseConnection() as conn:
307323
pass
@@ -377,7 +393,7 @@ def activate_instance(port=2001, default_timeout=0.5, to_port=2004):
377393
all_tracks, all_tracks_sorted = {}, []
378394
url_metadata: dict(URLMetadata) = {}
379395
tray_playlists = [t('Playlists Tab')]
380-
CHECK_MARK = ''
396+
CHECK_MARK = '✓'
381397
music_folders, device_names = [], [(f'{CHECK_MARK} ' + t('Local device'), 'device:0')]
382398
music_queue, done_queue, next_queue = deque(), deque(), deque()
383399
# usage: background_thread sleep(1) if seek_queue, seek_queue.pop(), seek_queue.clear(), call set_pos

0 commit comments

Comments
 (0)