diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 71 | 
1 files changed, 69 insertions, 2 deletions
| @@ -28,6 +28,9 @@ which means you can modify it, redistribute it or use it however you like.      --user-agent UA                  specify a custom user agent      --referer REF                    specify a custom referer, use if the video                                       access is restricted to one domain +    --add-header FIELD:VALUE         specify a custom HTTP header and its value, +                                     separated by a colon ':'. You can use this +                                     option multiple times      --list-extractors                List all supported extractors and the URLs                                       they would handle      --extractor-descriptions         Output descriptions of all supported @@ -62,6 +65,7 @@ which means you can modify it, redistribute it or use it however you like.                                       configuration in ~/.config/youtube-dl.conf                                       (%APPDATA%/youtube-dl/config.txt on                                       Windows) +    --encoding ENCODING              Force the specified encoding (experimental)  ## Video Selection:      --playlist-start NUMBER          playlist video to start at (default is 1) @@ -166,6 +170,7 @@ which means you can modify it, redistribute it or use it however you like.  ## Verbosity / Simulation Options:      -q, --quiet                      activates quiet mode +    --no-warnings                    Ignore warnings      -s, --simulate                   do not download the video and do not write                                       anything to disk      --skip-download                  do not download the video @@ -177,7 +182,9 @@ which means you can modify it, redistribute it or use it however you like.      --get-duration                   simulate, quiet but print video length      --get-filename                   simulate, quiet but print output filename      --get-format                     simulate, quiet but print output format -    -j, --dump-json                  simulate, quiet but print JSON information +    -j, --dump-json                  simulate, quiet but print JSON information. +                                     See --output for a description of available +                                     keys.      --newline                        output progress bar as new lines      --no-progress                    do not print progress bar      --console-title                  display progress in console titlebar @@ -364,7 +371,67 @@ If you want to create a build of youtube-dl yourself, you'll need  ### Adding support for a new site -If you want to add support for a new site, copy *any* [recently modified](https://github.com/rg3/youtube-dl/commits/master/youtube_dl/extractor) file in `youtube_dl/extractor`, add an import in [`youtube_dl/extractor/__init__.py`](https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/__init__.py). Have a look at [`youtube_dl/common/extractor/common.py`](https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/common.py) for possible helper methods and a [detailed description of what your extractor should return](https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/common.py#L38). Don't forget to run the tests with `python test/test_download.py TestDownload.test_YourExtractor`! For a detailed tutorial, refer to [this blog post](http://filippo.io/add-support-for-a-new-video-site-to-youtube-dl/). +If you want to add support for a new site, you can follow this quick list (assuming your service is called `yourextractor`): + +1. [Fork this repository](https://github.com/rg3/youtube-dl/fork) +2. Check out the source code with `git clone git@github.com:YOUR_GITHUB_USERNAME/youtube-dl.git` +3. Start a new git branch with `cd youtube-dl; git checkout -b yourextractor` +4. Start with this simple template and save it to `youtube_dl/extractor/yourextractor.py`: + +        # coding: utf-8 +        from __future__ import unicode_literals + +        import re + +        from .common import InfoExtractor +         +         +        class YourExtractorIE(InfoExtractor): +            _VALID_URL = r'https?://(?:www\.)?yourextractor\.com/watch/(?P<id>[0-9]+)' +            _TEST = { +                'url': 'http://yourextractor.com/watch/42', +                'md5': 'TODO: md5 sum of the first 10KiB of the video file', +                'info_dict': { +                    'id': '42', +                    'ext': 'mp4', +                    'title': 'Video title goes here', +                    # TODO more properties, either as: +                    # * A value +                    # * MD5 checksum; start the string with md5: +                    # * A regular expression; start the string with re: +                    # * Any Python type (for example int or float) +                } +            } + +            def _real_extract(self, url): +                mobj = re.match(self._VALID_URL, url) +                video_id = mobj.group('id') + +                # TODO more code goes here, for example ... +                webpage = self._download_webpage(url, video_id) +                title = self._html_search_regex(r'<h1>(.*?)</h1>', webpage, 'title') + +                return { +                    'id': video_id, +                    'title': title, +                    # TODO more properties (see youtube_dl/extractor/common.py) +                } + + +5. Add an import in [`youtube_dl/extractor/__init__.py`](https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/__init__.py). +6. Run `python test/test_download.py TestDownload.test_YourExtractor`. This *should fail* at first, but you can continually re-run it until you're done. +7. Have a look at [`youtube_dl/common/extractor/common.py`](https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/common.py) for possible helper methods and a [detailed description of what your extractor should return](https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/common.py#L38). Add tests and code for as many as you want. +8. If you can, check the code with [pyflakes](https://pypi.python.org/pypi/pyflakes) (a good idea) and [pep8](https://pypi.python.org/pypi/pep8) (optional, ignore E501). +9. When the tests pass, [add](https://www.kernel.org/pub/software/scm/git/docs/git-add.html) the new files and [commit](https://www.kernel.org/pub/software/scm/git/docs/git-commit.html) them and [push](https://www.kernel.org/pub/software/scm/git/docs/git-push.html) the result, like this: + +        $ git add youtube_dl/extractor/__init__.py +        $ git add youtube_dl/extractor/yourextractor.py +        $ git commit -m '[yourextractor] Add new extractor' +        $ git push origin yourextractor + +10. Finally, [create a pull request](https://help.github.com/articles/creating-a-pull-request). We'll then review and merge it. + +In any case, thank you very much for your contributions!  # BUGS | 
