83
edits
m (→E / EPISODE: fandubs are normal eps with audio track type fandub) |
|||
(20 intermediate revisions by 3 users not shown) | |||
Line 7: | Line 7: | ||
File extensions are automatically added to the end of the pattern. | File extensions are automatically added to the end of the pattern. | ||
==Sample | ==Sample patterns== | ||
'''English anime title with fallback''' | '''English anime title with fallback''' | ||
<pre> | <pre> | ||
Line 47: | Line 47: | ||
if(length(etitle)=0, set('etitle', E.Name)) | if(length(etitle)=0, set('etitle', E.Name)) | ||
</pre> | </pre> | ||
'''File version | '''File version and censor flag | ||
<pre> | <pre> | ||
set('version', | set('censored', 'unknown') | ||
set('version', F.Version) | |||
set('state_map', F.State mod 4096) | |||
if(state_map>=2048, set('version', 9) + set('state_map', state_map - 2048)) | |||
if(state_map>=1024, if(version<9,set('version', 8)) + set('state_map', state_map - 1024)) | |||
if(state_map>=512, if(version<9,set('version', 7)) + set('state_map', state_map - 512)) | |||
if(state_map>=256, if(version<9,set('version', 6)) + set('state_map', state_map - 256)) | |||
if(state_map>=128, set('censored', 'yes') + set('state_map', state_map - 128)) | |||
if(state_map>=64, set('censored', 'no') + set('state_map', state_map - 64)) | |||
set('version', if(version>1, 'v'+F.Version, '')) | |||
set('censored',if(censored='yes','[Censored]','')) | |||
</pre> | </pre> | ||
'''Padded episode number''' | '''Padded episode number''' | ||
<pre> | <pre> | ||
set('mepno', max(A.TotalEpisodeCount, E.EpisodeTypeCount)) | set('mepno', if(E.TypeId=1, max(A.TotalEpisodeCount, E.EpisodeTypeCount), E.EpisodeTypeCount)) | ||
set('epno', padl(E.EpisodeNo, max(1, length(mepno)), '0')) | set('epno', padl(E.EpisodeNo, max(1, length(mepno)), '0')) | ||
if(E.TypeId=2, set('epno', 'S'+epno)) | if(E.TypeId=2, set('epno', 'S'+epno)) | ||
Line 81: | Line 91: | ||
if(length(crc)>0, set('crc', '('+uc(crc)+')') | if(length(crc)>0, set('crc', '('+uc(crc)+')') | ||
</pre> | </pre> | ||
'''Current filename (removing the path)''' | |||
<pre>set('path_filename', PATH) | |||
set('path_parts', 1) | |||
for('i', 1, length(path_filename), if(copy(path_filename, i, 1) = '\', set('path_parts', path_parts+1))) | |||
set('path_filename', split(path_filename, '\', path_parts))</pre> | |||
===Complex samples=== | |||
See [[AniDB O'Matic - Documentation: Local file renaming - Samples | the article with samples]] | |||
==Default pattern== | ==Default pattern== | ||
'''ATTENTION!''' The default pattern has a bug. See below for instructions to fix it. | |||
<pre>set('atitle', at('x-jat')) | |||
if(length(atitle)=0, set('atitle', at('en'))) | if(length(atitle)=0, set('atitle', at('en'))) | ||
if(length(atitle)=0, set('atitle', A.Name)) | if(length(atitle)=0, set('atitle', A.Name)) | ||
Line 117: | Line 136: | ||
set('filename', replace(filename, ' ', ' ')) | set('filename', replace(filename, ' ', ' ')) | ||
filename | filename | ||
</pre></ | </pre> | ||
'''ATTENTION!''' The default pattern has a bug. To fix it, find the following line: | |||
<pre>set('mepno', max(A.TotalEpisodeCount, E.EpisodeTypeCount))</pre> | |||
And replace it with: | |||
<pre>set('mepno', if(E.TypeId=1, max(A.TotalEpisodeCount, E.EpisodeTypeCount), E.EpisodeTypeCount))</pre> | |||
==Objects== | ==Objects== | ||
Line 185: | Line 208: | ||
|EndDate||integer||End date in unix time, AniDB format. | |EndDate||integer||End date in unix time, AniDB format. | ||
|-valign=top | |-valign=top | ||
|Restricted||boolean||True for hentai, otherwise false. | |Restricted||boolean||'''Unreliable''' True for hentai, otherwise false. | ||
|-valign=top | |-valign=top | ||
|MylistCurrentEpisodeCount||integer||Number of episodes in mylist. | |MylistCurrentEpisodeCount||integer||Number of episodes in mylist. | ||
Line 225: | Line 248: | ||
3: Opening/Ending/Credits<br> | 3: Opening/Ending/Credits<br> | ||
4: Trailer/Promo/Ads<br> | 4: Trailer/Promo/Ads<br> | ||
5: Parody | 5: Parody<br> | ||
6: Other | 6: Other | ||
|-valign="top" | |-valign="top" | ||
Line 250: | Line 273: | ||
|EpisodeEnd||integer||Highest related episode number of the same type within this anime. | |EpisodeEnd||integer||Highest related episode number of the same type within this anime. | ||
|-valign="top" | |-valign="top" | ||
|EpisodeList|| | |EpisodeList||string||List of episodes within this anime covered by this file.<br>Format: 1,2,3,7,17,93,O1,C3,U77 | ||
|-valign="top" | |||
|EpisodeListDetails||string||Detailed list of episodes covered by this file.<br>Format: (EpisodeStr:EpisodeTypeId:AnimeId:EpisodeId:StartPercent:EndPercent)<br>Example: | |||
1:1:357:95304:0:10,2:1:357:95960:0:100,6:1:357:108200:0:100,C1:3:357:108202:0:100 | |||
|-valign="top" | |-valign="top" | ||
|FileType||string||File extension. | |FileType||string||File extension. | ||
Line 272: | Line 298: | ||
|Released||integer||Release date in unix time. | |Released||integer||Release date in unix time. | ||
|-valign="top" | |-valign="top" | ||
|ResolutionHeight||integer||Video height in pixels. | |ResolutionHeight||integer||'''Does not work''' Video height in pixels. | ||
|-valign="top" | |-valign="top" | ||
|ResolutionWidth||integer||Video width in pixels. | |ResolutionWidth||integer||'''Does not work''' Video width in pixels. | ||
|-valign="top" | |-valign="top" | ||
|Sha1||string||AniDB SHA1 value. | |Sha1||string||AniDB SHA1 value. | ||
Line 308: | Line 334: | ||
|GroupLong||string||Long group name. | |GroupLong||string||Long group name. | ||
|-valign="top" | |-valign="top" | ||
|ResolutionString||string||Video WidthxHeight. | |ResolutionString||string||'''Does not work''' Video WidthxHeight. | ||
|} | |} | ||
Line 377: | Line 403: | ||
{| | {| | ||
|-valign=top | |||
|ACTIVEPATTERN||string||The current rename pattern after cleanup. | |||
|-valign=top | |-valign=top | ||
|PATH||string||Current path to the file. May be ''. | |PATH||string||Current path to the file. May be ''. | ||
Line 385: | Line 413: | ||
==Functions== | ==Functions== | ||
{| | {| | ||
! scope="col" | Function | |||
! scope="col" width="60" | Type | |||
! scope="col" | Description | |||
|-valign="top" | |-valign="top" | ||
|at(lang)||text||Returns a main/official anime title in '''lang'''. '''lang''' can be either a text or a number. <br>Example: at(2) = japanese title<br>Example: at('japanese (transcription)') = japanese transcription<br>Example: at('en') = english title | |at(lang)||text||Returns a main/official anime title in '''lang'''. '''lang''' can be either a text or a number. <br>Example: at(2) = japanese title<br>Example: at('japanese (transcription)') = japanese transcription<br>Example: at('en') = english title | ||
|-valign="top" | |||
|atr(id, lang)||text||Returns a main/official anime title of anime with '''id''' in '''lang'''. '''lang''' can be either a text or a number. <br>Example: at(2) = japanese title<br>Example: at('japanese (transcription)') = japanese transcription<br>Example: at('en') = english title | |||
|-valign="top" | |-valign="top" | ||
|contains(find, text)||boolean||Returns true if '''find''' is found in '''text'''.<br>Example: contains('bcd', 'abcdef') = true | |contains(find, text)||boolean||Returns true if '''find''' is found in '''text'''.<br>Example: contains('bcd', 'abcdef') = true | ||
Line 393: | Line 426: | ||
|-valign="top" | |-valign="top" | ||
|et(lang)||text||Returns an episode title in '''lang'''. '''lang''' can be either a text or a number.<br>Example: et(2) = japanese title<br>Example: et('en') = english title | |et(lang)||text||Returns an episode title in '''lang'''. '''lang''' can be either a text or a number.<br>Example: et(2) = japanese title<br>Example: et('en') = english title | ||
|-valign="top" | |||
|etr(id, lang)||text||Returns an episode title of episode with '''id''' in '''lang'''. '''lang''' can be either a text or a number.<br>Example: et(2) = japanese title<br>Example: et('en') = english title | |||
|-valign="top" | |||
|for(name, start, end, task)||string||Runs '''task''' '''start''' to '''end''' times setting '''name''' to t1he current position each round.<br>Example: for('i', 1, 5, '?'+i) = '?1?2?3?4?5' | |||
|-valign="top" | |||
|function(name, stmt, stmt, ...)||string||Declares the function '''name''' which will execute stmt1, stmt2 etc. Parameters can be sent to function calls but there is only 1 GLOBAL scope.<br>Example: function('rreplace', set('temp', param1), for('i', 1, 10, set('temp', replace(temp, ' ', ' '))), temp)<br>rreplace(somevalue) | |||
|-valign="top" | |-valign="top" | ||
|getanime(name, id)||object||Sets the variable '''name''' to the anime object for '''id'''.<br>Example: getanime('a2', 78) | |getanime(name, id)||object||Sets the variable '''name''' to the anime object for '''id'''.<br>Example: getanime('a2', 78) | ||
Line 425: | Line 464: | ||
|-valign="top" | |-valign="top" | ||
|replacei(text, find[, replace])||string||Case insensitive replace of all occurences of '''find''' with '''replace''' in '''text'''.<br>Example: replace('HELLO tHeRe!', 'ThErE', 'TREES') = 'HELLO TREES!' | |replacei(text, find[, replace])||string||Case insensitive replace of all occurences of '''find''' with '''replace''' in '''text'''.<br>Example: replace('HELLO tHeRe!', 'ThErE', 'TREES') = 'HELLO TREES!' | ||
|-valign="top" | |-valign="top" | ||
|sc(text)||string||Converts '''text''' to sentence case.<br>Example: sc('HELLO THERE!') = 'Hello there!' | |sc(text)||string||Converts '''text''' to sentence case.<br>Example: sc('HELLO THERE!') = 'Hello there!' |
edits