|
36 | 36 | from subprocess import Popen, PIPE, DEVNULL # noqa |
37 | 37 | import re |
38 | 38 | import sys |
| 39 | +from shutil import copy2 |
39 | 40 | from shared import is_already_running |
40 | 41 |
|
41 | 42 |
|
@@ -151,7 +152,15 @@ def ensure_single_instance(debugging=False): |
151 | 152 | SETTINGS_FILE = Path(args.settings_path).absolute() if args.settings_path and USING_TAURI_FRONTEND else DEFAULT_SETTINGS_FILE |
152 | 153 | if OLD_SETTINGS_FILE.exists(): |
153 | 154 | 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 | + |
155 | 164 |
|
156 | 165 | PHANTOMJS_DIR = Path('phantomjs') |
157 | 166 | # 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): |
301 | 310 | if DatabaseConnection.DATABASE_FILE.exists(): |
302 | 311 | print('not moving database because file already exists') |
303 | 312 | 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 |
305 | 321 | try: |
306 | 322 | with DatabaseConnection() as conn: |
307 | 323 | pass |
@@ -377,7 +393,7 @@ def activate_instance(port=2001, default_timeout=0.5, to_port=2004): |
377 | 393 | all_tracks, all_tracks_sorted = {}, [] |
378 | 394 | url_metadata: dict(URLMetadata) = {} |
379 | 395 | tray_playlists = [t('Playlists Tab')] |
380 | | - CHECK_MARK = '✓' |
| 396 | + CHECK_MARK = '✓' |
381 | 397 | music_folders, device_names = [], [(f'{CHECK_MARK} ' + t('Local device'), 'device:0')] |
382 | 398 | music_queue, done_queue, next_queue = deque(), deque(), deque() |
383 | 399 | # usage: background_thread sleep(1) if seek_queue, seek_queue.pop(), seek_queue.clear(), call set_pos |
|
0 commit comments