You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
youtube-dl/index.html

528 lines
24 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>
rg3 / youtube-dl / wiki / Home &mdash; bitbucket.org
</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="Mercurial hosting - we're here to serve." />
<meta name="keywords" content="mercurial,hg,hosting,bitbucket,rg3,youtube-dl,is,a,small,command-line,program,for,downloading,videos,from,YouTube.com.,wiki" />
<link rel="stylesheet" type="text/css" href="http://bitbucket-assets.s3.amazonaws.com/css/layout.css" />
<meta name="google-site-verification" content="GLJMpoIUjgWhrjaR6XRvBOZqe-JbiFVzUhs5iOJ1iI8" />
<link rel="stylesheet" type="text/css" href="http://bitbucket-assets.s3.amazonaws.com/css/screen.css" />
<link rel="stylesheet" type="text/css" href="http://bitbucket-assets.s3.amazonaws.com/css/print.css" media="print" />
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Bitbucket" />
<link rel="icon" href="http://bitbucket-assets.s3.amazonaws.com/img/logo_new.png" type="image/png"/>
<script type="text/javascript" src="http://bitbucket-assets.s3.amazonaws.com/js/lib/bundle.160310Mar.js"></script>
<script type="text/javascript">
$(document).ready(function() {
Dropdown.init();
$(".tooltip").tipsy({gravity:'s'});
});
</script>
<noscript>
<style type="text/css">
.dropdown-container-text .dropdown {
position: static !important;
}
</style>
</noscript>
<!--[if lt IE 7]>
<style type="text/css">
body {
behavior: url(http://bitbucket-assets.s3.amazonaws.com/css/csshover.htc);
}
#issues-issue pre {
white-space: normal !important;
}
.changeset-description {
white-space: normal !important;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
$('#header-wrapper').pngFix();
$('#sourcelist').pngFix();
$('.promo-signup-screenshot').pngFix();
});
</script>
<![endif]-->
<link rel="stylesheet" href="http://bitbucket-assets.s3.amazonaws.com/css/highlight/trac.css" type="text/css" />
<script type="text/javascript">
$(document).ready(function() {
$('#wiki table:not(.highlighttable)').addClass('wikitable');
$('#wiki table.wikitable tr:even').addClass('crow2');
});
</script>
<link href="/rg3/youtube-dl/rss" rel="alternate nofollow" type="application/rss+xml" title="RSS Feed for youtube-dl" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-2456069-3'], ['_trackPageview']);
var _gaq = _gaq || [];
_gaq.push(['atl._setAccount', 'UA-6032469-33'], ['atl._trackPageview']);
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})();
</script>
</head>
<body class="">
<div id="main-wrapper">
<div id="header-wrapper">
<div id="header">
<a href="/"><img src="http://bitbucket-assets.s3.amazonaws.com/img/logo_myriad.png" alt="Bitbucket" id="header-wrapper-logo" /></a>
<div id="header-nav">
<div id="header-nav-login-forms">
<form action="/account/signin/" method="post">
<fieldset>
<input id="id_username_header" type="text" class="required login" name="username" value="username" maxlength="30" onfocus="if(this.value=='username'){this.value='';}; $(this).addClass('normaltext');" /> <input id="id_password_header" type="password" class="required login" name="password" value="password" maxlength="128" onfocus="if(this.value=='password'){this.value='';}; $(this).addClass('normaltext');" /> <input type="submit" name="blogin" value="&raquo;" style="display:none;" />
<input type="hidden" name="next" value="/rg3/youtube-dl/wiki/Home"/>
</fieldset>
</form>
<form name="fopenid" action="/account/signin/" method="post">
<fieldset>
<input id="id_openid_url" type="text" class="required openid" name="openid_url" maxlength="255" value="your OpenID URL" onfocus="if(this.value=='your OpenID URL'){this.value='';}; $(this).addClass('normaltext');" /> <input name="bsignin" type="submit" value="&raquo;" style="display: none;" />
<input type="hidden" name="next" value="/rg3/youtube-dl/wiki/Home" />
</fieldset>
</form>
</div>
<ul class="right">
<li><a href="/">Home</a></li>
<li><a href="/plans"><b>Plans &amp; Signup</b></a></li>
<li><a href="/repo/all">Repositories</a></li>
<li><a href="/news">News</a></li>
<li><a href="/help">Help</a></li>
<li><a href="/account/signin/">Login</a></li>
</ul>
</div>
</div>
</div>
<div id="content-wrapper">
<script type="text/javascript" src="http://bitbucket-assets.s3.amazonaws.com/js/lib/jquery.cookie.js"></script> <!--REMOVE WHEN NEWER BUNDLE THAN 030309Mar -->
<script type="text/javascript">
var date = new Date();
date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000));
var cookieoptions = { path: '/', expires: date };
window._shard = 'fe01 (ID 1)';
$(document).ready(function(){
$('#toggle-repo-content').click(function(){
$('#repo-desc-cloneinfo').toggle('fast');
$('#repo-menu').toggle();
$('#repo-menu-links-mini').toggle(100);
$('.repo-desc-description').toggle('fast');
var avatar_new_width = ($('.repo-avatar').width() == 35) ? 16 : 35;
$('.repo-avatar').animate({ width: avatar_new_width }, 250);
if ($.cookie('toggle_status') == 'hide') {
$.cookie('toggle_status', 'show', cookieoptions);
$(this).css('background-image','url(http://bitbucket-assets.s3.amazonaws.com/img/repo-toggle-up.png)');
} else {
$.cookie('toggle_status', 'hide', cookieoptions);
$(this).css('background-image','url(http://bitbucket-assets.s3.amazonaws.com/img/repo-toggle-down.png)');
}
});
if ($.cookie('toggle_status') == 'hide') {
$('#toggle-repo-content').css('background-image','url(http://bitbucket-assets.s3.amazonaws.com/img/repo-toggle-down.png)');
$('#repo-desc-cloneinfo').hide();
$('#repo-menu').hide();
$('#repo-menu-links-mini').show();
$('.repo-desc-description').hide();
$('.repo-avatar').css({ width: '16px' });
} else {
$('#toggle-repo-content').css('background-image','url(http://bitbucket-assets.s3.amazonaws.com/img/repo-toggle-up.png)');
$('#repo-desc-cloneinfo').show();
$('#repo-menu').show();
$('#repo-menu-links-mini').hide();
$('.repo-desc-description').show();
$('.repo-avatar').css({ width: '35px' });
}
});
</script>
<div id="tabs">
<ul class="ui-tabs-nav">
<li>
<a href="/rg3/youtube-dl/overview"><span>Overview</span></a>
</li>
<li>
<a href="/rg3/youtube-dl/downloads"><span>Downloads (0)</span></a>
</li>
<li>
<a href="/rg3/youtube-dl/src"><span>Source</span></a>
</li>
<li>
<a href="/rg3/youtube-dl/changesets"><span>Changesets</span></a>
</li>
<li class="ui-tabs-nav-issues ui-tabs-selected">
<a href="/rg3/youtube-dl/wiki"><span>Wiki</span></a>
</li>
<li class="ui-tabs-nav-issues">
<a href="/rg3/youtube-dl/issues?status=new&amp;status=open"><span>Issues (11) &raquo;</span></a>
<ul>
<li><a href="/rg3/youtube-dl/issues?status=new">New issues</a></li>
<li><a href="/rg3/youtube-dl/issues?status=new&amp;status=open">Open issues</a></li>
<li><a href="/rg3/youtube-dl/issues?status=resolved&amp;status=invalid&amp;status=duplicate">Closed issues</a></li>
<li><a href="/rg3/youtube-dl/issues">All issues</a></li>
<li><a href="/rg3/youtube-dl/issues/query">Advanced query</a></li>
<li><a href="/rg3/youtube-dl/issues/new">Create new issue</a></li>
</ul>
</li>
<li class="tabs-right tabs-far-right">
<a href="/rg3/youtube-dl/descendants"><span>Forks/Queues (8)</span></a>
</li>
<li class="tabs-right">
<a href="/rg3/youtube-dl/zealots"><span>Followers (58)</span></a>
</li>
</ul>
</div>
<div id="repo-menu">
<div id="repo-menu-links">
<ul>
<li>
<a href="/rg3/youtube-dl/rss" class="noborder repo-menu-rss" title="RSS Feed for youtube-dl">RSS</a>
</li>
<li>
<a href="/rg3/youtube-dl/atom" class="noborder repo-menu-atom" title="Atom Feed for youtube-dl">Atom</a>
</li>
<li>
<a href="/rg3/youtube-dl/pull" class="link-request-pull">
pull request
</a>
</li>
<li><a href="/rg3/youtube-dl/fork" class="link-fork">fork</a></li>
<li><a href="/rg3/youtube-dl/hack" class="link-hack">patch queue</a></li>
<li>
<a rel="nofollow" href="/rg3/youtube-dl/follow" class="link-follow">follow</a>
</li>
<li><a class="link-download">get source &raquo;</a>
<ul>
<li><a rel="nofollow" href="/rg3/youtube-dl/get/be549f3809e6.zip" class="zip">zip</a></li>
<li><a rel="nofollow" href="/rg3/youtube-dl/get/be549f3809e6.gz" class="compressed">gz</a></li>
<li><a rel="nofollow" href="/rg3/youtube-dl/get/be549f3809e6.bz2" class="compressed">bz2</a></li>
</ul>
</li>
</ul>
</div>
<div id="repo-menu-branches-tags">
<ul>
<li class="icon-branches">
branches &raquo;
<ul>
<li><a href="/rg3/youtube-dl/src/be549f3809e6">default</a></li>
</ul>
</li>
<li class="icon-tags">
tags &raquo;
<ul>
<li><a href="/rg3/youtube-dl/src/be549f3809e6">tip</a></li>
<li><a href="/rg3/youtube-dl/src/1d3bca5d5e5d">2010.04.04</a></li>
<li><a href="/rg3/youtube-dl/src/d6f421afc953">2010.04.03</a></li>
<li><a href="/rg3/youtube-dl/src/a40f32f2978a">2010.04.02</a></li>
<li><a href="/rg3/youtube-dl/src/eadec6d49e8a">2010.03.13</a></li>
<li><a href="/rg3/youtube-dl/src/c69858fd4850">2010.03.07</a></li>
<li><a href="/rg3/youtube-dl/src/93ff6dceb3da">2010.02.13</a></li>
<li><a href="/rg3/youtube-dl/src/9ade3c8f7a53">2010.01.19</a></li>
<li><a href="/rg3/youtube-dl/src/eabc9bc8ab3c">2009.12.26</a></li>
<li><a href="/rg3/youtube-dl/src/6947c04fb1b4">2009.09.13</a></li>
<li><a href="/rg3/youtube-dl/src/4597eb63af5c">2009.09.08</a></li>
<li><a href="/rg3/youtube-dl/src/df8b882d8b39">2009.08.08</a></li>
<li><a href="/rg3/youtube-dl/src/2793d3270ff9">2009.06.29</a></li>
<li><a href="/rg3/youtube-dl/src/cfc3202eb7b6">2009.05.30</a></li>
<li><a href="/rg3/youtube-dl/src/4bc5ac772e8a">2009.05.25</a></li>
<li><a href="/rg3/youtube-dl/src/3f498fb56291">2009.05.23</a></li>
<li><a href="/rg3/youtube-dl/src/31198e942e00">2009.05.13</a></li>
<li><a href="/rg3/youtube-dl/src/1dd3c78e417e">2009.03.28</a></li>
<li><a href="/rg3/youtube-dl/src/8dc1b312077f">2009.03.03</a></li>
<li><a href="/rg3/youtube-dl/src/ef03a5f5f333">2009.02.07</a></li>
<li><a href="/rg3/youtube-dl/src/ee7b97092712">2009.01.31</a></li>
<li><a href="/rg3/youtube-dl/src/c72929f1680d">2008.11.01</a></li>
<li><a href="/rg3/youtube-dl/src/846c13fabe78">2008.10.16</a></li>
<li><a href="/rg3/youtube-dl/src/9636c1843c6f">2008.09.20</a></li>
<li><a href="/rg3/youtube-dl/src/385afd90ca13">2008.08.09</a></li>
<li><a href="/rg3/youtube-dl/src/afa03d33275e">2008.07.22</a></li>
</ul>
</li>
</ul>
</div>
<div class="cb"></div>
</div>
<div id="repo-desc" class="layout-box">
<div id="repo-menu-links-mini" class="right">
<ul>
<li>
<a href="/rg3/youtube-dl/rss" class="noborder repo-menu-rss" title="RSS Feed for youtube-dl"></a>
</li>
<li>
<a href="/rg3/youtube-dl/atom" class="noborder repo-menu-atom" title="Atom Feed for youtube-dl"></a>
</li>
<li>
<a href="/rg3/youtube-dl/pull" class="tooltip noborder link-request-pull" title="Pull request"></a>
</li>
<li><a href="/rg3/youtube-dl/fork" class="tooltip noborder link-fork" title="Fork"></a></li>
<li><a href="/rg3/youtube-dl/hack" class="tooltip noborder link-hack" title="Patch queue"></a></li>
<li><a class="tooltip noborder link-download" title="Get source"></a>
<ul>
<li><a rel="nofollow" href="/rg3/youtube-dl/get/be549f3809e6.zip" class="zip">zip</a></li>
<li><a rel="nofollow" href="/rg3/youtube-dl/get/be549f3809e6.gz" class="compressed">gz</a></li>
<li><a rel="nofollow" href="/rg3/youtube-dl/get/be549f3809e6.bz2" class="compressed">bz2</a></li>
</ul>
</li>
</ul>
</div>
<h3>
<a href="/rg3">rg3</a> /
<a href="/rg3/youtube-dl/wiki/Home">youtube-dl</a>
<span>(<a href="http://bitbucket.org/rg3/youtube-dl/wiki/">http://bitbucket.org/rg3/youtube-dl/wiki/</a>)</span>
</h3>
<p class="repo-desc-description">youtube-dl is a small command-line program for downloading videos from <a href="http://YouTube.com" rel="nofollow">YouTube.com</a>.</p>
<div id="repo-desc-cloneinfo">Clone this repository (size: 255.5 KB): <a href="http://bitbucket.org/rg3/youtube-dl" onclick="$('#clone-url-ssh').hide();$('#clone-url-https').toggle();return(false);"><small>HTTPS</small></a> / <a href="ssh://hg@bitbucket.org/rg3/youtube-dl" onclick="$('#clone-url-https').hide();$('#clone-url-ssh').toggle();return(false);"><small>SSH</small></a><br/>
<pre id="clone-url-https">$ hg clone <a href="http://bitbucket.org/rg3/youtube-dl">http://bitbucket.org/rg3/youtube-dl</a></pre>
<pre id="clone-url-ssh" style="display:none;">$ hg clone <a href="ssh://hg@bitbucket.org/rg3/youtube-dl">ssh://hg@bitbucket.org/rg3/youtube-dl</a></pre></div>
<div class="cb"></div>
<a href="#" id="toggle-repo-content"></a>
</div>
<div class="global-divider-header issues-nav">
<div id="wiki-nav-links">
<span class="right">
<nobr>
<small>hg clone http://bitbucket.org/rg3/youtube-dl/wiki</small>
</nobr>
</span>
<b><a href="/rg3/youtube-dl/wiki/Home" class="wiki-icon-home">Home</a></b>
<a href="/rg3/youtube-dl/wiki/history/Home" class="wiki-icon-history">History</a>
<a href="http://www.wikicreole.org/wiki/Creole1.0" class="wiki-icon-markup">Wiki Markup</a>
</div>
<div class="cb"></div>
</div>
<div id="wiki">
<p></p>
<h1 id="youtube-dl-download-videos-from-youtubecom">youtube-dl: Download videos from YouTube.com</h1>
<p>(and more...)</p>
<h2 id="what-is-it">What is it?</h2>
<p><em>youtube-dl</em> is a small command-line program to download videos from YouTube.com. It requires the <a href="http://www.python.org/">Python interpreter</a>, version 2.x (x being at least 4), and it's not platform specific. It should work in your Unix box, in Windows or in Mac OS X. The latest version is <strong>2010.04.04</strong>. It's released to the public domain, which means you can modify it, redistribute it or use it however you like.</p>
<p>I'll try to keep it updated if YouTube.com changes the way you access their videos. After all, it's a simple and short program. However, I can't guarantee anything. If you detect it stops working, check for new versions and/or inform me about the problem, indicating the program version you are using. If the program stops working and I can't solve the problem but you have a solution, I'd like to know it. If that happens and you feel you can maintain the program yourself, tell me. My contact information is at <a href="http://rg03.wordpress.com/contact-me/">rg03.wordpress.com</a>.</p>
<p>Thanks for all the feedback received so far. I'm glad people find my program useful.</p>
<h2 id="usage-instructions">Usage instructions</h2>
<p>In Windows, once you have installed the Python interpreter, save the program with the <em>.py</em> extension and put it somewhere in the PATH. Try to follow the <a href="/rg3/youtube-dl/wiki/youtube-dl_under_Windows_XP">guide to install youtube-dl under Windows XP</a>.</p>
<p>In Unix, download it, give it execution permission and copy it to one of the PATH directories (typically, <em>/usr/local/bin</em>).</p>
<p>After that, you should be able to call it from the command line as <em>youtube-dl</em> or <em>youtube-dl.py</em>. I will use <em>youtube-dl</em> in the following examples. Usage instructions are easy. Use <em>youtube-dl</em> followed by a video URL or identifier. Example: <em>youtube-dl "<code>http://www.youtube.com/watch?v=foobar</code>"</em>. The video will be saved to the file <em>foobar.flv</em> in that example. As YouTube.com videos are in Flash Video format, their extension should be <em>flv</em>. In Linux and other unices, video players using a recent version of <em>ffmpeg</em> can play them. That includes MPlayer, VLC, etc. Those two work under Windows and other platforms, but you could also get a specific FLV player of your taste.</p>
<p>If you try to run the program and you receive an error message containing the keyword <em>SyntaxError</em> near the end, it means your Python interpreter is too old.</p>
<h2 id="more-usage-tips">More usage tips</h2>
<ul><li>You can change the file name of the video using the -o option, like in <em>youtube-dl -o vid.flv "<code>http://www.youtube.com/watch?v=foobar</code>"</em>. Read the Output template section for more details on this.
</li><li>Some videos require an account to be downloaded, mostly because they're flagged as mature content. You can pass the program a username and password for a YouTube.com account with the -u and -p options, like <em>youtube-dl -u myusername -p mypassword "<code>http://www.youtube.com/watch?v=foobar</code>"</em>.
</li><li>The account data can also be read from the user .netrc file by indicating the -n or --netrc option. The machine name is youtube in that case.
</li><li>The simulate mode (activated with -s or --simulate) can be used to just get the real video URL and use it with a download manager if you prefer that option.
</li><li>The quiet mode (activated with -q or --quiet) can be used to supress all output messages. This allows, in systems featuring <em>/dev/stdout</em> and other similar special files, outputting the video data to standard output in order to pipe it to another program without interferences.
</li><li>The program can be told to simply print the final video URL to standard output using the -g or --get-url option.
</li><li>In a similar line, the -e or --get-title option tells the program to print the video title.
</li><li>The default filename is video_id.flv. But you can also use the video title in the filename with the -t or --title option, or preserve the literal title in the filename with the -l or --literal option.
</li><li>You can make the program append <em>&amp;fmt=something</em> to the URL by using the -f or --format option. This makes it possible to download high quality versions of the videos when available.
</li><li>The -b or --best-quality option can be used to download the highest available quality version of any given video.
</li><li>The -m or --mobile-version option is an alias for -f 17.
</li><li>The -d or --high-def option is an alias for -f 22.
</li><li>Normally, the program will stop on the first error, but you can tell it to attempt to download every video with the -i or --ignore-errors option.
</li><li>The -a or --batch-file option lets you specify a file to read URLs from. The file must contain one URL per line.
</li><li>The program can be told not to overwrite existing files using the -w or --no-overwrites option.
</li><li>It can be told to attempt to continue interrupted downloads with the -c or --continue option.
</li><li>For YouTube, you can also use the URL of a playlist, and it will download all the videos in that playlist.
</li><li>For YouTube, you can also use the special word ytsearch to download search results. With ytsearch it will download the first search result. With ytsearchN, where N is a number, it will download the first N results. With ytsearchall it will download every result for that search. In most systems you'll need to use quotes for multiple words. Example: <em>youtube-dl "ytsearch3:cute kittens"</em>.
</li><li><em>youtube-dl</em> honors the http_proxy environment variable if you want to use a proxy. Set it to something like <em><code>http://proxy.example.com:8080</code></em>, and do not leave the <em><code>http://</code></em> prefix out.
</li><li>You can get the program version by calling it as <em>youtube-dl -v</em> or <em>youtube-dl --version</em>.
</li><li>For usage instructions, use <em>youtube-dl -h</em> or <em>youtube-dl --help</em>.
</li><li>You can cancel the program at any time pressing Ctrl+C. It may print some error lines saying something about <em>KeyboardInterrupt</em>. That's ok.
</li></ul>
<h2 id="download-it">Download it</h2>
<p>Note that if you directly click on these hyperlinks, your web browser will most likely display the program contents. It's usually better to right-click on it and choose the appropriate option, normally called <em>Save Target As</em> or <em>Save Link As</em>, depending on the web browser you are using.</p>
<h3 id="httpbitbucketorgrg3youtube-dlraw20100404youtube-dl20100404"><a href="http://bitbucket.org/rg3/youtube-dl/raw/2010.04.04/youtube-dl">2010.04.04</a></h3>
<ul><li><strong>MD5</strong>: 6c3e2982b5a46ede4fd5d6e6ed280331
</li><li><strong>SHA1</strong>: 2edaa9a95f26bbd1e871314f3fd5e8e87b1bd576
</li><li><strong>SHA256</strong>: 69aa7757feb01c5faf68414a0220bed1e9210900059b1a7d7c7f2c53e788ae26
</li></ul>
<h3 id="output-template">Output template</h3>
<p>The -o option allows users to indicate a template for the output file names. The basic usage is not to set any template arguments when downloading a single file, like in <em>youtube-dl -o funny_video.flv "<code>http://some/video</code>"</em>. However, it may contain special sequences that will be replaced when downloading each video. The special sequences have the format <strong>%(NAME)s</strong>. To clarify, that's a percent symbol followed by a name in parenthesis, followed by a lowercase S. Allowed names are:</p>
<ul><li><em>id</em>: The sequence will be replaced by the video identifier.
</li><li><em>url</em>: The sequence will be replaced by the video URL.
</li><li><em>uploader</em>: The sequence will be replaced by the nickname of the person who uploaded the video.
</li><li><em>title</em>: The sequence will be replaced by the literal video title.
</li><li><em>stitle</em>: The sequence will be replaced by a simplified video title, restricted to alphanumeric characters and dashes.
</li><li><em>ext</em>: The sequence will be replaced by the appropriate extension (like <em>flv</em> or <em>mp4</em>).
</li><li><em>epoch</em>: The sequence will be replaced by the Unix epoch when creating the file.
</li><li><em>ord</em>: The sequence will be replaced by a five-digit number that will be increased with each download, starting at zero.
</li></ul>
<p>As you may have guessed, the default template is <em>%(id)s.%(ext)s</em>. When some command line options are used, it's replaced by other templates like <em>%(title)s-%(id)s.%(ext)s</em>. You can specify your own.</p>
<h2 id="authors">Authors</h2>
<ul><li>Ricardo Garcia Gonzalez: program core, YouTube.com InfoExtractor, metacafe.com InfoExtractor and YouTube playlist InfoExtractor.
</li><li>Danny Colligan: YouTube search InfoExtractor, ideas and patches.
</li><li>Benjamin Johnson: Google Video InfoExtractor, Photobucket InfoExtractor, Yahoo! Video InfoExtractor, generic InfoExtractor, ideas, patches, etc.
</li><li>Many other people contributing patches, code, ideas and kind messages. Too many to be listed here. You know who you are. Thank you very much.
</li></ul>
<p>Copyright © 2006-2010 Ricardo Garcia Gonzalez</p>
</div>
<div class="cb"></div>
</div>
<div class="cb footer-placeholder"></div>
</div>
<div id="footer-wrapper">
<div id="footer">
<a href="/site/terms/">TOS</a> | <a href="/site/privacy/">Privacy Policy</a> | <a href="http://blog.bitbucket.org/">Blog</a> | <a href="http://bitbucket.org/jespern/bitbucket/issues/new/">Report Bug</a> | <a href="http://groups.google.com/group/bitbucket-users">Discuss</a> | <a href="http://avantlumiere.com/">&copy; 2008-2010</a>
| We run <small><b>
<a href="http://www.djangoproject.com/">Django 1.1.0</a> /
<a href="http://bitbucket.org/jespern/django-piston/">Piston 0.2.3rc1</a> /
<a href="http://www.selenic.com/mercurial/">Hg 1.3.1</a> /
<a href="http://www.python.org">Python 2.5.2</a> /
r2890| fe01
</b></small>
</div>
</div>
</body>
</html>