filebot/website/script.html

239 lines
16 KiB
HTML

<!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">
<head>
<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" />
<title>Scripts and Automation</title>
<link rel="stylesheet" href="base.css" type="text/css" />
<link rel="stylesheet" href="code.css" type="text/css" />
<link rel="icon" href="favicon.png" />
<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" />
<!-- google analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-25379256-1']);
_gaq.push(['_trackPageview']);
(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>
<!-- 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>
</head>
<body>
<div class="page">
<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>
<div class="social">
<div class="twitter" style="position:relative; top:3px;">
<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>
</div>
<div class="plusone" style="position:relative; left:25px; top:1px">
<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>
Scripts and Automation
<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
while running that script.
</p>
<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
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>.
</div>
<h3 id="examples">Example Scripts</h3>
<div class="description">
<pre><code>args.<span class="method">eachMediaFolder</span> {
<span class="method">getMissingSubtitles</span>(<span class="property">folder</span>:it)
<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>{ 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>{ 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>
<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>
<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>
<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>
<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> - lookup subtitles by series/movie name</dd>
<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>
<dd><span class="property">strict</span> - enable matching subtitles via filename</dd>
</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>
<p class="suggestion">
Need some help getting started? Check the <a href="http://filebot.sourceforge.net/forums/viewforum.php?f=4">forums</a>.
</p>
<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>
</div>
Hosted on <a href="http://sourceforge.net">sourceforge.net</a> | Creative Commons License: Attribution-NonCommercial-ShareAlike © 2011
</div>
</div>
</div>
</body>
</html>