[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 = False # 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 = 6 # 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 =