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 urllib.parse import urlparse, quote
from pathlib import Path from pathlib import Path
import os.path
import os
import configparser import configparser
import subprocess import subprocess
import pdb import datetime
import time
import sys
def read_config(): def read_config():
config = configparser.RawConfigParser() 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 = subprocess.Popen(["youtube-dl", *options.split(" "), *mpd_update_options, channel_url], cwd=target_directory)
p.wait() 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() config = read_config()
mixes = get_mixes(config["general"]["mixes_dir"]) mixes = get_mixes(config["general"]["mixes_dir"])
for folder,url in mixes: for folder,url in mixes:
download_channel(folder, url, config["youtube-dl"]["options"], update_mpd=config["mpd"]["update"], mpd_root=config["mpd"]["mpd_root"]) 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()