diff --git a/sync.py b/sync.py index 2d8b88a..15d9ce0 100644 --- a/sync.py +++ b/sync.py @@ -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()