Add global downloader lock
This commit is contained in:
parent
a1da53cbca
commit
05a3bb34f3
30
sync.py
30
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()
|
||||
|
|
Loading…
Reference in a new issue