From cddc09b3360ffdc000b95b523e307de485f87fc5 Mon Sep 17 00:00:00 2001 From: admin_jk Date: Fri, 20 Feb 2026 10:19:19 -0700 Subject: [PATCH] namer upload --- lxc3/namer.yml | 15 ++ lxc3/namer/namer.cfg | 319 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 334 insertions(+) create mode 100644 lxc3/namer.yml create mode 100644 lxc3/namer/namer.cfg diff --git a/lxc3/namer.yml b/lxc3/namer.yml new file mode 100644 index 0000000..8ceba09 --- /dev/null +++ b/lxc3/namer.yml @@ -0,0 +1,15 @@ +services: + namer1: + container_name: namer1 + image: ghcr.io/theporndatabase/namer:latest + environment: + - PUID=1000 + - PGID=1000 + - NAMER_CONFIG=/config/namer.cfg + volumes: + - /docker/namer:/config + - /pool/other/namer/failed:/mnt/sorting/failed + - /pool/other/namer/renamed:/mnt/sorting/tagged + - /pool/other/namer/watch:/mnt/sorting/watch + - /pool/other/namer/work:/mnt/sorting/work + restart: always \ No newline at end of file diff --git a/lxc3/namer/namer.cfg b/lxc3/namer/namer.cfg new file mode 100644 index 0000000..778e512 --- /dev/null +++ b/lxc3/namer/namer.cfg @@ -0,0 +1,319 @@ +[namer] + +# token to access porndb. +# sign up here: https://theporndb.net/register +porndb_token = uzmdtpIZpGtZG0G5J2pU8Aifk0ldtTRrSD8ZlxMndd4755f9 + +# You should likely never edit this, unless you know regex really well and wont ask for help when you mess up. +# Seriously don't edit it. +name_parser = {_site}{_sep}{_optional_date}{_ts}{_name}{_dot}{_ext} + +# How to write output file name. When namer.py is run this is applied in place +# (next to the file to be processed). +# If you are running watchdog see new_relative_path_name in the watchdog section. +# +# Supports stand python 3 formatting, as well as: +# * a prefix: +# {site: 1p} - in this case put one space in front of the 'site', so ' Vixen' +# * a suffix: +# {date:_1s} - in this case put one underscore after the 'date', so '2020-01-01_' +# * an infix: +# {date:_2i} - in this case put two underscore before and after the 'date', so '__2020-01-01__' +# +# Examples: +# * {site} - {date} - {scene}.{ext} +# * {site}/{date}.{scene}.{ext} +# +# Missing values will be ignored. +# +# Allowed replacements: +# +# * 'date' - in the format of YYYY-MM-DD. +# * 'year' - just the year of the scene/movie. +# * 'description' - too long, don't use in a name. +# * 'name' - the scene/movie name +# * 'site' - the site or studio name, BrazzersExxtra, AllHerLuv, Deeper, etc with spaces removed. +# * 'full_site' - the full site/studio name from porndb, unmodified, i.e: Brazzers Exxtra, All Her Luv, etc. +# * 'parent' - the parent site/studio name from porndb, unmodified, i.e: Brazzers, etc. +# * 'full_parent' - the parent full site/studio name from porndb, unmodified, i.e: Brazzers, Vixen, etc. +# * 'network' - the network site or studio name, MindGeek, Vixen, etc with spaces removed. +# * 'full_network' - the network full site/studio name from porndb, unmodified, i.e: Mind Geek, Vixen, etc. +# * 'performers' - comma seperated list of female performers +# * 'all_performers' - comma seperated list of all performers +# * 'performer-sites' - comma seperated list of female performer-sites +# * 'all_performer-sites' - comma seperated list of all performer-sites +# * 'act' - an act, parsed from original file name, don't use. +# * 'ext' - original file's extension, you should keep this. +# * 'source_file_name' - original file name +# * 'source_file_stem' - What was originally parsed without parsed extension +# * 'video_codec' - video codec of file, like h264 +# * 'audio_codec' - audio codec of file, like acc +# * 'trans' - 'TS', or 'ts' if detected in original file name. +# * 'type' - "movie" or "scene" depending on tpdb api used to find the metadata (/scenes or /movies) +# * 'resolution' - 480p, 720p, 1080p, 4k, or any other integer +# * 'vr', is the studio is a known vr studio, 'vr', else '', can be used for folder names, like ../adult{vr}/.. +# +# This should not contain paths, as files will be processed in place when called on the command line from namer. +# +# Also note that jinja2 filters are support: +# https://jinja.palletsprojects.com/en/3.1.x/templates/#list-of-builtin-filters +# Like {site:|lower} or {name:|title|replace(' ', '.'))} +inplace_name={full_site} - {date} - {name} [WEBDL-{resolution}].{ext} + +#inplace_name_scene= +#inplace_name_movie= +#inplace_name_jav= + +# If a directory name is to be preferred over a file name. +# Directories are calculated by taking the first part of a relative path +# to the watch_dir location, or as input to namer via -d parameter. +prefer_dir_name_if_available = True + +# minimum file size to process in MB, ignored if a file is to be processed +min_file_size = 1 + +# Should namer's comparison log be written next to successfully moved videos. +write_namer_log = False + +# Should namer's comparison log be written next to failed videos. +write_namer_failed_log = True + +# Comma separated list of extensions for namer to process (in order of preference in case multiple types exist in a target directory) +# Case insensitive, Only mp4 supports tagging. +target_extensions = mp4,mkv,avi,mov,flv,wmv,mpg,mpeg,ts,webm,3gp,f4v,f4a,f4b,f4p,m4a,m4v + +# Should new and moved files have permissions and ownership set. +update_permissions_ownership = False + +# Settings for new/moved files/dirs. +set_dir_permissions = 775 +set_file_permissions = 664 + +# Setting uid and groupid for new and moved files. +# Use the id numbers, not names. Defaults to process uid/gid in non windows systems. + +#set_uid = +#set_gid = + +# If you want the trailers downloaded set the value relative to the final location of the movie file here. +# Currently assumes directory per video, and doesn't work in vast majority of cases (cdns with caches busted, +# expired view tokens, etc.) +# Plex: Trailers/trailer.{ext}, or extras/Trailer-trailer.{ext} +# Jellyfin: trailer/trailer.{ext} +# Extensions are handled by the download's mime type. +# Leave empty to not download trailers. +trailer_location = + +# Comma seperated list of sites whose date information in tpdb is known to be sketchy at best as the +# values are set to the scrape time, not the video release date. +sites_with_no_date_info = + +# Comma seperated list of sites/studios whose Sites/Studios where namer will prefer matching movies +# instead of scenes as default behavior +# will also switch the type flag from 'movie' to 'scene'. +movie_data_preferred = missax + +# Comma seperated list of vr studios, this will be used to set the vr name flag. +vr_studios = 18 VR,Babe VR,Badoink VR,Dorm Room,Kink VR,Real VR,RealJamVR,Sex Like Real,SexBabesVR,SinsVR,SLR Originals,Swallowbay,Virtual Taboo,VirtualRealPorn,VR Bangers,VR Cosplay X,VR Hush,VRConk,VRedging,Wankz VR + +# a set of tags that indicates an individual video is vr. +vr_tags = virtual reality, vr porn + +# Site abbreviations are short strings converted to longer strings in the site section of a parse file name. +# Useful to match files whose names include the abbreviations rather than full site names. +# A one line json string that should be a map. +site_abbreviations = {"bex" : "BrazzersExxtra", "ps": "PropertySex"} + +# When guessing at matches namer can use performer names to attempt to match. This can be costly in terms of cpu time. +# Plus who lists all the performers if over 6 on a scene's name? You can increase this, but the cpu/runtime cost increases +# rapidly (combinatorial) +max_performer_names = 6 + +# When plex hack is set to True, any matches of e##s## are removed from the Scene name. +plex_hack = False + +# Cleanup final filename +path_cleanup = False + +# Path where stores namer system data. +database_path = /mnt/config/database + +# use namer database. +use_database = False + +# Cache http requests +use_requests_cache = True + +# Amount of minutes that http request would be in cache +requests_cache_expire_minutes = 10 + +# Leave this unset unless you are testing a new tpdb endpoint. +override_tpdb_address = + +# Without modify the enconding where possible covert container (aka file types) to this +# desired container type ("mp4", "mkv", "avi", ect), plugged in to the command: +# "ffmpeg -i input.mkv -c copy output." +convert_container_to = + +[Phash] +# Calculate and use phashes in search for matches +search_phash = True + +# Should phashes be sent to tpdb if no phash match was found but a name match was. +# Requires search_phash be true or is ignored. +send_phash = False + +# Use alternative phash generator (might be faster, not 100% compatible) +use_alt_phash_tool = False + +# Max ffmpeg processes for alternative phash generation, empty for auto select +max_ffmpeg_workers = + +# Use gpu for alternative phash generation +use_gpu = False + +[metadata] +# Currently metadata pulled from the porndb can be added to mp4 files or .nfo files. +# MP4 metadata will be read in fully by Plex, and Apple TV app, partially by Jellyfin (no artist support). +# Metadata includes, Title, Release Date, Scene Name, Artist, Source URL, XXX Movie rating. +# If a file is not an mp4 adding metadata at this time isn't supported. +# .nfo files are supported by a number of players, though some require plugins. + +# Write an nfo file next to the directory in an emby/jellyfin readable format +write_nfo = False + +# Should metadata fetched from the porn db be written in to the metadata of the mp4. +enabled_tagging = True + +# Should the poster fetched from the porn db be written in to the metadata of the mp4. +# This poster will be displayed in Plex, Jellyfin and Apple TV app. +# Controls downloading of images for .nfo and mp4 tagging. +enabled_poster = False + +# List of which images would be downloaded options are: poster,background,performer +download_type = poster,background,performer + +# Downloaded images format: png or jpeg +image_format = png + +# These genres are noisey and not recommend for use. If this is false a single default +# genre will be used. These are called Tags on the porndb json response objects, genre's +# in plex/jellyfin - and could be added as Tags to jellyfin. Unfortunately jellyfin doesn't +# support searching tags, so tpdb jellyfin plugin writes tags to genres, this flag will +# mirror that behavior for mp4s and .nfo files. It does appear jellyfin will get tag filtering +# in the 10.8 release due to a few prs out there. +enable_metadataapi_genres = False + +# If genre's are not copied this is the default genre added to files. +# Default value is adult. +default_genre = Adult + +# if language is set it will be used to select the default audio stream in an mp4 that has too many default stream +# to play correct in quicktime/apple tv. If the language isn't found or is already the only default no action is +# taken, no streams (audio/video) are re-encoded. See: https://iso639-3.sil.org/code_tables/639/data/ +language = eng + +# Should tpdb be used to keep track of which videos you've collected? +mark_collected = true + +[duplicates] + +# If this is set to false duplicates will be discarded, and a rough selection criteria can be configured below +# to select the retained video +preserve_duplicates = False + +# If set to -1, no max resolution is set. Others selecting 720, 1080, 2160, 4380, etc will limit retained videos +# to the desired resolution. If a too large video is the only one available it will be retained. Defautls to 4380 +max_desired_resolutions = -1 + +# The codecs in order that you want to retain. +# by default hevc is preferred to h264, which is preferred vs everything else. +desired_codec = hevc, h264 + +[watchdog] + +# If the file path found by watcher matches this regex, it will not trigger processing. +ignored_dir_regex = .*_UNPACK_.* + +# when processing a directory should other files be removed. +# to keep other files this must be false and new_relative_path_name must contain a directory split, "/" +del_other_files = False + +# After a video has appeared in the watch dir, an extra number of seconds to wait to allow the +# copying or unzipping of other files in to that directory. Prevents leaving orphaned files in dirs with +# with no movies of you have del_other_files set to True. +extra_sleep_time = 30 + +# Maximum amount of items in queue +queue_limit = 0 + +# Sleep time between queue size check +queue_sleep_time = 5 + +# Configured like inplace_name above, but with paths, and is relative to +# dest_dir, which is where completed files will be moved to. +new_relative_path_name={full_site} - {date} - {name}.{ext} + +new_relative_path_name_scene= +new_relative_path_name_movie= +new_relative_path_name_jav= + +# director where new downloads go. +watch_dir = /mnt/sorting/watch + +# temporary directory where work is done. +# a log file shows attempted matches and match closeness. +work_dir = /mnt/sorting/work + +# Should processing fail the file or directory is moved here. +# retries occur every 12 hours. Files can be manually moved to watch-dir +# to force reprocessing. +failed_dir = /mnt/sorting/failed + +# dir where finalized files get written. +dest_dir = /mnt/sorting/tagged + +# When to retry failed items, default is a random minute during the 3 am hour in your timezone. +retry_time = + +# Run webserver while running watchdog. +web = True + +# port to run on +port = 6980 + +# target host +host = 0.0.0.0 + +# webroot (root url to place pages), useful for reverse proxies +#web_root = + +# Allow to delete files in web interface +allow_delete_files = False + +# Add columns from failed log to table in web interface +add_columns_from_log = False + +# Add creation date from failed log to table in web interface +add_complete_column = False + +# Set logger level to debug +debug = True + +# Set logger output format +console_format = {time:YYYY-MM-DD HH:mm:ss} | {level.icon} {level: <8} | {message} + +# Manual mode, successful matches will go to failed directory +manual_mode = False + +# Errors may be raised by the program, and when they are loguru may be used to help explain them, showing +# values in the stack trace, potentially including the porndb token, this setting should only be turned on +# if you are going to check an logs you share for your token. +diagnose_errors = False + +[webhook] +# Enable webhook notification when a file is successfully renamed +webhook_enabled = False + +# URL to send HTTP POST notification to when a file is successfully renamed +#webhook_url = \ No newline at end of file