Compare commits
No commits in common. "ae51948ce3f877b5e2a2b563e677d3e36eb90a48" and "ded4072361ff681a9bb3522a653de9508b9f9922" have entirely different histories.
ae51948ce3
...
ded4072361
2 changed files with 0 additions and 156 deletions
|
@ -1,12 +0,0 @@
|
||||||
{
|
|
||||||
"general": {
|
|
||||||
"download": true,
|
|
||||||
"emoteMenu": true,
|
|
||||||
"hideEmojiMenu": false,
|
|
||||||
"modifiers": true,
|
|
||||||
"animateOnHover": false
|
|
||||||
},
|
|
||||||
"categories": {
|
|
||||||
"twitchsubscriber": false,
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,144 +0,0 @@
|
||||||
#!/bin/python3
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import subprocess
|
|
||||||
from datetime import datetime
|
|
||||||
import requests
|
|
||||||
import hashlib
|
|
||||||
from urllib.parse import urlparse
|
|
||||||
import signal
|
|
||||||
import argparse
|
|
||||||
|
|
||||||
# Default Constants
|
|
||||||
DEFAULT_WORKDIR = "/mnt/Apps/Syncthing/UserData/Aroy/Pictures/Reference/gallery-dl"
|
|
||||||
CONFIG = "gallery-dl.conf"
|
|
||||||
DATETIME = datetime.now().strftime("%F_%H-%M-%S")
|
|
||||||
|
|
||||||
|
|
||||||
# Handle Ctrl-C
|
|
||||||
def handle_sigint(signal_received, frame):
|
|
||||||
print("\nProcess interrupted. Cleaning up...")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
signal.signal(signal.SIGINT, handle_sigint)
|
|
||||||
|
|
||||||
|
|
||||||
# Function to check if lock file exists
|
|
||||||
def check_lock(site, workdir):
|
|
||||||
lock_file = os.path.join(workdir, f".gallery-dl-{site}.lock")
|
|
||||||
if os.path.isfile(lock_file):
|
|
||||||
print(f"Lock file exists for {site}. Skipping...")
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
open(lock_file, "w").close()
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
# Function to remove lock file
|
|
||||||
def remove_lock(site, workdir):
|
|
||||||
lock_file = os.path.join(workdir, f".gallery-dl-{site}.lock")
|
|
||||||
if os.path.isfile(lock_file):
|
|
||||||
os.remove(lock_file)
|
|
||||||
print(f"Removed lock file: {lock_file}")
|
|
||||||
|
|
||||||
|
|
||||||
# Function to send a push notification
|
|
||||||
def push_notice(site):
|
|
||||||
title = f"Run done for {site}"
|
|
||||||
data = f"Run done for {site}."
|
|
||||||
headers = {"Title": title, "Priority": "normal", "Tags": "info"}
|
|
||||||
requests.post(
|
|
||||||
"https://ntfy.aroy-art.com/g11M8PwuAYBTDYCi", headers=headers, data=data
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Generate descriptive sitename from URL
|
|
||||||
def generate_site_name_from_url(url):
|
|
||||||
parsed_url = urlparse(url)
|
|
||||||
hostname = parsed_url.hostname or "unknown-site"
|
|
||||||
path_hash = hashlib.md5(parsed_url.path.encode("utf-8")).hexdigest()[:8]
|
|
||||||
return f"{hostname}-{path_hash}"
|
|
||||||
|
|
||||||
|
|
||||||
# Function to execute gallery-dl command
|
|
||||||
def execute_gallery_dl(input_source, log_file, sitename, workdir, extra_args=None):
|
|
||||||
if check_lock(sitename, workdir):
|
|
||||||
log_path = os.path.join(workdir, "logs", sitename, f"{log_file}-{DATETIME}.log")
|
|
||||||
command = [
|
|
||||||
"/home/aroy/.local/bin/gallery-dl",
|
|
||||||
"-c",
|
|
||||||
os.path.join(workdir, CONFIG),
|
|
||||||
"-d",
|
|
||||||
workdir,
|
|
||||||
"--mtime-from-date",
|
|
||||||
"--write-metadata",
|
|
||||||
"--write-log",
|
|
||||||
log_path,
|
|
||||||
]
|
|
||||||
if os.path.isfile(input_source):
|
|
||||||
command.extend(["--input-file", input_source])
|
|
||||||
else:
|
|
||||||
command.append(input_source)
|
|
||||||
|
|
||||||
if extra_args:
|
|
||||||
for arg in extra_args:
|
|
||||||
command.extend(["-o", arg])
|
|
||||||
|
|
||||||
subprocess.run(command)
|
|
||||||
remove_lock(sitename, workdir)
|
|
||||||
push_notice(sitename)
|
|
||||||
|
|
||||||
|
|
||||||
# Main execution block
|
|
||||||
if __name__ == "__main__":
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description="Run gallery-dl with specified input and options."
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-i", "--input_source", help="Sitename, URL, or input file", required=False
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--workdir", default=DEFAULT_WORKDIR, help="Override the working directory"
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-o",
|
|
||||||
"--option",
|
|
||||||
action="append",
|
|
||||||
help="Additional arguments for gallery-dl, can be used multiple times",
|
|
||||||
)
|
|
||||||
|
|
||||||
args, remaining = parser.parse_known_args()
|
|
||||||
|
|
||||||
# If input_source is not given with -i, treat the last argument as input_source
|
|
||||||
input_source = (
|
|
||||||
args.input_source
|
|
||||||
if args.input_source
|
|
||||||
else (remaining[-1] if remaining else None)
|
|
||||||
)
|
|
||||||
extra_args = args.option if args.option else []
|
|
||||||
workdir = args.workdir
|
|
||||||
|
|
||||||
if not input_source:
|
|
||||||
print("Error: No input source provided.")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if input_source.startswith("http://") or input_source.startswith("https://"):
|
|
||||||
sitename = generate_site_name_from_url(input_source)
|
|
||||||
elif os.path.isfile(input_source):
|
|
||||||
sitename = os.path.splitext(os.path.basename(input_source))[0]
|
|
||||||
else:
|
|
||||||
potential_file = os.path.join(workdir, f"user-urls-{input_source.lower()}.txt")
|
|
||||||
if os.path.isfile(potential_file):
|
|
||||||
input_source = potential_file
|
|
||||||
sitename = input_source.lower().split("-")[-1].split(".")[0]
|
|
||||||
else:
|
|
||||||
print(
|
|
||||||
f"Error: Input '{input_source}' is not a valid URL, file, or predefined source."
|
|
||||||
)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
execute_gallery_dl(input_source, f"log-{sitename}", sitename, workdir, extra_args)
|
|
||||||
|
|
||||||
print(f"Done at {datetime.now().strftime('%F_%H-%M-%S')}")
|
|
||||||
print("Purr Done!")
|
|
Loading…
Add table
Reference in a new issue