cooperdk / YAPO-e-plus

YAPO e+ - Yet Another Porn Organizer (extended)
https://github.com/cooperdk/YAPO-e-plus
GNU General Public License v3.0
144 stars 15 forks source link

[Feature Request] Extend video information detection, add a tag category and automatic tagging #53

Open TedlyTheTalker opened 3 years ago

TedlyTheTalker commented 3 years ago

I have files of all kinds of resolutions, framerates, extensions, and bitrates in stereo 3D, VR and typical 2D files. I may have some duplicates across types that I want to keep, and some low-resolution duplicates that I might opt to remove.

Some information regarding the video files are already detected. Ideally, this information can be used to generate tags for a new category. I think this information is sufficiently different than the current categories of Actors, Website, and Tags to warrant a new category of tags.

Captured information should minimally include the resolution, framerate, duration, and file size. Other highly useful information: video bitrate, codec, container/extension, display aspect ratio Interesting, less broadly useful information: encoder profile/quality information, color space

Ideally a user can adjust automatic tagging based on the detects. I might want 1280x720p and 1920x1080p files to be tagged as HD, whereas another use might want the 1280x720p file tagged as “HD” and the 1920x1080p file as “FHD.”

Most users probably only care about files that have a framerate above the normal 30FPS tagged as “HFR”, but others may want 23.976 and 24 FPS files tagged as “24p”, 30 FPS files tagged “30p”, etc.

Display aspect ratio can help indicate a VR file, as the video stream resolution isn’t generally atypical.

The other video stream and file characteristics are primarily useful for sorting, understanding the content from the scene page, and duplicate detection and distinction.

Manual tagging in this category can be useful to distinguish other types of information that isn’t necessarily a great fit in with the rest of the tags.

Being able to search and sort the Scene list with all of this information, in addition to sites, actors (actresses) and tags would be very powerful. Perhaps a checkbox to enable viewing the whole category (could be disabled by default) to the scene page would be ideal.

cooperdk commented 3 years ago

This is something that I've been thinking about too, it has to be thought thru carefully since all the strings that can be appended to the string must be carried over to the "garbage string remover" which runs when scanning TpDB for scenes.

YAPO already stores resolution, bitrate, duration, framerate, file size and codec in the current database. It uses ffprobe to find information about the video file, and this can be used to get information about encoder profile and colorspace (pix_fmt; not always reported though). This way, it is not impossible to get a report on low guality scenes that can then be marked as "better quality wanted".

Take a look at videos/ffmpeg_process.py line 406-441 in the develop branch. YAPO uses a ffprobe JSON output to get the information within this function. Here, it's even possible to get information about the used encoder, compatibility, encode date/time, audio channels, aspect ratio (which looks odd if it isn't a true ratio),

YAPO is not going to support automatic searching for pirated content, but that doesn't mean that you can't get a report about what scenes are wanted in better quality.

It's a good idea to let YAPO auto-tag movies with a certain resolution and framerate. In fact, it will already do that, but the "lazy" way, and only when scraping scene data internally (not with the TpDB scanner): If you create a tag named "720p" with the alias "HD", it will tag all scenes that have "720p" in the filename with that tag. This is not ideal because that tag usually does not appear on legally downloaded titles.

I am going to start by collecting more scene information and figure out how to implement this as usable search parameters. I agree it should be possible to sort by fx "low qual files" or "files in SD or less".

cooperdk commented 3 years ago

Currently, YAPO is able to add the size format to a video title/filename. I am going to implement further possibilities, and I will also include in the UI a line to display how many kilobytes/kilobits per second a video is encoded with (average).

Framerate is now rounded to nearest whole number so a 29.9 fps video is registered as 30fps. YAPO will fx be able to tag a video as "HSV" if it is at or above 50 fps. I am going to enable settings to enable all these auto-tagging options later on, but in the video scene view, YAPO will still be able to display if a video is HS or VR (fx double width than height).

You're considering the additional of a category set based on technical data. This makes sense because some people are interested in this data.