mirror of
https://github.com/l1ving/youtube-dl
synced 2025-02-11 15:43:02 +08:00
Explain setuptools entry points in the README
This commit is contained in:
parent
7afa5c42bf
commit
b4ea83d516
51
README.md
51
README.md
@ -533,6 +533,57 @@ If you want to add support for a new site, you can follow this quick list (assum
|
|||||||
|
|
||||||
In any case, thank you very much for your contributions!
|
In any case, thank you very much for your contributions!
|
||||||
|
|
||||||
|
### Registering your extractor through setuptools entry-points
|
||||||
|
|
||||||
|
It's also possible to register youtube-dl extractors from within third-party Python packages. This is useful if, for instance, you already have a Python package that deals with some complex site and including such extractor in youtube-dl would not be possible due to complex dependencies or something like that. In this case you can create an extractor inside your package and register it into youtube-dl through [setuptools entry-points](http://pythonhosted.org/setuptools/pkg_resources.html#entry-points).
|
||||||
|
|
||||||
|
Considering your package is called `mypackage` you could do it like this:
|
||||||
|
|
||||||
|
1. Make your package depend on youtube-dl as an [optional extra](http://pythonhosted.org//setuptools/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies).
|
||||||
|
```python
|
||||||
|
# yourpackage/setup.py
|
||||||
|
setup(
|
||||||
|
...
|
||||||
|
extras_require = {
|
||||||
|
'youtube-dl': ['youtubel_dl'],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
```
|
||||||
|
2. Declare an [entry point](http://pythonhosted.org//setuptools/setuptools.html#entry-points) for your extractor.
|
||||||
|
```python
|
||||||
|
# yourpackage/setup.py
|
||||||
|
setup(
|
||||||
|
...
|
||||||
|
extras_require = {
|
||||||
|
'youtube-dl': ['youtubel_dl'],
|
||||||
|
},
|
||||||
|
entry_points = {
|
||||||
|
'youtube_dl.extractors': [
|
||||||
|
'yourservice = yourpackage.youtube_dl_extractor:YourExtractorIE'
|
||||||
|
],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
```
|
||||||
|
3. Create the extractor you just declared.
|
||||||
|
```python
|
||||||
|
# coding: utf-8
|
||||||
|
# yourpackage/youtube_dl_extractor.py
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
from youtube_dl.common import InfoExtractor
|
||||||
|
|
||||||
|
class YourExtractorIE(InfoExtractor):
|
||||||
|
_VALID_URL = r'https?://(?:www\.)?yourextractor\.com/watch/(?P<id>[0-9]+)'
|
||||||
|
...
|
||||||
|
```
|
||||||
|
4. Instruct your package's users to install it with youtube-dl support and use it like this:
|
||||||
|
```bash
|
||||||
|
$ pip install yourpackage[youtube-dl]
|
||||||
|
$ youtube-dl http://www.yourextractor.com/watch/12345
|
||||||
|
```
|
||||||
|
|
||||||
# EMBEDDING YOUTUBE-DL
|
# EMBEDDING YOUTUBE-DL
|
||||||
|
|
||||||
youtube-dl makes the best effort to be a good command-line program, and thus should be callable from any programming language. If you encounter any problems parsing its output, feel free to [create a report](https://github.com/rg3/youtube-dl/issues/new).
|
youtube-dl makes the best effort to be a good command-line program, and thus should be callable from any programming language. If you encounter any problems parsing its output, feel free to [create a report](https://github.com/rg3/youtube-dl/issues/new).
|
||||||
|
Loading…
Reference in New Issue
Block a user