diff --git a/conjurer_musician/conjurer_musician.py b/conjurer_musician/conjurer_musician.py index 6775cf6..12bcf5d 100644 --- a/conjurer_musician/conjurer_musician.py +++ b/conjurer_musician/conjurer_musician.py @@ -29,6 +29,8 @@ from flask import ( send_from_directory, ) from waitress import serve +import media_search_functions + MAIN_BOT_ADDRESS = "http://192.168.1.191:5000" MUSIC_TRACKER = "/prepped_tracks" diff --git a/conjurer_musician/media_search_functions.py b/conjurer_musician/media_search_functions.py new file mode 100644 index 0000000..87a2712 --- /dev/null +++ b/conjurer_musician/media_search_functions.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +import argparse +import json +import os +import sys +import uuid +from pathlib import Path + +# CONFIGURATION +JSON_DB = '/var/log/share_scan.json' +SHARE_DIR = Path('/var/www/html/share') +BASE_URL = 'https://czernobog.pl/share' + +# Ensure share directory exists +SHARE_DIR.mkdir(parents=True, exist_ok=True) + +def load_db(): + with open(JSON_DB) as f: + return json.load(f)['entries'] + +ENTRIES = load_db() + +def relevancy(path, keywords): + score = 0 + low = path.lower() + for kw in keywords: + if kw.lower() in low: + score += low.count(kw.lower()) + return score + +def find_matches(count, keywords): + scored = [] + for e in ENTRIES: + score = relevancy(e['path'], keywords) + if score > 0: + scored.append((score, e['path'])) + scored.sort(reverse=True, key=lambda x: x[0]) + result = [p for _, p in scored] + return result[:count] + +def publish(paths): + urls = [] + for path in paths: + token = uuid.uuid4().hex + link = SHARE_DIR / token + try: + os.symlink(path, link) + except FileExistsError: + pass + urls.append(f"{BASE_URL}/{token}") + return urls +