Add global downloader lock

This commit is contained in:
sqozz 2021-09-30 15:19:14 +02:00
parent a1da53cbca
commit 05a3bb34f3
1 changed files with 29 additions and 1 deletions

30
sync.py
View File

@ -1,8 +1,12 @@
from urllib.parse import urlparse, quote
from pathlib import Path
import os.path
import os
import configparser
import subprocess
import pdb
import datetime
import time
import sys
def read_config():
config = configparser.RawConfigParser()
@ -26,7 +30,31 @@ def download_channel(target_directory, channel_url, options="", update_mpd=False
p = subprocess.Popen(["youtube-dl", *options.split(" "), *mpd_update_options, channel_url], cwd=target_directory)
p.wait()
def lock_downloader():
if os.path.isfile("lockfile"):
return False
else:
with open("lockfile", "w") as fd:
print("Creating lockfile")
timestamp = int(datetime.datetime.now().timestamp())
fd.write(str(timestamp) + "\n")
return True
def unlock_downloader():
os.remove("lockfile")
lock_success = lock_downloader()
if not lock_success:
with open("lockfile", "r") as fd:
timestamp = fd.readline().strip()
time = datetime.datetime.fromtimestamp(int(timestamp))
print("Downloader already running. It was started at {}".format(time))
sys.exit(1)
config = read_config()
mixes = get_mixes(config["general"]["mixes_dir"])
for folder,url in mixes:
download_channel(folder, url, config["youtube-dl"]["options"], update_mpd=config["mpd"]["update"], mpd_root=config["mpd"]["mpd_root"])
print("Download operation finished. Releasing lockfile now.")
unlock_downloader()