Fahrenheit

Added information about file filtering and pseudo files in anime3
(Added information about file filtering and pseudo files in anime3)
Line 87: Line 87:
<b>note</b>: the last link gets encoded to pass in browsers, the actual output is:
<b>note</b>: the last link gets encoded to pass in browsers, the actual output is:
  <tt>ed2k://|file|Full%20Metal%20Panic!%20-%2001%20-%20The%20guy%20I%20kinda%20Like%20is%20a%20Sergeant%20-%20%5BaF%5D(c154d33d)(dub.sub_jp+.de+).avi|238990934|62c078dc6c78597e7a6c81734cc0ee27|/</tt>
  <tt>ed2k://|file|Full%20Metal%20Panic!%20-%2001%20-%20The%20guy%20I%20kinda%20Like%20is%20a%20Sergeant%20-%20%5BaF%5D(c154d33d)(dub.sub_jp+.de+).avi|238990934|62c078dc6c78597e7a6c81734cc0ee27|/</tt>
----
== Custom filters for files ==
The new anime page supports custom filters for files. Currently there are 4 types of filters:
;Deprecated : this filter marks files as deprecated
;Unfiltered : this one checks which files don't get filtered
;Visible : checks to see which files even if marked as to be hidden should be displayed
;Hidden : hides files based on user preferences
The default rules for each filter follow the [[Files:Deprecated_files|Deprecated files] rules currently implemented in AniDB.
----
=== Syntax and some rules ===
Filter Syntax:
Except for element "0", that states how many rules there are, elements follow this format:
"RULE NUMBER":{"RULE SUBJECT #1":"OPERATION,TEST";"RULE SUBJECT #2":"OPERATION,TEST"; etc};
where RULE SUBJECT can be one of the following:
;fdate : File add date
;eusers : Total number of users for this episode
;fusers : Total number of users for this file
;fcrc : File CRC status (valid, invalid, unknown)
;fqual : File quality
;fgroup : File Group Id
;fversion : File version
;finmylist : File is in mylist
;efvisible : Total number of files
;falang : Any of the file audio languages is one of the preferred langs (if using obj.filterAudLang) or given lang
;fslang : Any of the file audio languages is one of the preferred langs (if using obj.filterSubLang) or given lang
;ftype : File type (generic)
;fdeprecated : Is file deprecated
NOTE0: When RULE SUBJECT is prefixed with "c_sf_", there will be test of comparison for all files of the episode and the results of this comparison will be stored in processing Files
NOTE1: When RULE SUBJECT is prefixed with "c_rf_", there will be test of comparison for all files stored in processing Files, and the list will be updated with the results
NOTE2: No RULE SUBJECT prefixed with "c_" imply that you are testing an attribute, think of it as a SQL select where OPERATION can be one of the following:
;> : greater than
;< : lesser than
;>= : greater or equal than
;<= : lesser or equal than
;== : Equal to
;!= : Not equal to
where TEST is the value to test, there are special cases:
;this : will test against the same RULE SUBJECT (only used in "c" prefixed RULE SUBJECTS)
NOTE1: for each RULE NUMBER the RULE SUBJECTS are tested using AND
NOTE2: Will only test RULES until end or a failed test
----
==== Default Unfiltered ====
filterObj.defaultUnfiltered = {0:2,
                              1:{"fdate":"<,172800"},
                              2:{"ftype":"==,generic"}};
==== Default Deprecated ====
filterObj.defaultDeprecated = {0:5,
                            1:{"eusers":">=,50","fusers":"<=,3","fcrc":"!=,valid"},
                            2:{"fcrc":"==,invalid"},
                            3:{"fqual":"<=,5"},
                            4:{"c_sf_fgroup":"==,this","c_rf_fversion":"==,this","c_rf_fcrc":"==,valid","fcrc":"!=,valid","fgroup":"!=,0"},
                            5:{"c_sf_fgroup":"==,this","c_rf_fversion":">,this","c_rf_fcrc":"==,valid","fgroup":"!=,0"}};
==== Default Visible ====
filterObj.defaultVisible = {0:5,
                            1:{"fdeprecated":"==,true"},
                            2:{"finmylist":"==,true"},
                            3:{"fusers":">=,50"},
                            4:{"fdate":"<,604800"},
                            5:{"efvisible":"<,1"}};
==== Default Hidden ====
filterObj.defaultHidden = {0:2,
                          1:{"falang":"==,obj.filterAudLang"},
                          2:{"fslang":"==,obj.filterSubLang"}};
=== Example of usage ===
Imagine you had a ''fcen'' that would return true if a file is marked as censored, ''funcen'' that would return true if a file is marked as uncensored and a ''acen'' that would return true if the current anime has been marked as +18.
Having this if you wanted to hide all censored files for a +18 anime and only leave uncensored or not marked files you would add this to the hidden filter.
filterObj.hidden = {0:1,
                    1:{"acen":"==,true","fcen":"==,true"}};
This filter would mark as hidden all censored files for a +18 anime.
'''Notes:''' obviously this isn't a very practical way to input file filters, I need to write some interface for it before this can be used.
----
== Pseudo-Files ==
As part of the anime3 scripts I've developed a kind super file implementation, a bit like of [[Content:Shadow_Files|Shadow Files]], i call them Pseudo-Files.
What they are is simple, whenever there are [[Files:File_relations|File Relations]] involved i create a new file from all the data the relations give me. IE:
File A is a video file with the following attributes: ja audio, en subtitles.
File B is a subtitle file which adds de subtitles to File A.
Currently i gave users the option to expand files which have file<->file relations, so the file table for the Episode that holds File A and File B would look like this with all files expanded:
File A .......
\- File B ....
File B .......
\- File A
With pseudo-files i create a new super-file that would have the following attributes ja audio, en and de subtitles, and it's representation is something like this, where File P is the Pseudo-File:
File P .......
|- File A ....
\- File B ....
Pseudo-files are also victim of file filters, so imagine some file would get hidden because it didn't have all the languages you wanted but a pseudo-file which was parent of that file had all the languages, the pseudo-file would not get hidden. In case it did fail the test it would get hidden.
This is the magic of pseudo-files. Another unused feature of show=anime3
== Notes ==
As you have noticed, any of the features referred here is ready to be used by normal users, it's like the ground work for future features. So if someone really wants this, bug me until I write an interface for them :P
347

edits

MediaWiki spam blocked by CleanTalk.
MediaWiki spam blocked by CleanTalk.