2011-11-27 00:32:06 -05:00
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" itemscope itemtype = "http://schema.org/Product" >
2011-11-04 20:47:53 -04:00
< head >
2011-11-27 00:32:06 -05:00
< meta http-equiv = "content-type" content = "text/html; charset=UTF-8" / >
< meta name = "keywords" content = "rename tv series, rename episode, rename movie, download subtitles, file verification, check sfv md5 sha1" / >
2011-11-05 06:45:31 -04:00
< title > Scripts and Automation< / title >
2011-11-04 20:47:53 -04:00
< link rel = "stylesheet" href = "base.css" type = "text/css" / >
< link rel = "stylesheet" href = "code.css" type = "text/css" / >
< link rel = "icon" href = "favicon.png" / >
2011-11-27 00:32:06 -05:00
< meta itemprop = "name" content = "FileBot" / >
< meta itemprop = "description" content = "The ultimate tv renamer / subtitle downloader / sfv validator" / >
< meta itemprop = "image" content = "http://filebot.sourceforge.net/images/icon.png" / >
2011-11-04 20:47:53 -04:00
<!-- google analytics -->
< script type = "text/javascript" >
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-25379256-1']);
_gaq.push(['_trackPageview']);
2011-11-27 00:32:06 -05:00
2011-11-04 20:47:53 -04:00
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
< / script >
2011-11-27 00:32:06 -05:00
<!-- google +1 -->
< script type = "text/javascript" >
window.___gcfg = {lang: 'en-GB'};
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
< / script >
2011-11-04 20:47:53 -04:00
< / head >
< body >
< div class = "page" >
2011-11-22 11:12:20 -05:00
< div class = "navigation" style = "position:absolute; top:36px; right:-40px" >
< div >
< ul >
< li > < a href = "http://filebot.sourceforge.net/forums/" > Forums< / a > < / li >
< li > < a href = "http://filebot.sourceforge.net/forums/viewtopic.php?f=3&t=7" > FAQ< / a > < / li >
< li > < a href = "http://filebot.sourceforge.net/#download" > Download< / a > < / li >
< / ul >
< / div >
< / div >
2011-11-04 20:47:53 -04:00
< div class = "social" >
2011-11-27 00:15:52 -05:00
< div class = "twitter" style = "position:relative; top:3px;" >
2011-11-28 08:09:10 -05:00
< a href = "https://twitter.com/share" class = "twitter-share-button" data-count = "horizontal" data-via = "filebot_renamer" data-url = "http://filebot.sourceforge.net/" > < / a > < script type = "text/javascript" src = "//platform.twitter.com/widgets.js" > < / script >
2011-11-27 00:15:52 -05:00
< / div >
< div class = "plusone" style = "position:relative; left:25px; top:1px" >
2011-11-04 20:47:53 -04:00
< g:plusone callback = "_gaq.push(['_trackEvent','Social networking','Google Plus One',document.title])" > < / g:plusone >
< / div >
< / div >
< div class = "header" >
< a href = "http://filebot.sourceforge.net" > < img class = "logo" alt = "logo" src = "images/icon.png" width = "48" height = "48" / > < / a >
< h1 >
2011-11-05 06:45:31 -04:00
Scripts and Automation
2011-11-04 20:47:53 -04:00
< span class = "description" > Scripting interface usage manual< / span >
< / h1 >
< / div >
< div class = "content" >
< div class = "section screenshot" style = "border:none; box-shadow:none; background:white; margin-left: 20px" >
< a href = "http://filebot.sourceforge.net/data/shell/" target = "_blank" > < img alt = "See Examples" src = "images/script.png" / > < / a >
< span class = "quote" > Anything is possible< / span >
< / div >
< div class = "section about" >
< h2 > About< / h2 >
< p >
FileBot makes scripting and automation as easy as it gets. Just script everything in < a href = "http://groovy.codehaus.org" > Groovy< / a >
instead of bothering with cumbersome cmd and bash scripts. It's the same on all platforms and much more powerful.
The provided < a href = "#functions" > functions< / a > are the same as in the < a href = "cli.html" > CLI< / a > and < a href = "cli.html#arguments" > parameter usage< / a >
is also exactly the same.
< / p >
< h2 id = "examples" > Examples< / h2 >
< h3 id = "examples" > Running Scripts< / h3 >
< p >
< code > < span class = "cmd" > filebot< / span > < span class = "option" > -script< / span > < span class = "argument" > "path/to/script.groovy"< / span > < span class = "argument" > args...< / span > < / code >
Execute a given Groovy script. Parameters defined on the cmdline when starting a script will serve as default parameters
2011-11-07 11:27:52 -05:00
while running that script.
2011-11-04 20:47:53 -04:00
< / p >
2011-11-07 11:27:52 -05:00
< h3 > Script Repository< / h3 >
< div class = "description" >
Find scripts for common tasks < a href = "http://filebot.sourceforge.net/data/shell/" target = "_blank" > here< / a > . You can just use these scripts straight
2011-11-25 23:57:31 -05:00
away or as a reference for building your own more advanced scripts. If you wrote a really useful script
please < a href = "http://filebot.sourceforge.net/forums/viewtopic.php?f=4&t=5" > share it with us< / a > .
2011-11-07 11:27:52 -05:00
< / div >
2011-11-04 20:47:53 -04:00
2011-11-07 11:27:52 -05:00
< h3 id = "examples" > Example Scripts< / h3 >
2011-11-04 20:47:53 -04:00
< div class = "description" >
< pre > < code > args.< span class = "method" > eachMediaFolder< / span > {
2011-11-28 08:09:10 -05:00
< span class = "method" > getMissingSubtitles< / span > (< span class = "property" > folder< / span > :it)
2011-11-04 20:47:53 -04:00
< span class = "method" > rename< / span > (< span class = "property" > folder< / span > :it)
< span class = "method" > compute< / span > (< span class = "property" > file< / span > :it.< span class = "method" > listFiles< / span > ().< span class = "method" > findAll< / span > { it.< span class = "method" > isVideo< / span > () })
}< / code > < / pre > Fetch subtitles, rename and compute checksums for all media folders in the file hierarchy.< / div >
< div class = "description" >
< pre > < code > [< span class = "string" > 'E:/tvshows'< / span > ].< span class = "method" > eachMediaFolder< / span > { < span class = "method" > rename< / span > (< span class = "property" > folder< / span > :it, < span class = "property" > db< / span > :< span class = "string" > 'tvrage'< / span > ) }
[< span class = "string" > 'E:/anime'< / span > ].< span class = "method" > eachMediaFolder< / span > { < span class = "method" > rename< / span > (< span class = "property" > folder< / span > :it, < span class = "property" > db< / span > :< span class = "string" > 'anidb'< / span > ) }
[< span class = "string" > 'E:/movies'< / span > ].< span class = "method" > eachMediaFolder< / span > { < span class = "method" > rename< / span > (< span class = "property" > folder< / span > :it, < span class = "property" > db< / span > :< span class = "string" > 'opensubtitles'< / span > ) }
< / code > < / pre > Run rename on different folder hierarchies using different episode/movie datasources.< / div >
< div class = "description" >
< pre > < code > args.< span class = "method" > getFiles< / span > ().< span class = "method" > findAll< / span > { it.< span class = "method" > isVideo< / span > () }
.< span class = "method" > sort< / span > { a, b -> a.name.< span class = "method" > compareTo< / span > (b.name) }
.< span class = "method" > each< / span > { println < span class = "method" > getMediaInfo< / span > (< span class = "property" > file< / span > :it, < span class = "property" > format< / span > :< span class = "string" > '{fn} [{vf} {vc} {af}]'< / span > ) }
< / code > < / pre > Print media info for all video files using the given format pattern.< / div >
2011-11-07 11:27:52 -05:00
2011-11-04 20:47:53 -04:00
< h2 class = "reference" id = "functions" >
Function Reference
< a href = "http://filebot.svn.sourceforge.net/viewvc/filebot/trunk/source/net/sourceforge/filebot/cli/ScriptShell.lib.groovy?view=markup" class = "source" target = "_blank" > source< / a >
< / h2 >
< div class = "documentation" >
< h4 > Rename media files< / h4 >
< pre > < span class = "return" > File[]< / span > < span class = "method" > rename< / span > (< span class = "property" > folder< / span > |< span class = "property" > file< / span > , < span class = "property" > query< / span > , < span class = "property" > format< / span > , < span class = "property" > db< / span > , < span class = "property" > lang< / span > , < span class = "property" > strict< / span > )< / pre >
< div class = "text" > Match files with episode/movie data and rename according to given naming scheme.< / div >
< dl >
< dt > Parameters:< / dt >
< dd > < span class = "property" > folder< / span > - process media files in this folder< / dd >
< dd > < span class = "property" > file< / span > - process these media files< / dd >
< dd > < span class = "property" > query< / span > - force series/movie name, auto-detect if not set< / dd >
< dd > < span class = "property" > format< / span > - episode/movie naming scheme< / dd >
< dd > < span class = "property" > db< / span > - episode/movie database< / dd >
< dd > < span class = "property" > lang< / span > - preferred language for episode/movie titles< / dd >
< dd > < span class = "property" > strict< / span > - turn on/off strict matching< / dd >
< / dl >
< / div >
< div class = "documentation" >
< h4 > Fetch subtitles for media files< / h4 >
2011-11-25 23:57:31 -05:00
< pre > < span class = "return" > File[]< / span > < span class = "method" > getSubtitles< / span > (< span class = "property" > folder< / span > |< span class = "property" > file< / span > , < span class = "property" > query< / span > , < span class = "property" > lang< / span > , < span class = "property" > output< / span > , < span class = "property" > encoding< / span > , < span class = "property" > strict< / span > )< / pre >
2011-11-28 08:09:10 -05:00
< div class = "text" >
Download subtitles for the given files. Lookup subtitles via hash or match by filename. If you only want to download
missing subtitles you should use < pre style = "font-size:inherit;display:inline" > < span class = "method" > getMissingSubtitles< / span > < / pre >
so subtitles that have already been downloaded will not be downloaded again overridding existing subtitle files.
< / div >
2011-11-04 20:47:53 -04:00
< dl >
< dt > Parameters:< / dt >
< dd > < span class = "property" > folder< / span > - process media files in this folder< / dd >
< dd > < span class = "property" > file< / span > - process these media files< / dd >
2011-11-25 23:57:31 -05:00
< dd > < span class = "property" > query< / span > - lookup subtitles by series/movie name< / dd >
2011-11-04 20:47:53 -04:00
< dd > < span class = "property" > lang< / span > - subtitle language< / dd >
< dd > < span class = "property" > output< / span > - force output format (e.g. srt)< / dd >
< dd > < span class = "property" > encoding< / span > - force output charset< / dd >
2011-11-25 23:57:31 -05:00
< dd > < span class = "property" > strict< / span > - enable matching subtitles via filename< / dd >
2011-11-04 20:47:53 -04:00
< / dl >
< / div >
< div class = "documentation" >
< h4 > File verification< / h4 >
< pre > < span class = "return" > boolean< / span > < span class = "method" > check< / span > (< span class = "property" > folder< / span > |< span class = "property" > file< / span > )< / pre >
< div class = "text" > Check given sfv/md5/sha1 files.< / div >
< dl >
< dt > Parameters:< / dt >
< dd > < span class = "property" > folder< / span > - check the sfv/md5/sha1 files in this folder< / dd >
< dd > < span class = "property" > file< / span > - check these sfv/md5/sha1< / dd >
< / dl >
< hr / >
< pre > < span class = "return" > File< / span > < span class = "method" > compute< / span > (< span class = "property" > folder< / span > |< span class = "property" > file< / span > , < span class = "property" > output< / span > , < span class = "property" > encoding< / span > )< / pre >
< div class = "text" > Compute sfv/md5/sha1 for the given files.< / div >
< dl >
< dt > Parameters:< / dt >
< dd > < span class = "property" > folder< / span > - compute checksums for files in this folder< / dd >
< dd > < span class = "property" > file< / span > - compute checksums for these files< / dd >
< dd > < span class = "property" > output< / span > - absolute or relative output file or just output format (sfv, md5 or sha1)< / dd >
< dd > < span class = "property" > encoding< / span > - output charset, defaults to UTF-8< / dd >
< / dl >
< / div >
< div class = "documentation" >
< h4 > Other< / h4 >
< pre > < span class = "return" > String[]< / span > < span class = "method" > fetchEpisodeList< / span > (< span class = "property" > query< / span > , < span class = "property" > format< / span > , < span class = "property" > db< / span > , < span class = "property" > lang< / span > )< / pre >
< div class = "text" > Fetch episode data for the given tv show and format episode names.< / div >
< dl >
< dt > Parameters:< / dt >
< dd > < span class = "property" > query< / span > - tv series name< / dd >
< dd > < span class = "property" > format< / span > - episode naming scheme< / dd >
< dd > < span class = "property" > db< / span > - episode database< / dd >
< dd > < span class = "property" > lang< / span > - preferred language for episode titles< / dd >
< / dl >
< hr / >
< pre > < span class = "return" > String< / span > < span class = "method" > getMediaInfo< / span > (< span class = "property" > file< / span > , < span class = "property" > format< / span > )< / pre >
< div class = "text" > Get mediainfo as defined by the given format.< / div >
< dl >
< dt > Parameters:< / dt >
< dd > < span class = "property" > file< / span > - get info for this file< / dd >
< dd > < span class = "property" > format< / span > - media naming scheme< / dd >
< / dl >
< / div >
< / div >
2011-11-26 22:53:23 -05:00
< p class = "suggestion" >
2011-11-16 12:24:14 -05:00
Need some help getting started? Check the < a href = "http://filebot.sourceforge.net/forums/viewforum.php?f=4" > forums< / a > .
< / p >
2011-11-26 22:53:23 -05:00
< div class = "metrics" >
< script type = "text/javascript" src = "http://www.ohloh.net/p/16945/widgets/project_partner_badge.js" > < / script >
< / div >
< div class = "footer" >
< div id = "flattr" >
<!-- flattr -->
< script type = "text/javascript" >
/* < ![CDATA[ */
(function() {
var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
s.type = 'text/javascript';
s.async = true;
s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
t.parentNode.insertBefore(s, t);
})();
/* ]]> */
< / script >
< a class = "FlattrButton" rev = "flattr;button:compact;" href = "http://filebot.sourceforge.net" > < / a >
< / div >
< div id = "donate" >
< form action = "https://www.paypal.com/cgi-bin/webscr" method = "post" style = "display:inline" target = "_blank" >
< input type = "hidden" name = "cmd" value = "_s-xclick" / >
< input type = "hidden" name = "encrypted" value = "-----BEGIN PKCS7-----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-----END PKCS7-----" / >
< input onclick = "_gaq.push(['_trackPageview', '/donate/paypal'])" type = "image" src = "images/donate.png" name = "submit" alt = "PayPal - The safer, easier way to pay online." / >
< / form >
2011-11-04 20:47:53 -04:00
< / div >
2011-11-26 22:53:23 -05:00
Hosted on < a href = "http://sourceforge.net" > sourceforge.net< / a > | Creative Commons License: Attribution-NonCommercial-ShareAlike © 2011
2011-11-04 20:47:53 -04:00
< / div >
< / div >
< / div >
< / body >
< / html >