98 lines
3.9 KiB
Python
98 lines
3.9 KiB
Python
import os
|
|||
|
|
import sys
|
||
|
|
import shutil
|
||
|
|
|
||
|
|
def write_to_quodlibet(file, lines):
|
||
|
|
with open(os.path.join(quodlibet_path, file), 'w') as fp:
|
||
|
|
for item in lines:
|
||
|
|
if not item.startswith("#"):
|
||
|
|
item = item.replace("\\", "/").replace("D:", "/data").replace("&","&")
|
||
|
|
if os.path.exists(item):
|
||
|
|
fp.write("%s\n" % item)
|
||
|
|
else:
|
||
|
|
print("File does not exist: %s in %s" % (item, os.path.join(win_dir_path, file + ".m3u")))
|
||
|
|
ret = input("Continue?(y/n)\n")
|
||
|
|
if ret == "n":
|
||
|
|
print("Exit")
|
||
|
|
exit()
|
||
|
|
if os.path.exists(os.path.join(quodlibet_path, file + ".xspf")):
|
||
|
|
os.remove(os.path.join(quodlibet_path, file + ".xspf"))
|
||
|
|
|
||
|
|
def write_to_linux(file, lines):
|
||
|
|
with open(os.path.join(linux_dir_path, file), 'w') as fp:
|
||
|
|
for item in lines:
|
||
|
|
if not item.startswith("#"):
|
||
|
|
fp.write("%s\n" % item.replace("\\", "/").replace("D:", "/data").replace("../..","/data/Nextcloud/Music"))
|
||
|
|
|
||
|
|
def write_to_nextcloud(file, lines):
|
||
|
|
with open(os.path.join(nc_dir_path, file), 'w') as fp:
|
||
|
|
for item in lines:
|
||
|
|
item = item.replace("/data/Nextcloud/Music", "../..").replace("&","&")
|
||
|
|
if not item.startswith("#"):
|
||
|
|
fp.write("%s\n" % item)
|
||
|
|
|
||
|
|
def write_to_win(file, lines):
|
||
|
|
with open(os.path.join(win_dir_path, file), 'w') as fp:
|
||
|
|
for item in lines:
|
||
|
|
item = item.replace("../..","/data/Nextcloud/Music").replace("/data", "D:").replace("/", "\\")
|
||
|
|
if not item.startswith("#"):
|
||
|
|
fp.write("%s\n" % item)
|
||
|
|
|
||
|
|
def copy_to_garmin(lines):
|
||
|
|
for sourceFile in lines:
|
||
|
|
if not sourceFile.startswith("#"):
|
||
|
|
|
||
|
|
sourceFile = sourceFile.replace("../..","/data/Nextcloud/Music").replace("&","&")
|
||
|
|
if os.path.isfile(sourceFile):
|
||
|
|
shutil.copy(sourceFile, "/data/Nextcloud/Music/Garmin")
|
||
|
|
else:
|
||
|
|
|
||
|
|
print("WARNING: %s not found"%sourceFile)
|
||
|
|
|
||
|
|
def read_linux(file):
|
||
|
|
if os.path.exists(os.path.join(quodlibet_path, file + ".xspf")):
|
||
|
|
with open(os.path.join(quodlibet_path, file + ".xspf")) as f:
|
||
|
|
linux_file_lines = f.read().split("</location>")[:-1]
|
||
|
|
linux_file_lines = [line.split("<location>")[1] for line in linux_file_lines]
|
||
|
|
elif os.path.exists(os.path.join(quodlibet_path, file)):
|
||
|
|
with open(os.path.join(quodlibet_path, file)) as f:
|
||
|
|
linux_file_lines = f.read().splitlines()
|
||
|
|
return linux_file_lines
|
||
|
|
|
||
|
|
arguments = sys.argv[1:]
|
||
|
|
print(arguments)
|
||
|
|
win_dir_path = "/data/Nextcloud/Music/Playlists/Win10"
|
||
|
|
linux_dir_path = "/data/Nextcloud/Music/Playlists/Ubuntu"
|
||
|
|
nc_dir_path = "/data/Nextcloud/Music/Playlists/Nextcloud"
|
||
|
|
quodlibet_path = "/home/lucas/.config/quodlibet/playlists"
|
||
|
|
|
||
|
|
win_files = os.listdir(win_dir_path)
|
||
|
|
linux_files = os.listdir(linux_dir_path)
|
||
|
|
nc_files = os.listdir(nc_dir_path)
|
||
|
|
|
||
|
|
linux_files = [os.path.splitext(file)[0] for file in linux_files]
|
||
|
|
win_files = [os.path.splitext(file)[0] for file in win_files]
|
||
|
|
nc_files = [os.path.splitext(file)[0] for file in nc_files]
|
||
|
|
file_set = set(nc_files)
|
||
|
|
for file in file_set:
|
||
|
|
if file[0] == ".":
|
||
|
|
print("Skip: %s" % file)
|
||
|
|
continue
|
||
|
|
file_path_m3u = os.path.join(nc_dir_path, file + ".m3u")
|
||
|
|
file_path_m3u8 = os.path.join(nc_dir_path, file + ".m3u8")
|
||
|
|
file_path = ""
|
||
|
|
if os.path.exists(file_path_m3u):
|
||
|
|
file_path = file_path_m3u
|
||
|
|
elif os.path.exists(file_path_m3u8):
|
||
|
|
file_path = file_path_m3u8
|
||
|
|
with open(file_path) as f:
|
||
|
|
nc_files_lines = f.read().splitlines()
|
||
|
|
write_to_linux(file.replace(".m3u", ""), nc_files_lines)
|
||
|
|
print("Copy to Linux: %s" % file)
|
||
|
|
write_to_win(file + ".m3u", nc_files_lines)
|
||
|
|
print("Copy to Win: %s" % file)
|
||
|
|
if file in arguments:
|
||
|
|
copy_to_garmin(nc_files_lines)
|
||
|
|
print("Copy to Garmin")
|
||
|
|
|
||
|
|
|