mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	[skip travis] renaming
to avoid using same folder when using pip install for example
This commit is contained in:
		@@ -2,8 +2,8 @@ include README.md
 | 
			
		||||
include LICENSE
 | 
			
		||||
include AUTHORS
 | 
			
		||||
include ChangeLog
 | 
			
		||||
include youtube-dl.bash-completion
 | 
			
		||||
include youtube-dl.fish
 | 
			
		||||
include youtube-dl.1
 | 
			
		||||
include youtube-dlc.bash-completion
 | 
			
		||||
include youtube-dlc.fish
 | 
			
		||||
include youtube-dlc.1
 | 
			
		||||
recursive-include docs Makefile conf.py *.rst
 | 
			
		||||
recursive-include test *
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										84
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										84
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
all: youtube-dl README.md CONTRIBUTING.md README.txt youtube-dl.1 youtube-dl.bash-completion youtube-dl.zsh youtube-dl.fish supportedsites
 | 
			
		||||
all: youtube-dlc README.md CONTRIBUTING.md README.txt youtube-dlc.1 youtube-dlc.bash-completion youtube-dlc.zsh youtube-dlc.fish supportedsites
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -rf youtube-dl.1.temp.md youtube-dl.1 youtube-dl.bash-completion README.txt MANIFEST build/ dist/ .coverage cover/ youtube-dl.tar.gz youtube-dl.zsh youtube-dl.fish youtube_dl/extractor/lazy_extractors.py *.dump *.part* *.ytdl *.info.json *.mp4 *.m4a *.flv *.mp3 *.avi *.mkv *.webm *.3gp *.wav *.ape *.swf *.jpg *.png CONTRIBUTING.md.tmp youtube-dl youtube-dl.exe
 | 
			
		||||
	rm -rf youtube-dlc.1.temp.md youtube-dlc.1 youtube-dlc.bash-completion README.txt MANIFEST build/ dist/ .coverage cover/ youtube-dlc.tar.gz youtube-dlc.zsh youtube-dlc.fish youtube_dlc/extractor/lazy_extractors.py *.dump *.part* *.ytdl *.info.json *.mp4 *.m4a *.flv *.mp3 *.avi *.mkv *.webm *.3gp *.wav *.ape *.swf *.jpg *.png CONTRIBUTING.md.tmp youtube-dlc youtube-dlc.exe
 | 
			
		||||
	find . -name "*.pyc" -delete
 | 
			
		||||
	find . -name "*.class" -delete
 | 
			
		||||
 | 
			
		||||
@@ -17,23 +17,23 @@ SYSCONFDIR = $(shell if [ $(PREFIX) = /usr -o $(PREFIX) = /usr/local ]; then ech
 | 
			
		||||
# set markdown input format to "markdown-smart" for pandoc version 2 and to "markdown" for pandoc prior to version 2
 | 
			
		||||
MARKDOWN = $(shell if [ `pandoc -v | head -n1 | cut -d" " -f2 | head -c1` = "2" ]; then echo markdown-smart; else echo markdown; fi)
 | 
			
		||||
 | 
			
		||||
install: youtube-dl youtube-dl.1 youtube-dl.bash-completion youtube-dl.zsh youtube-dl.fish
 | 
			
		||||
install: youtube-dlc youtube-dlc.1 youtube-dlc.bash-completion youtube-dlc.zsh youtube-dlc.fish
 | 
			
		||||
	install -d $(DESTDIR)$(BINDIR)
 | 
			
		||||
	install -m 755 youtube-dl $(DESTDIR)$(BINDIR)
 | 
			
		||||
	install -m 755 youtube-dlc $(DESTDIR)$(BINDIR)
 | 
			
		||||
	install -d $(DESTDIR)$(MANDIR)/man1
 | 
			
		||||
	install -m 644 youtube-dl.1 $(DESTDIR)$(MANDIR)/man1
 | 
			
		||||
	install -m 644 youtube-dlc.1 $(DESTDIR)$(MANDIR)/man1
 | 
			
		||||
	install -d $(DESTDIR)$(SYSCONFDIR)/bash_completion.d
 | 
			
		||||
	install -m 644 youtube-dl.bash-completion $(DESTDIR)$(SYSCONFDIR)/bash_completion.d/youtube-dl
 | 
			
		||||
	install -m 644 youtube-dlc.bash-completion $(DESTDIR)$(SYSCONFDIR)/bash_completion.d/youtube-dlc
 | 
			
		||||
	install -d $(DESTDIR)$(SHAREDIR)/zsh/site-functions
 | 
			
		||||
	install -m 644 youtube-dl.zsh $(DESTDIR)$(SHAREDIR)/zsh/site-functions/_youtube-dl
 | 
			
		||||
	install -m 644 youtube-dlc.zsh $(DESTDIR)$(SHAREDIR)/zsh/site-functions/_youtube-dlc
 | 
			
		||||
	install -d $(DESTDIR)$(SYSCONFDIR)/fish/completions
 | 
			
		||||
	install -m 644 youtube-dl.fish $(DESTDIR)$(SYSCONFDIR)/fish/completions/youtube-dl.fish
 | 
			
		||||
	install -m 644 youtube-dlc.fish $(DESTDIR)$(SYSCONFDIR)/fish/completions/youtube-dlc.fish
 | 
			
		||||
 | 
			
		||||
codetest:
 | 
			
		||||
	flake8 .
 | 
			
		||||
 | 
			
		||||
test:
 | 
			
		||||
	#nosetests --with-coverage --cover-package=youtube_dl --cover-html --verbose --processes 4 test
 | 
			
		||||
	#nosetests --with-coverage --cover-package=youtube_dlc --cover-html --verbose --processes 4 test
 | 
			
		||||
	nosetests --verbose test
 | 
			
		||||
	$(MAKE) codetest
 | 
			
		||||
 | 
			
		||||
@@ -51,34 +51,34 @@ offlinetest: codetest
 | 
			
		||||
		--exclude test_youtube_lists.py \
 | 
			
		||||
		--exclude test_youtube_signature.py
 | 
			
		||||
 | 
			
		||||
tar: youtube-dl.tar.gz
 | 
			
		||||
tar: youtube-dlc.tar.gz
 | 
			
		||||
 | 
			
		||||
.PHONY: all clean install test tar bash-completion pypi-files zsh-completion fish-completion ot offlinetest codetest supportedsites
 | 
			
		||||
 | 
			
		||||
pypi-files: youtube-dl.bash-completion README.txt youtube-dl.1 youtube-dl.fish
 | 
			
		||||
pypi-files: youtube-dlc.bash-completion README.txt youtube-dlc.1 youtube-dlc.fish
 | 
			
		||||
 | 
			
		||||
youtube-dl: youtube_dl/*.py youtube_dl/*/*.py
 | 
			
		||||
youtube-dlc: youtube_dlc/*.py youtube_dlc/*/*.py
 | 
			
		||||
	mkdir -p zip
 | 
			
		||||
	for d in youtube_dl youtube_dl/downloader youtube_dl/extractor youtube_dl/postprocessor ; do \
 | 
			
		||||
	for d in youtube_dlc youtube_dlc/downloader youtube_dlc/extractor youtube_dlc/postprocessor ; do \
 | 
			
		||||
	  mkdir -p zip/$$d ;\
 | 
			
		||||
	  cp -pPR $$d/*.py zip/$$d/ ;\
 | 
			
		||||
	done
 | 
			
		||||
	touch -t 200001010101 zip/youtube_dl/*.py zip/youtube_dl/*/*.py
 | 
			
		||||
	mv zip/youtube_dl/__main__.py zip/
 | 
			
		||||
	cd zip ; zip -q ../youtube-dl youtube_dl/*.py youtube_dl/*/*.py __main__.py
 | 
			
		||||
	touch -t 200001010101 zip/youtube_dlc/*.py zip/youtube_dlc/*/*.py
 | 
			
		||||
	mv zip/youtube_dlc/__main__.py zip/
 | 
			
		||||
	cd zip ; zip -q ../youtube-dlc youtube_dlc/*.py youtube_dlc/*/*.py __main__.py
 | 
			
		||||
	rm -rf zip
 | 
			
		||||
	echo '#!$(PYTHON)' > youtube-dl
 | 
			
		||||
	cat youtube-dl.zip >> youtube-dl
 | 
			
		||||
	rm youtube-dl.zip
 | 
			
		||||
	chmod a+x youtube-dl
 | 
			
		||||
	echo '#!$(PYTHON)' > youtube-dlc
 | 
			
		||||
	cat youtube-dlc.zip >> youtube-dlc
 | 
			
		||||
	rm youtube-dlc.zip
 | 
			
		||||
	chmod a+x youtube-dlc
 | 
			
		||||
 | 
			
		||||
README.md: youtube_dl/*.py youtube_dl/*/*.py
 | 
			
		||||
	COLUMNS=80 $(PYTHON) youtube_dl/__main__.py --help | $(PYTHON) devscripts/make_readme.py
 | 
			
		||||
README.md: youtube_dlc/*.py youtube_dlc/*/*.py
 | 
			
		||||
	COLUMNS=80 $(PYTHON) youtube_dlc/__main__.py --help | $(PYTHON) devscripts/make_readme.py
 | 
			
		||||
 | 
			
		||||
CONTRIBUTING.md: README.md
 | 
			
		||||
	$(PYTHON) devscripts/make_contributing.py README.md CONTRIBUTING.md
 | 
			
		||||
 | 
			
		||||
issuetemplates: devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/1_broken_site.md .github/ISSUE_TEMPLATE_tmpl/2_site_support_request.md .github/ISSUE_TEMPLATE_tmpl/3_site_feature_request.md .github/ISSUE_TEMPLATE_tmpl/4_bug_report.md .github/ISSUE_TEMPLATE_tmpl/5_feature_request.md youtube_dl/version.py
 | 
			
		||||
issuetemplates: devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/1_broken_site.md .github/ISSUE_TEMPLATE_tmpl/2_site_support_request.md .github/ISSUE_TEMPLATE_tmpl/3_site_feature_request.md .github/ISSUE_TEMPLATE_tmpl/4_bug_report.md .github/ISSUE_TEMPLATE_tmpl/5_feature_request.md youtube_dlc/version.py
 | 
			
		||||
	$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/1_broken_site.md .github/ISSUE_TEMPLATE/1_broken_site.md
 | 
			
		||||
	$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/2_site_support_request.md .github/ISSUE_TEMPLATE/2_site_support_request.md
 | 
			
		||||
	$(PYTHON) devscripts/make_issue_template.py .github/ISSUE_TEMPLATE_tmpl/3_site_feature_request.md .github/ISSUE_TEMPLATE/3_site_feature_request.md
 | 
			
		||||
@@ -91,34 +91,34 @@ supportedsites:
 | 
			
		||||
README.txt: README.md
 | 
			
		||||
	pandoc -f $(MARKDOWN) -t plain README.md -o README.txt
 | 
			
		||||
 | 
			
		||||
youtube-dl.1: README.md
 | 
			
		||||
	$(PYTHON) devscripts/prepare_manpage.py youtube-dl.1.temp.md
 | 
			
		||||
	pandoc -s -f $(MARKDOWN) -t man youtube-dl.1.temp.md -o youtube-dl.1
 | 
			
		||||
	rm -f youtube-dl.1.temp.md
 | 
			
		||||
youtube-dlc.1: README.md
 | 
			
		||||
	$(PYTHON) devscripts/prepare_manpage.py youtube-dlc.1.temp.md
 | 
			
		||||
	pandoc -s -f $(MARKDOWN) -t man youtube-dlc.1.temp.md -o youtube-dlc.1
 | 
			
		||||
	rm -f youtube-dlc.1.temp.md
 | 
			
		||||
 | 
			
		||||
youtube-dl.bash-completion: youtube_dl/*.py youtube_dl/*/*.py devscripts/bash-completion.in
 | 
			
		||||
youtube-dlc.bash-completion: youtube_dlc/*.py youtube_dlc/*/*.py devscripts/bash-completion.in
 | 
			
		||||
	$(PYTHON) devscripts/bash-completion.py
 | 
			
		||||
 | 
			
		||||
bash-completion: youtube-dl.bash-completion
 | 
			
		||||
bash-completion: youtube-dlc.bash-completion
 | 
			
		||||
 | 
			
		||||
youtube-dl.zsh: youtube_dl/*.py youtube_dl/*/*.py devscripts/zsh-completion.in
 | 
			
		||||
youtube-dlc.zsh: youtube_dlc/*.py youtube_dlc/*/*.py devscripts/zsh-completion.in
 | 
			
		||||
	$(PYTHON) devscripts/zsh-completion.py
 | 
			
		||||
 | 
			
		||||
zsh-completion: youtube-dl.zsh
 | 
			
		||||
zsh-completion: youtube-dlc.zsh
 | 
			
		||||
 | 
			
		||||
youtube-dl.fish: youtube_dl/*.py youtube_dl/*/*.py devscripts/fish-completion.in
 | 
			
		||||
youtube-dlc.fish: youtube_dlc/*.py youtube_dlc/*/*.py devscripts/fish-completion.in
 | 
			
		||||
	$(PYTHON) devscripts/fish-completion.py
 | 
			
		||||
 | 
			
		||||
fish-completion: youtube-dl.fish
 | 
			
		||||
fish-completion: youtube-dlc.fish
 | 
			
		||||
 | 
			
		||||
lazy-extractors: youtube_dl/extractor/lazy_extractors.py
 | 
			
		||||
lazy-extractors: youtube_dlc/extractor/lazy_extractors.py
 | 
			
		||||
 | 
			
		||||
_EXTRACTOR_FILES = $(shell find youtube_dl/extractor -iname '*.py' -and -not -iname 'lazy_extractors.py')
 | 
			
		||||
youtube_dl/extractor/lazy_extractors.py: devscripts/make_lazy_extractors.py devscripts/lazy_load_template.py $(_EXTRACTOR_FILES)
 | 
			
		||||
_EXTRACTOR_FILES = $(shell find youtube_dlc/extractor -iname '*.py' -and -not -iname 'lazy_extractors.py')
 | 
			
		||||
youtube_dlc/extractor/lazy_extractors.py: devscripts/make_lazy_extractors.py devscripts/lazy_load_template.py $(_EXTRACTOR_FILES)
 | 
			
		||||
	$(PYTHON) devscripts/make_lazy_extractors.py $@
 | 
			
		||||
 | 
			
		||||
youtube-dl.tar.gz: youtube-dl README.md README.txt youtube-dl.1 youtube-dl.bash-completion youtube-dl.zsh youtube-dl.fish ChangeLog AUTHORS
 | 
			
		||||
	@tar -czf youtube-dl.tar.gz --transform "s|^|youtube-dl/|" --owner 0 --group 0 \
 | 
			
		||||
youtube-dlc.tar.gz: youtube-dlc README.md README.txt youtube-dlc.1 youtube-dlc.bash-completion youtube-dlc.zsh youtube-dlc.fish ChangeLog AUTHORS
 | 
			
		||||
	@tar -czf youtube-dlc.tar.gz --transform "s|^|youtube-dlc/|" --owner 0 --group 0 \
 | 
			
		||||
		--exclude '*.DS_Store' \
 | 
			
		||||
		--exclude '*.kate-swp' \
 | 
			
		||||
		--exclude '*.pyc' \
 | 
			
		||||
@@ -128,8 +128,8 @@ youtube-dl.tar.gz: youtube-dl README.md README.txt youtube-dl.1 youtube-dl.bash-
 | 
			
		||||
		--exclude '.git' \
 | 
			
		||||
		--exclude 'docs/_build' \
 | 
			
		||||
		-- \
 | 
			
		||||
		bin devscripts test youtube_dl docs \
 | 
			
		||||
		bin devscripts test youtube_dlc docs \
 | 
			
		||||
		ChangeLog AUTHORS LICENSE README.md README.txt \
 | 
			
		||||
		Makefile MANIFEST.in youtube-dl.1 youtube-dl.bash-completion \
 | 
			
		||||
		youtube-dl.zsh youtube-dl.fish setup.py setup.cfg \
 | 
			
		||||
		youtube-dl
 | 
			
		||||
		Makefile MANIFEST.in youtube-dlc.1 youtube-dlc.bash-completion \
 | 
			
		||||
		youtube-dlc.zsh youtube-dlc.fish setup.py setup.cfg \
 | 
			
		||||
		youtube-dlc
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								README.md
									
									
									
									
									
								
							@@ -34,7 +34,7 @@ Using curl:
 | 
			
		||||
To build the Windows executable yourself
 | 
			
		||||
 | 
			
		||||
    python -m pip install --upgrade pyinstaller
 | 
			
		||||
    pyinstaller.exe youtube_dl\__main__.py --onefile --name youtube-dlc
 | 
			
		||||
    pyinstaller.exe youtube_dlc\__main__.py --onefile --name youtube-dlc
 | 
			
		||||
    
 | 
			
		||||
Or simply execute the `make_win.bat` if pyinstaller is installed.
 | 
			
		||||
There will be a `youtube-dlc.exe` in `/dist`  
 | 
			
		||||
@@ -71,18 +71,18 @@ Then simply type this
 | 
			
		||||
                                     extractor
 | 
			
		||||
    --default-search PREFIX          Use this prefix for unqualified URLs. For
 | 
			
		||||
                                     example "gvsearch2:" downloads two videos
 | 
			
		||||
                                     from google videos for youtube-dl "large
 | 
			
		||||
                                     from google videos for youtube-dlc "large
 | 
			
		||||
                                     apple". Use the value "auto" to let
 | 
			
		||||
                                     youtube-dl guess ("auto_warning" to emit a
 | 
			
		||||
                                     youtube-dlc guess ("auto_warning" to emit a
 | 
			
		||||
                                     warning when guessing). "error" just throws
 | 
			
		||||
                                     an error. The default value "fixup_error"
 | 
			
		||||
                                     repairs broken URLs, but emits an error if
 | 
			
		||||
                                     this is not possible instead of searching.
 | 
			
		||||
    --ignore-config                  Do not read configuration files. When given
 | 
			
		||||
                                     in the global configuration file
 | 
			
		||||
                                     /etc/youtube-dl.conf: Do not read the user
 | 
			
		||||
                                     /etc/youtube-dlc.conf: Do not read the user
 | 
			
		||||
                                     configuration in ~/.config/youtube-
 | 
			
		||||
                                     dl/config (%APPDATA%/youtube-dl/config.txt
 | 
			
		||||
                                     dl/config (%APPDATA%/youtube-dlc/config.txt
 | 
			
		||||
                                     on Windows)
 | 
			
		||||
    --config-location PATH           Location of the configuration file; either
 | 
			
		||||
                                     the path to the config or its containing
 | 
			
		||||
@@ -240,7 +240,7 @@ Then simply type this
 | 
			
		||||
                                     filenames
 | 
			
		||||
    -w, --no-overwrites              Do not overwrite files
 | 
			
		||||
    -c, --continue                   Force resume of partially downloaded files.
 | 
			
		||||
                                     By default, youtube-dl will resume
 | 
			
		||||
                                     By default, youtube-dlc will resume
 | 
			
		||||
                                     downloads if possible.
 | 
			
		||||
    --no-continue                    Do not resume partially downloaded files
 | 
			
		||||
                                     (restart from beginning)
 | 
			
		||||
@@ -258,11 +258,11 @@ Then simply type this
 | 
			
		||||
                                     option)
 | 
			
		||||
    --cookies FILE                   File to read cookies from and dump cookie
 | 
			
		||||
                                     jar in
 | 
			
		||||
    --cache-dir DIR                  Location in the filesystem where youtube-dl
 | 
			
		||||
    --cache-dir DIR                  Location in the filesystem where youtube-dlc
 | 
			
		||||
                                     can store some downloaded information
 | 
			
		||||
                                     permanently. By default
 | 
			
		||||
                                     $XDG_CACHE_HOME/youtube-dl or
 | 
			
		||||
                                     ~/.cache/youtube-dl . At the moment, only
 | 
			
		||||
                                     $XDG_CACHE_HOME/youtube-dlc or
 | 
			
		||||
                                     ~/.cache/youtube-dlc . At the moment, only
 | 
			
		||||
                                     YouTube player files (for videos with
 | 
			
		||||
                                     obfuscated signatures) are cached, but that
 | 
			
		||||
                                     may change.
 | 
			
		||||
@@ -308,8 +308,8 @@ Then simply type this
 | 
			
		||||
                                     files in the current directory to debug
 | 
			
		||||
                                     problems
 | 
			
		||||
    --print-traffic                  Display sent and read HTTP traffic
 | 
			
		||||
    -C, --call-home                  Contact the youtube-dl server for debugging
 | 
			
		||||
    --no-call-home                   Do NOT contact the youtube-dl server for
 | 
			
		||||
    -C, --call-home                  Contact the youtube-dlc server for debugging
 | 
			
		||||
    --no-call-home                   Do NOT contact the youtube-dlc server for
 | 
			
		||||
                                     debugging
 | 
			
		||||
 | 
			
		||||
## Workarounds:
 | 
			
		||||
@@ -370,7 +370,7 @@ Then simply type this
 | 
			
		||||
## Authentication Options:
 | 
			
		||||
    -u, --username USERNAME          Login with this account ID
 | 
			
		||||
    -p, --password PASSWORD          Account password. If this option is left
 | 
			
		||||
                                     out, youtube-dl will ask interactively.
 | 
			
		||||
                                     out, youtube-dlc will ask interactively.
 | 
			
		||||
    -2, --twofactor TWOFACTOR        Two-factor authentication code
 | 
			
		||||
    -n, --netrc                      Use .netrc authentication data
 | 
			
		||||
    --video-password PASSWORD        Video password (vimeo, smotri, youku)
 | 
			
		||||
@@ -381,7 +381,7 @@ Then simply type this
 | 
			
		||||
                                     a list of available MSOs
 | 
			
		||||
    --ap-username USERNAME           Multiple-system operator account login
 | 
			
		||||
    --ap-password PASSWORD           Multiple-system operator account password.
 | 
			
		||||
                                     If this option is left out, youtube-dl will
 | 
			
		||||
                                     If this option is left out, youtube-dlc will
 | 
			
		||||
                                     ask interactively.
 | 
			
		||||
    --ap-list-mso                    List all supported multiple-system
 | 
			
		||||
                                     operators
 | 
			
		||||
@@ -444,6 +444,6 @@ Then simply type this
 | 
			
		||||
 | 
			
		||||
# COPYRIGHT
 | 
			
		||||
 | 
			
		||||
youtube-dl is released into the public domain by the copyright holders.
 | 
			
		||||
youtube-dlc is released into the public domain by the copyright holders.
 | 
			
		||||
 | 
			
		||||
This README file was originally written by [Daniel Bolton](https://github.com/dbbolton) and is likewise released into the public domain.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
__youtube_dl()
 | 
			
		||||
__youtube_dlc()
 | 
			
		||||
{
 | 
			
		||||
    local cur prev opts fileopts diropts keywords
 | 
			
		||||
    COMPREPLY=()
 | 
			
		||||
@@ -26,4 +26,4 @@ __youtube_dl()
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
complete -F __youtube_dl youtube-dl
 | 
			
		||||
complete -F __youtube_dlc youtube-dlc
 | 
			
		||||
 
 | 
			
		||||
@@ -6,9 +6,9 @@ from os.path import dirname as dirn
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
sys.path.insert(0, dirn(dirn((os.path.abspath(__file__)))))
 | 
			
		||||
import youtube_dl
 | 
			
		||||
import youtube_dlc
 | 
			
		||||
 | 
			
		||||
BASH_COMPLETION_FILE = "youtube-dl.bash-completion"
 | 
			
		||||
BASH_COMPLETION_FILE = "youtube-dlc.bash-completion"
 | 
			
		||||
BASH_COMPLETION_TEMPLATE = "devscripts/bash-completion.in"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -26,5 +26,5 @@ def build_completion(opt_parser):
 | 
			
		||||
        f.write(filled_template)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
parser = youtube_dl.parseOpts()[0]
 | 
			
		||||
parser = youtube_dlc.parseOpts()[0]
 | 
			
		||||
build_completion(parser)
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ import traceback
 | 
			
		||||
import os.path
 | 
			
		||||
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname((os.path.abspath(__file__)))))
 | 
			
		||||
from youtube_dl.compat import (
 | 
			
		||||
from youtube_dlc.compat import (
 | 
			
		||||
    compat_input,
 | 
			
		||||
    compat_http_server,
 | 
			
		||||
    compat_str,
 | 
			
		||||
@@ -325,7 +325,7 @@ class YoutubeDLBuilder(object):
 | 
			
		||||
    authorizedUsers = ['fraca7', 'phihag', 'rg3', 'FiloSottile', 'ytdl-org']
 | 
			
		||||
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
        if self.repoName != 'youtube-dl':
 | 
			
		||||
        if self.repoName != 'youtube-dlc':
 | 
			
		||||
            raise BuildError('Invalid repository "%s"' % self.repoName)
 | 
			
		||||
        if self.user not in self.authorizedUsers:
 | 
			
		||||
            raise HTTPError('Unauthorized user "%s"' % self.user, 401)
 | 
			
		||||
 
 | 
			
		||||
@@ -15,8 +15,8 @@ import sys
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from test.helper import gettestcases
 | 
			
		||||
from youtube_dl.utils import compat_urllib_parse_urlparse
 | 
			
		||||
from youtube_dl.utils import compat_urllib_request
 | 
			
		||||
from youtube_dlc.utils import compat_urllib_parse_urlparse
 | 
			
		||||
from youtube_dlc.utils import compat_urllib_request
 | 
			
		||||
 | 
			
		||||
if len(sys.argv) > 1:
 | 
			
		||||
    METHOD = 'LIST'
 | 
			
		||||
 
 | 
			
		||||
@@ -12,13 +12,13 @@ import sys
 | 
			
		||||
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from youtube_dl.compat import (
 | 
			
		||||
from youtube_dlc.compat import (
 | 
			
		||||
    compat_basestring,
 | 
			
		||||
    compat_getpass,
 | 
			
		||||
    compat_print,
 | 
			
		||||
    compat_urllib_request,
 | 
			
		||||
)
 | 
			
		||||
from youtube_dl.utils import (
 | 
			
		||||
from youtube_dlc.utils import (
 | 
			
		||||
    make_HTTPS_handler,
 | 
			
		||||
    sanitized_Request,
 | 
			
		||||
)
 | 
			
		||||
@@ -98,7 +98,7 @@ def main():
 | 
			
		||||
    releaser = GitHubReleaser()
 | 
			
		||||
 | 
			
		||||
    new_release = releaser.create_release(
 | 
			
		||||
        version, name='youtube-dl %s' % version, body=body)
 | 
			
		||||
        version, name='youtube-dlc %s' % version, body=body)
 | 
			
		||||
    release_id = new_release['id']
 | 
			
		||||
 | 
			
		||||
    for asset in os.listdir(build_path):
 | 
			
		||||
 
 | 
			
		||||
@@ -2,4 +2,4 @@
 | 
			
		||||
{{commands}}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
complete --command youtube-dl --arguments ":ytfavorites :ytrecommended :ytsubscriptions :ytwatchlater :ythistory"
 | 
			
		||||
complete --command youtube-dlc --arguments ":ytfavorites :ytrecommended :ytsubscriptions :ytwatchlater :ythistory"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,10 +7,10 @@ from os.path import dirname as dirn
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
sys.path.insert(0, dirn(dirn((os.path.abspath(__file__)))))
 | 
			
		||||
import youtube_dl
 | 
			
		||||
from youtube_dl.utils import shell_quote
 | 
			
		||||
import youtube_dlc
 | 
			
		||||
from youtube_dlc.utils import shell_quote
 | 
			
		||||
 | 
			
		||||
FISH_COMPLETION_FILE = 'youtube-dl.fish'
 | 
			
		||||
FISH_COMPLETION_FILE = 'youtube-dlc.fish'
 | 
			
		||||
FISH_COMPLETION_TEMPLATE = 'devscripts/fish-completion.in'
 | 
			
		||||
 | 
			
		||||
EXTRA_ARGS = {
 | 
			
		||||
@@ -30,7 +30,7 @@ def build_completion(opt_parser):
 | 
			
		||||
    for group in opt_parser.option_groups:
 | 
			
		||||
        for option in group.option_list:
 | 
			
		||||
            long_option = option.get_opt_string().strip('-')
 | 
			
		||||
            complete_cmd = ['complete', '--command', 'youtube-dl', '--long-option', long_option]
 | 
			
		||||
            complete_cmd = ['complete', '--command', 'youtube-dlc', '--long-option', long_option]
 | 
			
		||||
            if option._short_opts:
 | 
			
		||||
                complete_cmd += ['--short-option', option._short_opts[0].strip('-')]
 | 
			
		||||
            if option.help != optparse.SUPPRESS_HELP:
 | 
			
		||||
@@ -45,5 +45,5 @@ def build_completion(opt_parser):
 | 
			
		||||
        f.write(filled_template)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
parser = youtube_dl.parseOpts()[0]
 | 
			
		||||
parser = youtube_dlc.parseOpts()[0]
 | 
			
		||||
build_completion(parser)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,8 +7,8 @@ import os
 | 
			
		||||
import sys
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from youtube_dl.utils import intlist_to_bytes
 | 
			
		||||
from youtube_dl.aes import aes_encrypt, key_expansion
 | 
			
		||||
from youtube_dlc.utils import intlist_to_bytes
 | 
			
		||||
from youtube_dlc.aes import aes_encrypt, key_expansion
 | 
			
		||||
 | 
			
		||||
secret_msg = b'Secret message goes here'
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,9 +22,9 @@ if 'signature' in versions_info:
 | 
			
		||||
new_version = {}
 | 
			
		||||
 | 
			
		||||
filenames = {
 | 
			
		||||
    'bin': 'youtube-dl',
 | 
			
		||||
    'exe': 'youtube-dl.exe',
 | 
			
		||||
    'tar': 'youtube-dl-%s.tar.gz' % version}
 | 
			
		||||
    'bin': 'youtube-dlc',
 | 
			
		||||
    'exe': 'youtube-dlc.exe',
 | 
			
		||||
    'tar': 'youtube-dlc-%s.tar.gz' % version}
 | 
			
		||||
build_dir = os.path.join('..', '..', 'build', version)
 | 
			
		||||
for key, filename in filenames.items():
 | 
			
		||||
    url = 'https://yt-dl.org/downloads/%s/%s' % (version, filename)
 | 
			
		||||
 
 | 
			
		||||
@@ -11,24 +11,24 @@ atom_template = textwrap.dedent("""\
 | 
			
		||||
    <?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
    <feed xmlns="http://www.w3.org/2005/Atom">
 | 
			
		||||
        <link rel="self" href="http://ytdl-org.github.io/youtube-dl/update/releases.atom" />
 | 
			
		||||
        <title>youtube-dl releases</title>
 | 
			
		||||
        <id>https://yt-dl.org/feed/youtube-dl-updates-feed</id>
 | 
			
		||||
        <title>youtube-dlc releases</title>
 | 
			
		||||
        <id>https://yt-dl.org/feed/youtube-dlc-updates-feed</id>
 | 
			
		||||
        <updated>@TIMESTAMP@</updated>
 | 
			
		||||
        @ENTRIES@
 | 
			
		||||
    </feed>""")
 | 
			
		||||
 | 
			
		||||
entry_template = textwrap.dedent("""
 | 
			
		||||
    <entry>
 | 
			
		||||
        <id>https://yt-dl.org/feed/youtube-dl-updates-feed/youtube-dl-@VERSION@</id>
 | 
			
		||||
        <id>https://yt-dl.org/feed/youtube-dlc-updates-feed/youtube-dlc-@VERSION@</id>
 | 
			
		||||
        <title>New version @VERSION@</title>
 | 
			
		||||
        <link href="http://ytdl-org.github.io/youtube-dl" />
 | 
			
		||||
        <link href="http://ytdl-org.github.io/youtube-dlc" />
 | 
			
		||||
        <content type="xhtml">
 | 
			
		||||
            <div xmlns="http://www.w3.org/1999/xhtml">
 | 
			
		||||
                Downloads available at <a href="https://yt-dl.org/downloads/@VERSION@/">https://yt-dl.org/downloads/@VERSION@/</a>
 | 
			
		||||
            </div>
 | 
			
		||||
        </content>
 | 
			
		||||
        <author>
 | 
			
		||||
            <name>The youtube-dl maintainers</name>
 | 
			
		||||
            <name>The youtube-dlc maintainers</name>
 | 
			
		||||
        </author>
 | 
			
		||||
        <updated>@TIMESTAMP@</updated>
 | 
			
		||||
    </entry>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,10 +5,10 @@ import sys
 | 
			
		||||
import os
 | 
			
		||||
import textwrap
 | 
			
		||||
 | 
			
		||||
# We must be able to import youtube_dl
 | 
			
		||||
# We must be able to import youtube_dlc
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
 | 
			
		||||
 | 
			
		||||
import youtube_dl
 | 
			
		||||
import youtube_dlc
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
@@ -16,7 +16,7 @@ def main():
 | 
			
		||||
        template = tmplf.read()
 | 
			
		||||
 | 
			
		||||
    ie_htmls = []
 | 
			
		||||
    for ie in youtube_dl.list_extractors(age_limit=None):
 | 
			
		||||
    for ie in youtube_dlc.list_extractors(age_limit=None):
 | 
			
		||||
        ie_html = '<b>{}</b>'.format(ie.IE_NAME)
 | 
			
		||||
        ie_desc = getattr(ie, 'IE_DESC', None)
 | 
			
		||||
        if ie_desc is False:
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ def main():
 | 
			
		||||
    bug_text = re.search(
 | 
			
		||||
        r'(?s)#\s*BUGS\s*[^\n]*\s*(.*?)#\s*COPYRIGHT', readme).group(1)
 | 
			
		||||
    dev_text = re.search(
 | 
			
		||||
        r'(?s)(#\s*DEVELOPER INSTRUCTIONS.*?)#\s*EMBEDDING YOUTUBE-DL',
 | 
			
		||||
        r'(?s)(#\s*DEVELOPER INSTRUCTIONS.*?)#\s*EMBEDDING youtube-dlc',
 | 
			
		||||
        readme).group(1)
 | 
			
		||||
 | 
			
		||||
    out = bug_text + dev_text
 | 
			
		||||
 
 | 
			
		||||
@@ -16,9 +16,9 @@ def main():
 | 
			
		||||
    with io.open(infile, encoding='utf-8') as inf:
 | 
			
		||||
        issue_template_tmpl = inf.read()
 | 
			
		||||
 | 
			
		||||
    # Get the version from youtube_dl/version.py without importing the package
 | 
			
		||||
    exec(compile(open('youtube_dl/version.py').read(),
 | 
			
		||||
                 'youtube_dl/version.py', 'exec'))
 | 
			
		||||
    # Get the version from youtube_dlc/version.py without importing the package
 | 
			
		||||
    exec(compile(open('youtube_dlc/version.py').read(),
 | 
			
		||||
                 'youtube_dlc/version.py', 'exec'))
 | 
			
		||||
 | 
			
		||||
    out = issue_template_tmpl % {'version': locals()['__version__']}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -14,8 +14,8 @@ lazy_extractors_filename = sys.argv[1]
 | 
			
		||||
if os.path.exists(lazy_extractors_filename):
 | 
			
		||||
    os.remove(lazy_extractors_filename)
 | 
			
		||||
 | 
			
		||||
from youtube_dl.extractor import _ALL_CLASSES
 | 
			
		||||
from youtube_dl.extractor.common import InfoExtractor, SearchInfoExtractor
 | 
			
		||||
from youtube_dlc.extractor import _ALL_CLASSES
 | 
			
		||||
from youtube_dlc.extractor.common import InfoExtractor, SearchInfoExtractor
 | 
			
		||||
 | 
			
		||||
with open('devscripts/lazy_load_template.py', 'rt') as f:
 | 
			
		||||
    module_template = f.read()
 | 
			
		||||
 
 | 
			
		||||
@@ -7,10 +7,10 @@ import os
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Import youtube_dl
 | 
			
		||||
# Import youtube_dlc
 | 
			
		||||
ROOT_DIR = os.path.join(os.path.dirname(__file__), '..')
 | 
			
		||||
sys.path.insert(0, ROOT_DIR)
 | 
			
		||||
import youtube_dl
 | 
			
		||||
import youtube_dlc
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
@@ -33,7 +33,7 @@ def main():
 | 
			
		||||
                ie_md += ' (Currently broken)'
 | 
			
		||||
            yield ie_md
 | 
			
		||||
 | 
			
		||||
    ies = sorted(youtube_dl.gen_extractors(), key=lambda i: i.IE_NAME.lower())
 | 
			
		||||
    ies = sorted(youtube_dlc.gen_extractors(), key=lambda i: i.IE_NAME.lower())
 | 
			
		||||
    out = '# Supported sites\n' + ''.join(
 | 
			
		||||
        ' - ' + md + '\n'
 | 
			
		||||
        for md in gen_ies_md(ies))
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import re
 | 
			
		||||
ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 | 
			
		||||
README_FILE = os.path.join(ROOT_DIR, 'README.md')
 | 
			
		||||
 | 
			
		||||
PREFIX = r'''%YOUTUBE-DL(1)
 | 
			
		||||
PREFIX = r'''%youtube-dlc(1)
 | 
			
		||||
 | 
			
		||||
# NAME
 | 
			
		||||
 | 
			
		||||
@@ -16,7 +16,7 @@ youtube\-dl \- download videos from youtube.com or other video platforms
 | 
			
		||||
 | 
			
		||||
# SYNOPSIS
 | 
			
		||||
 | 
			
		||||
**youtube-dl** \[OPTIONS\] URL [URL...]
 | 
			
		||||
**youtube-dlc** \[OPTIONS\] URL [URL...]
 | 
			
		||||
 | 
			
		||||
'''
 | 
			
		||||
 | 
			
		||||
@@ -33,7 +33,7 @@ def main():
 | 
			
		||||
        readme = f.read()
 | 
			
		||||
 | 
			
		||||
    readme = re.sub(r'(?s)^.*?(?=# DESCRIPTION)', '', readme)
 | 
			
		||||
    readme = re.sub(r'\s+youtube-dl \[OPTIONS\] URL \[URL\.\.\.\]', '', readme)
 | 
			
		||||
    readme = re.sub(r'\s+youtube-dlc \[OPTIONS\] URL \[URL\.\.\.\]', '', readme)
 | 
			
		||||
    readme = PREFIX + readme
 | 
			
		||||
 | 
			
		||||
    readme = filter_options(readme)
 | 
			
		||||
 
 | 
			
		||||
@@ -53,8 +53,8 @@ fi
 | 
			
		||||
 | 
			
		||||
if [ ! -z "`git tag | grep "$version"`" ]; then echo 'ERROR: version already present'; exit 1; fi
 | 
			
		||||
if [ ! -z "`git status --porcelain | grep -v CHANGELOG`" ]; then echo 'ERROR: the working directory is not clean; commit or stash changes'; exit 1; fi
 | 
			
		||||
useless_files=$(find youtube_dl -type f -not -name '*.py')
 | 
			
		||||
if [ ! -z "$useless_files" ]; then echo "ERROR: Non-.py files in youtube_dl: $useless_files"; exit 1; fi
 | 
			
		||||
useless_files=$(find youtube_dlc -type f -not -name '*.py')
 | 
			
		||||
if [ ! -z "$useless_files" ]; then echo "ERROR: Non-.py files in youtube_dlc: $useless_files"; exit 1; fi
 | 
			
		||||
if [ ! -f "updates_key.pem" ]; then echo 'ERROR: updates_key.pem missing'; exit 1; fi
 | 
			
		||||
if ! type pandoc >/dev/null 2>/dev/null; then echo 'ERROR: pandoc is missing'; exit 1; fi
 | 
			
		||||
if ! python3 -c 'import rsa' 2>/dev/null; then echo 'ERROR: python3-rsa is missing'; exit 1; fi
 | 
			
		||||
@@ -68,18 +68,18 @@ make clean
 | 
			
		||||
if $skip_tests ; then
 | 
			
		||||
    echo 'SKIPPING TESTS'
 | 
			
		||||
else
 | 
			
		||||
    nosetests --verbose --with-coverage --cover-package=youtube_dl --cover-html test --stop || exit 1
 | 
			
		||||
    nosetests --verbose --with-coverage --cover-package=youtube_dlc --cover-html test --stop || exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
/bin/echo -e "\n### Changing version in version.py..."
 | 
			
		||||
sed -i "s/__version__ = '.*'/__version__ = '$version'/" youtube_dl/version.py
 | 
			
		||||
sed -i "s/__version__ = '.*'/__version__ = '$version'/" youtube_dlc/version.py
 | 
			
		||||
 | 
			
		||||
/bin/echo -e "\n### Changing version in ChangeLog..."
 | 
			
		||||
sed -i "s/<unreleased>/$version/" ChangeLog
 | 
			
		||||
 | 
			
		||||
/bin/echo -e "\n### Committing documentation, templates and youtube_dl/version.py..."
 | 
			
		||||
/bin/echo -e "\n### Committing documentation, templates and youtube_dlc/version.py..."
 | 
			
		||||
make README.md CONTRIBUTING.md issuetemplates supportedsites
 | 
			
		||||
git add README.md CONTRIBUTING.md .github/ISSUE_TEMPLATE/1_broken_site.md .github/ISSUE_TEMPLATE/2_site_support_request.md .github/ISSUE_TEMPLATE/3_site_feature_request.md .github/ISSUE_TEMPLATE/4_bug_report.md .github/ISSUE_TEMPLATE/5_feature_request.md .github/ISSUE_TEMPLATE/6_question.md docs/supportedsites.md youtube_dl/version.py ChangeLog
 | 
			
		||||
git add README.md CONTRIBUTING.md .github/ISSUE_TEMPLATE/1_broken_site.md .github/ISSUE_TEMPLATE/2_site_support_request.md .github/ISSUE_TEMPLATE/3_site_feature_request.md .github/ISSUE_TEMPLATE/4_bug_report.md .github/ISSUE_TEMPLATE/5_feature_request.md .github/ISSUE_TEMPLATE/6_question.md docs/supportedsites.md youtube_dlc/version.py ChangeLog
 | 
			
		||||
git commit $gpg_sign_commits -m "release $version"
 | 
			
		||||
 | 
			
		||||
/bin/echo -e "\n### Now tagging, signing and pushing..."
 | 
			
		||||
@@ -94,13 +94,13 @@ git push origin "$version"
 | 
			
		||||
 | 
			
		||||
/bin/echo -e "\n### OK, now it is time to build the binaries..."
 | 
			
		||||
REV=$(git rev-parse HEAD)
 | 
			
		||||
make youtube-dl youtube-dl.tar.gz
 | 
			
		||||
make youtube-dlc youtube-dlc.tar.gz
 | 
			
		||||
read -p "VM running? (y/n) " -n 1
 | 
			
		||||
wget "http://$buildserver/build/ytdl-org/youtube-dl/youtube-dl.exe?rev=$REV" -O youtube-dl.exe
 | 
			
		||||
wget "http://$buildserver/build/ytdl-org/youtube-dl/youtube-dlc.exe?rev=$REV" -O youtube-dlc.exe
 | 
			
		||||
mkdir -p "build/$version"
 | 
			
		||||
mv youtube-dl youtube-dl.exe "build/$version"
 | 
			
		||||
mv youtube-dl.tar.gz "build/$version/youtube-dl-$version.tar.gz"
 | 
			
		||||
RELEASE_FILES="youtube-dl youtube-dl.exe youtube-dl-$version.tar.gz"
 | 
			
		||||
mv youtube-dlc youtube-dlc.exe "build/$version"
 | 
			
		||||
mv youtube-dlc.tar.gz "build/$version/youtube-dlc-$version.tar.gz"
 | 
			
		||||
RELEASE_FILES="youtube-dlc youtube-dlc.exe youtube-dlc-$version.tar.gz"
 | 
			
		||||
(cd build/$version/ && md5sum $RELEASE_FILES > MD5SUMS)
 | 
			
		||||
(cd build/$version/ && sha1sum $RELEASE_FILES > SHA1SUMS)
 | 
			
		||||
(cd build/$version/ && sha256sum $RELEASE_FILES > SHA2-256SUMS)
 | 
			
		||||
 
 | 
			
		||||
@@ -9,11 +9,11 @@ import sys
 | 
			
		||||
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from youtube_dl.compat import (
 | 
			
		||||
from youtube_dlc.compat import (
 | 
			
		||||
    compat_print,
 | 
			
		||||
    compat_urllib_request,
 | 
			
		||||
)
 | 
			
		||||
from youtube_dl.utils import format_bytes
 | 
			
		||||
from youtube_dlc.utils import format_bytes
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def format_size(bytes):
 | 
			
		||||
@@ -36,9 +36,9 @@ for page in itertools.count(1):
 | 
			
		||||
            asset_name = asset['name']
 | 
			
		||||
            total_bytes += asset['download_count'] * asset['size']
 | 
			
		||||
            if all(not re.match(p, asset_name) for p in (
 | 
			
		||||
                    r'^youtube-dl$',
 | 
			
		||||
                    r'^youtube-dl-\d{4}\.\d{2}\.\d{2}(?:\.\d+)?\.tar\.gz$',
 | 
			
		||||
                    r'^youtube-dl\.exe$')):
 | 
			
		||||
                    r'^youtube-dlc$',
 | 
			
		||||
                    r'^youtube-dlc-\d{4}\.\d{2}\.\d{2}(?:\.\d+)?\.tar\.gz$',
 | 
			
		||||
                    r'^youtube-dlc\.exe$')):
 | 
			
		||||
                continue
 | 
			
		||||
            compat_print(
 | 
			
		||||
                ' %s size: %s downloads: %d'
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#compdef youtube-dl
 | 
			
		||||
#compdef youtube-dlc
 | 
			
		||||
 | 
			
		||||
__youtube_dl() {
 | 
			
		||||
__youtube_dlc() {
 | 
			
		||||
    local curcontext="$curcontext" fileopts diropts cur prev
 | 
			
		||||
    typeset -A opt_args
 | 
			
		||||
    fileopts="{{fileopts}}"
 | 
			
		||||
@@ -25,4 +25,4 @@ __youtube_dl() {
 | 
			
		||||
    esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__youtube_dl
 | 
			
		||||
__youtube_dlc
 | 
			
		||||
@@ -6,9 +6,9 @@ from os.path import dirname as dirn
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
sys.path.insert(0, dirn(dirn((os.path.abspath(__file__)))))
 | 
			
		||||
import youtube_dl
 | 
			
		||||
import youtube_dlc
 | 
			
		||||
 | 
			
		||||
ZSH_COMPLETION_FILE = "youtube-dl.zsh"
 | 
			
		||||
ZSH_COMPLETION_FILE = "youtube-dlc.zsh"
 | 
			
		||||
ZSH_COMPLETION_TEMPLATE = "devscripts/zsh-completion.in"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -45,5 +45,5 @@ def build_completion(opt_parser):
 | 
			
		||||
        f.write(template)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
parser = youtube_dl.parseOpts()[0]
 | 
			
		||||
parser = youtube_dlc.parseOpts()[0]
 | 
			
		||||
build_completion(parser)
 | 
			
		||||
 
 | 
			
		||||
@@ -85,17 +85,17 @@ qthelp:
 | 
			
		||||
	@echo
 | 
			
		||||
	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
 | 
			
		||||
	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
 | 
			
		||||
	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/youtube-dl.qhcp"
 | 
			
		||||
	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/youtube-dlc.qhcp"
 | 
			
		||||
	@echo "To view the help file:"
 | 
			
		||||
	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/youtube-dl.qhc"
 | 
			
		||||
	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/youtube-dlc.qhc"
 | 
			
		||||
 | 
			
		||||
devhelp:
 | 
			
		||||
	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
 | 
			
		||||
	@echo
 | 
			
		||||
	@echo "Build finished."
 | 
			
		||||
	@echo "To view the help file:"
 | 
			
		||||
	@echo "# mkdir -p $$HOME/.local/share/devhelp/youtube-dl"
 | 
			
		||||
	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/youtube-dl"
 | 
			
		||||
	@echo "# mkdir -p $$HOME/.local/share/devhelp/youtube-dlc"
 | 
			
		||||
	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/youtube-dlc"
 | 
			
		||||
	@echo "# devhelp"
 | 
			
		||||
 | 
			
		||||
epub:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								docs/conf.py
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								docs/conf.py
									
									
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
# coding: utf-8
 | 
			
		||||
#
 | 
			
		||||
# youtube-dl documentation build configuration file, created by
 | 
			
		||||
# youtube-dlc documentation build configuration file, created by
 | 
			
		||||
# sphinx-quickstart on Fri Mar 14 21:05:43 2014.
 | 
			
		||||
#
 | 
			
		||||
# This file is execfile()d with the current directory set to its
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
import os
 | 
			
		||||
# Allows to import youtube_dl
 | 
			
		||||
# Allows to import youtube_dlc
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
# -- General configuration ------------------------------------------------
 | 
			
		||||
@@ -36,7 +36,7 @@ source_suffix = '.rst'
 | 
			
		||||
master_doc = 'index'
 | 
			
		||||
 | 
			
		||||
# General information about the project.
 | 
			
		||||
project = u'youtube-dl'
 | 
			
		||||
project = u'youtube-dlc'
 | 
			
		||||
copyright = u'2014, Ricardo Garcia Gonzalez'
 | 
			
		||||
 | 
			
		||||
# The version info for the project you're documenting, acts as replacement for
 | 
			
		||||
@@ -44,7 +44,7 @@ copyright = u'2014, Ricardo Garcia Gonzalez'
 | 
			
		||||
# built documents.
 | 
			
		||||
#
 | 
			
		||||
# The short X.Y version.
 | 
			
		||||
from youtube_dl.version import __version__
 | 
			
		||||
from youtube_dlc.version import __version__
 | 
			
		||||
version = __version__
 | 
			
		||||
# The full version, including alpha/beta/rc tags.
 | 
			
		||||
release = version
 | 
			
		||||
@@ -68,4 +68,4 @@ html_theme = 'default'
 | 
			
		||||
html_static_path = ['_static']
 | 
			
		||||
 | 
			
		||||
# Output file base name for HTML help builder.
 | 
			
		||||
htmlhelp_basename = 'youtube-dldoc'
 | 
			
		||||
htmlhelp_basename = 'youtube-dlcdoc'
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,13 @@
 | 
			
		||||
Welcome to youtube-dl's documentation!
 | 
			
		||||
Welcome to youtube-dlc's documentation!
 | 
			
		||||
======================================
 | 
			
		||||
 | 
			
		||||
*youtube-dl* is a command-line program to download videos from YouTube.com and more sites.
 | 
			
		||||
*youtube-dlc* is a command-line program to download videos from YouTube.com and more sites.
 | 
			
		||||
It can also be used in Python code.
 | 
			
		||||
 | 
			
		||||
Developer guide
 | 
			
		||||
---------------
 | 
			
		||||
 | 
			
		||||
This section contains information for using *youtube-dl* from Python programs.
 | 
			
		||||
This section contains information for using *youtube-dlc* from Python programs.
 | 
			
		||||
 | 
			
		||||
.. toctree::
 | 
			
		||||
    :maxdepth: 2
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
Using the ``youtube_dl`` module
 | 
			
		||||
Using the ``youtube_dlc`` module
 | 
			
		||||
===============================
 | 
			
		||||
 | 
			
		||||
When using the ``youtube_dl`` module, you start by creating an instance of :class:`YoutubeDL` and adding all the available extractors:
 | 
			
		||||
When using the ``youtube_dlc`` module, you start by creating an instance of :class:`YoutubeDL` and adding all the available extractors:
 | 
			
		||||
 | 
			
		||||
.. code-block:: python
 | 
			
		||||
 | 
			
		||||
    >>> from youtube_dl import YoutubeDL
 | 
			
		||||
    >>> from youtube_dlc import YoutubeDL
 | 
			
		||||
    >>> ydl = YoutubeDL()
 | 
			
		||||
    >>> ydl.add_default_info_extractors()
 | 
			
		||||
 | 
			
		||||
@@ -22,7 +22,7 @@ You use the :meth:`YoutubeDL.extract_info` method for getting the video informat
 | 
			
		||||
    [youtube] BaW_jenozKc: Downloading video info webpage
 | 
			
		||||
    [youtube] BaW_jenozKc: Extracting video information
 | 
			
		||||
    >>> info['title']
 | 
			
		||||
    'youtube-dl test video "\'/\\ä↭𝕐'
 | 
			
		||||
    'youtube-dlc test video "\'/\\ä↭𝕐'
 | 
			
		||||
    >>> info['height'], info['width']
 | 
			
		||||
    (720, 1280)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
pyinstaller.exe youtube_dl\__main__.py --onefile --name youtube-dlc
 | 
			
		||||
pyinstaller.exe youtube_dlc\__main__.py --onefile --name youtube-dlc
 | 
			
		||||
@@ -2,5 +2,5 @@
 | 
			
		||||
universal = True
 | 
			
		||||
 | 
			
		||||
[flake8]
 | 
			
		||||
exclude = youtube_dl/extractor/__init__.py,devscripts/buildserver.py,devscripts/lazy_load_template.py,devscripts/make_issue_template.py,setup.py,build,.git,venv
 | 
			
		||||
exclude = youtube_dlc/extractor/__init__.py,devscripts/buildserver.py,devscripts/lazy_load_template.py,devscripts/make_issue_template.py,setup.py,build,.git,venv
 | 
			
		||||
ignore = E402,E501,E731,E741,W503
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								setup.py
									
									
									
									
									
								
							@@ -7,9 +7,9 @@ import warnings
 | 
			
		||||
import sys
 | 
			
		||||
from distutils.spawn import spawn
 | 
			
		||||
 | 
			
		||||
# Get the version from youtube_dl/version.py without importing the package
 | 
			
		||||
exec(compile(open('youtube_dl/version.py').read(),
 | 
			
		||||
             'youtube_dl/version.py', 'exec'))
 | 
			
		||||
# Get the version from youtube_dlc/version.py without importing the package
 | 
			
		||||
exec(compile(open('youtube_dlc/version.py').read(),
 | 
			
		||||
             'youtube_dlc/version.py', 'exec'))
 | 
			
		||||
 | 
			
		||||
DESCRIPTION = 'Media downloader supporting various sites such as youtube'
 | 
			
		||||
LONG_DESCRIPTION = 'Command-line program to download videos from YouTube.com and other video sites. Based on a more active community fork.'
 | 
			
		||||
@@ -18,10 +18,10 @@ if len(sys.argv) >= 2 and sys.argv[1] == 'py2exe':
 | 
			
		||||
    print("inv")
 | 
			
		||||
else:
 | 
			
		||||
    files_spec = [
 | 
			
		||||
        ('etc/bash_completion.d', ['youtube-dl.bash-completion']),
 | 
			
		||||
        ('etc/fish/completions', ['youtube-dl.fish']),
 | 
			
		||||
        ('share/doc/youtube_dl', ['README.txt']),
 | 
			
		||||
        ('share/man/man1', ['youtube-dl.1'])
 | 
			
		||||
        ('etc/bash_completion.d', ['youtube-dlc.bash-completion']),
 | 
			
		||||
        ('etc/fish/completions', ['youtube-dlc.fish']),
 | 
			
		||||
        ('share/doc/youtube_dlc', ['README.txt']),
 | 
			
		||||
        ('share/man/man1', ['youtube-dlc.1'])
 | 
			
		||||
    ]
 | 
			
		||||
    root = os.path.dirname(os.path.abspath(__file__))
 | 
			
		||||
    data_files = []
 | 
			
		||||
@@ -38,7 +38,7 @@ else:
 | 
			
		||||
        'data_files': data_files,
 | 
			
		||||
    }
 | 
			
		||||
    #if setuptools_available:
 | 
			
		||||
    params['entry_points'] = {'console_scripts': ['youtube-dlc = youtube_dl:main']}
 | 
			
		||||
    params['entry_points'] = {'console_scripts': ['youtube-dlc = youtube_dlc:main']}
 | 
			
		||||
    #else:
 | 
			
		||||
    #    params['scripts'] = ['bin/youtube-dlc']
 | 
			
		||||
 | 
			
		||||
@@ -54,7 +54,7 @@ class build_lazy_extractors(Command):
 | 
			
		||||
 | 
			
		||||
    def run(self):
 | 
			
		||||
        spawn(
 | 
			
		||||
            [sys.executable, 'devscripts/make_lazy_extractors.py', 'youtube_dl/extractor/lazy_extractors.py'],
 | 
			
		||||
            [sys.executable, 'devscripts/make_lazy_extractors.py', 'youtube_dlc/extractor/lazy_extractors.py'],
 | 
			
		||||
            dry_run=self.dry_run,
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
@@ -69,9 +69,9 @@ setup(
 | 
			
		||||
    url="https://github.com/blackjack4494/youtube-dlc",
 | 
			
		||||
    # packages=setuptools.find_packages(),
 | 
			
		||||
	packages=[
 | 
			
		||||
        'youtube_dl',
 | 
			
		||||
        'youtube_dl.extractor', 'youtube_dl.downloader',
 | 
			
		||||
        'youtube_dl.postprocessor'],
 | 
			
		||||
        'youtube_dlc',
 | 
			
		||||
        'youtube_dlc.extractor', 'youtube_dlc.downloader',
 | 
			
		||||
        'youtube_dlc.postprocessor'],
 | 
			
		||||
    classifiers=[
 | 
			
		||||
	    "Topic :: Multimedia :: Video",
 | 
			
		||||
        "Development Status :: 5 - Production/Stable",
 | 
			
		||||
 
 | 
			
		||||
@@ -10,13 +10,13 @@ import types
 | 
			
		||||
import ssl
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
import youtube_dl.extractor
 | 
			
		||||
from youtube_dl import YoutubeDL
 | 
			
		||||
from youtube_dl.compat import (
 | 
			
		||||
import youtube_dlc.extractor
 | 
			
		||||
from youtube_dlc import YoutubeDL
 | 
			
		||||
from youtube_dlc.compat import (
 | 
			
		||||
    compat_os_name,
 | 
			
		||||
    compat_str,
 | 
			
		||||
)
 | 
			
		||||
from youtube_dl.utils import (
 | 
			
		||||
from youtube_dlc.utils import (
 | 
			
		||||
    preferredencoding,
 | 
			
		||||
    write_string,
 | 
			
		||||
)
 | 
			
		||||
@@ -90,7 +90,7 @@ class FakeYDL(YoutubeDL):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def gettestcases(include_onlymatching=False):
 | 
			
		||||
    for ie in youtube_dl.extractor.gen_extractors():
 | 
			
		||||
    for ie in youtube_dlc.extractor.gen_extractors():
 | 
			
		||||
        for tc in ie.get_testcases(include_onlymatching):
 | 
			
		||||
            yield tc
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -10,10 +10,10 @@ import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from test.helper import FakeYDL, expect_dict, expect_value, http_server_port
 | 
			
		||||
from youtube_dl.compat import compat_etree_fromstring, compat_http_server
 | 
			
		||||
from youtube_dl.extractor.common import InfoExtractor
 | 
			
		||||
from youtube_dl.extractor import YoutubeIE, get_info_extractor
 | 
			
		||||
from youtube_dl.utils import encode_data_uri, strip_jsonp, ExtractorError, RegexNotFoundError
 | 
			
		||||
from youtube_dlc.compat import compat_etree_fromstring, compat_http_server
 | 
			
		||||
from youtube_dlc.extractor.common import InfoExtractor
 | 
			
		||||
from youtube_dlc.extractor import YoutubeIE, get_info_extractor
 | 
			
		||||
from youtube_dlc.utils import encode_data_uri, strip_jsonp, ExtractorError, RegexNotFoundError
 | 
			
		||||
import threading
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,12 +12,12 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
import copy
 | 
			
		||||
 | 
			
		||||
from test.helper import FakeYDL, assertRegexpMatches
 | 
			
		||||
from youtube_dl import YoutubeDL
 | 
			
		||||
from youtube_dl.compat import compat_str, compat_urllib_error
 | 
			
		||||
from youtube_dl.extractor import YoutubeIE
 | 
			
		||||
from youtube_dl.extractor.common import InfoExtractor
 | 
			
		||||
from youtube_dl.postprocessor.common import PostProcessor
 | 
			
		||||
from youtube_dl.utils import ExtractorError, match_filter_func
 | 
			
		||||
from youtube_dlc import YoutubeDL
 | 
			
		||||
from youtube_dlc.compat import compat_str, compat_urllib_error
 | 
			
		||||
from youtube_dlc.extractor import YoutubeIE
 | 
			
		||||
from youtube_dlc.extractor.common import InfoExtractor
 | 
			
		||||
from youtube_dlc.postprocessor.common import PostProcessor
 | 
			
		||||
from youtube_dlc.utils import ExtractorError, match_filter_func
 | 
			
		||||
 | 
			
		||||
TEST_URL = 'http://localhost/sample.mp4'
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ import tempfile
 | 
			
		||||
import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from youtube_dl.utils import YoutubeDLCookieJar
 | 
			
		||||
from youtube_dlc.utils import YoutubeDLCookieJar
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestYoutubeDLCookieJar(unittest.TestCase):
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,8 @@ import sys
 | 
			
		||||
import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from youtube_dl.aes import aes_decrypt, aes_encrypt, aes_cbc_decrypt, aes_cbc_encrypt, aes_decrypt_text
 | 
			
		||||
from youtube_dl.utils import bytes_to_intlist, intlist_to_bytes
 | 
			
		||||
from youtube_dlc.aes import aes_decrypt, aes_encrypt, aes_cbc_decrypt, aes_cbc_encrypt, aes_decrypt_text
 | 
			
		||||
from youtube_dlc.utils import bytes_to_intlist, intlist_to_bytes
 | 
			
		||||
import base64
 | 
			
		||||
 | 
			
		||||
# the encrypted data can be generate with 'devscripts/generate_aes_testdata.py'
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
from test.helper import try_rm
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from youtube_dl import YoutubeDL
 | 
			
		||||
from youtube_dlc import YoutubeDL
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _download_restricted(url, filename, age):
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from test.helper import gettestcases
 | 
			
		||||
 | 
			
		||||
from youtube_dl.extractor import (
 | 
			
		||||
from youtube_dlc.extractor import (
 | 
			
		||||
    FacebookIE,
 | 
			
		||||
    gen_extractors,
 | 
			
		||||
    YoutubeIE,
 | 
			
		||||
@@ -70,7 +70,7 @@ class TestAllURLsMatching(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_youtube_search_matching(self):
 | 
			
		||||
        self.assertMatch('http://www.youtube.com/results?search_query=making+mustard', ['youtube:search_url'])
 | 
			
		||||
        self.assertMatch('https://www.youtube.com/results?baz=bar&search_query=youtube-dl+test+video&filters=video&lclk=video', ['youtube:search_url'])
 | 
			
		||||
        self.assertMatch('https://www.youtube.com/results?baz=bar&search_query=youtube-dlc+test+video&filters=video&lclk=video', ['youtube:search_url'])
 | 
			
		||||
 | 
			
		||||
    def test_youtube_extract(self):
 | 
			
		||||
        assertExtractId = lambda url, id: self.assertEqual(YoutubeIE.extract_id(url), id)
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from test.helper import FakeYDL
 | 
			
		||||
from youtube_dl.cache import Cache
 | 
			
		||||
from youtube_dlc.cache import Cache
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _is_empty(d):
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from youtube_dl.compat import (
 | 
			
		||||
from youtube_dlc.compat import (
 | 
			
		||||
    compat_getenv,
 | 
			
		||||
    compat_setenv,
 | 
			
		||||
    compat_etree_Element,
 | 
			
		||||
@@ -28,11 +28,11 @@ from youtube_dl.compat import (
 | 
			
		||||
class TestCompat(unittest.TestCase):
 | 
			
		||||
    def test_compat_getenv(self):
 | 
			
		||||
        test_str = 'тест'
 | 
			
		||||
        compat_setenv('YOUTUBE_DL_COMPAT_GETENV', test_str)
 | 
			
		||||
        self.assertEqual(compat_getenv('YOUTUBE_DL_COMPAT_GETENV'), test_str)
 | 
			
		||||
        compat_setenv('youtube_dlc_COMPAT_GETENV', test_str)
 | 
			
		||||
        self.assertEqual(compat_getenv('youtube_dlc_COMPAT_GETENV'), test_str)
 | 
			
		||||
 | 
			
		||||
    def test_compat_setenv(self):
 | 
			
		||||
        test_var = 'YOUTUBE_DL_COMPAT_SETENV'
 | 
			
		||||
        test_var = 'youtube_dlc_COMPAT_SETENV'
 | 
			
		||||
        test_str = 'тест'
 | 
			
		||||
        compat_setenv(test_var, test_str)
 | 
			
		||||
        compat_getenv(test_var)
 | 
			
		||||
@@ -46,11 +46,11 @@ class TestCompat(unittest.TestCase):
 | 
			
		||||
        compat_setenv('HOME', old_home or '')
 | 
			
		||||
 | 
			
		||||
    def test_all_present(self):
 | 
			
		||||
        import youtube_dl.compat
 | 
			
		||||
        all_names = youtube_dl.compat.__all__
 | 
			
		||||
        import youtube_dlc.compat
 | 
			
		||||
        all_names = youtube_dlc.compat.__all__
 | 
			
		||||
        present_names = set(filter(
 | 
			
		||||
            lambda c: '_' in c and not c.startswith('_'),
 | 
			
		||||
            dir(youtube_dl.compat))) - set(['unicode_literals'])
 | 
			
		||||
            dir(youtube_dlc.compat))) - set(['unicode_literals'])
 | 
			
		||||
        self.assertEqual(all_names, sorted(present_names))
 | 
			
		||||
 | 
			
		||||
    def test_compat_urllib_parse_unquote(self):
 | 
			
		||||
 
 | 
			
		||||
@@ -24,24 +24,24 @@ import io
 | 
			
		||||
import json
 | 
			
		||||
import socket
 | 
			
		||||
 | 
			
		||||
import youtube_dl.YoutubeDL
 | 
			
		||||
from youtube_dl.compat import (
 | 
			
		||||
import youtube_dlc.YoutubeDL
 | 
			
		||||
from youtube_dlc.compat import (
 | 
			
		||||
    compat_http_client,
 | 
			
		||||
    compat_urllib_error,
 | 
			
		||||
    compat_HTTPError,
 | 
			
		||||
)
 | 
			
		||||
from youtube_dl.utils import (
 | 
			
		||||
from youtube_dlc.utils import (
 | 
			
		||||
    DownloadError,
 | 
			
		||||
    ExtractorError,
 | 
			
		||||
    format_bytes,
 | 
			
		||||
    UnavailableVideoError,
 | 
			
		||||
)
 | 
			
		||||
from youtube_dl.extractor import get_info_extractor
 | 
			
		||||
from youtube_dlc.extractor import get_info_extractor
 | 
			
		||||
 | 
			
		||||
RETRIES = 3
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class YoutubeDL(youtube_dl.YoutubeDL):
 | 
			
		||||
class YoutubeDL(youtube_dlc.YoutubeDL):
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
        self.to_stderr = self.to_screen
 | 
			
		||||
        self.processed_info_dicts = []
 | 
			
		||||
@@ -92,7 +92,7 @@ class TestDownload(unittest.TestCase):
 | 
			
		||||
def generator(test_case, tname):
 | 
			
		||||
 | 
			
		||||
    def test_template(self):
 | 
			
		||||
        ie = youtube_dl.extractor.get_info_extractor(test_case['name'])()
 | 
			
		||||
        ie = youtube_dlc.extractor.get_info_extractor(test_case['name'])()
 | 
			
		||||
        other_ies = [get_info_extractor(ie_key)() for ie_key in test_case.get('add_ie', [])]
 | 
			
		||||
        is_playlist = any(k.startswith('playlist') for k in test_case)
 | 
			
		||||
        test_cases = test_case.get(
 | 
			
		||||
 
 | 
			
		||||
@@ -10,10 +10,10 @@ import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from test.helper import http_server_port, try_rm
 | 
			
		||||
from youtube_dl import YoutubeDL
 | 
			
		||||
from youtube_dl.compat import compat_http_server
 | 
			
		||||
from youtube_dl.downloader.http import HttpFD
 | 
			
		||||
from youtube_dl.utils import encodeFilename
 | 
			
		||||
from youtube_dlc import YoutubeDL
 | 
			
		||||
from youtube_dlc.compat import compat_http_server
 | 
			
		||||
from youtube_dlc.downloader.http import HttpFD
 | 
			
		||||
from youtube_dlc.utils import encodeFilename
 | 
			
		||||
import threading
 | 
			
		||||
 | 
			
		||||
TEST_DIR = os.path.dirname(os.path.abspath(__file__))
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ import os
 | 
			
		||||
import subprocess
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from youtube_dl.utils import encodeArgument
 | 
			
		||||
from youtube_dlc.utils import encodeArgument
 | 
			
		||||
 | 
			
		||||
rootDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 | 
			
		||||
 | 
			
		||||
@@ -23,18 +23,18 @@ except AttributeError:
 | 
			
		||||
 | 
			
		||||
class TestExecution(unittest.TestCase):
 | 
			
		||||
    def test_import(self):
 | 
			
		||||
        subprocess.check_call([sys.executable, '-c', 'import youtube_dl'], cwd=rootDir)
 | 
			
		||||
        subprocess.check_call([sys.executable, '-c', 'import youtube_dlc'], cwd=rootDir)
 | 
			
		||||
 | 
			
		||||
    def test_module_exec(self):
 | 
			
		||||
        if sys.version_info >= (2, 7):  # Python 2.6 doesn't support package execution
 | 
			
		||||
            subprocess.check_call([sys.executable, '-m', 'youtube_dl', '--version'], cwd=rootDir, stdout=_DEV_NULL)
 | 
			
		||||
            subprocess.check_call([sys.executable, '-m', 'youtube_dlc', '--version'], cwd=rootDir, stdout=_DEV_NULL)
 | 
			
		||||
 | 
			
		||||
    def test_main_exec(self):
 | 
			
		||||
        subprocess.check_call([sys.executable, 'youtube_dl/__main__.py', '--version'], cwd=rootDir, stdout=_DEV_NULL)
 | 
			
		||||
        subprocess.check_call([sys.executable, 'youtube_dlc/__main__.py', '--version'], cwd=rootDir, stdout=_DEV_NULL)
 | 
			
		||||
 | 
			
		||||
    def test_cmdline_umlauts(self):
 | 
			
		||||
        p = subprocess.Popen(
 | 
			
		||||
            [sys.executable, 'youtube_dl/__main__.py', encodeArgument('ä'), '--version'],
 | 
			
		||||
            [sys.executable, 'youtube_dlc/__main__.py', encodeArgument('ä'), '--version'],
 | 
			
		||||
            cwd=rootDir, stdout=_DEV_NULL, stderr=subprocess.PIPE)
 | 
			
		||||
        _, stderr = p.communicate()
 | 
			
		||||
        self.assertFalse(stderr)
 | 
			
		||||
 
 | 
			
		||||
@@ -9,8 +9,8 @@ import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from test.helper import http_server_port
 | 
			
		||||
from youtube_dl import YoutubeDL
 | 
			
		||||
from youtube_dl.compat import compat_http_server, compat_urllib_request
 | 
			
		||||
from youtube_dlc import YoutubeDL
 | 
			
		||||
from youtube_dlc.compat import compat_http_server, compat_urllib_request
 | 
			
		||||
import ssl
 | 
			
		||||
import threading
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from test.helper import FakeYDL
 | 
			
		||||
from youtube_dl.extractor import IqiyiIE
 | 
			
		||||
from youtube_dlc.extractor import IqiyiIE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class IqiyiIEWithCredentials(IqiyiIE):
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import sys
 | 
			
		||||
import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from youtube_dl.jsinterp import JSInterpreter
 | 
			
		||||
from youtube_dlc.jsinterp import JSInterpreter
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestJSInterpreter(unittest.TestCase):
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from youtube_dl.extractor import (
 | 
			
		||||
from youtube_dlc.extractor import (
 | 
			
		||||
    gen_extractors,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import sys
 | 
			
		||||
import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from youtube_dl.options import _hide_login_info
 | 
			
		||||
from youtube_dlc.options import _hide_login_info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestOptions(unittest.TestCase):
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import sys
 | 
			
		||||
import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from youtube_dl.postprocessor import MetadataFromTitlePP
 | 
			
		||||
from youtube_dlc.postprocessor import MetadataFromTitlePP
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestMetadataFromTitle(unittest.TestCase):
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ from test.helper import (
 | 
			
		||||
    FakeYDL,
 | 
			
		||||
    get_params,
 | 
			
		||||
)
 | 
			
		||||
from youtube_dl.compat import (
 | 
			
		||||
from youtube_dlc.compat import (
 | 
			
		||||
    compat_str,
 | 
			
		||||
    compat_urllib_request,
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
from test.helper import FakeYDL, md5
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from youtube_dl.extractor import (
 | 
			
		||||
from youtube_dlc.extractor import (
 | 
			
		||||
    YoutubeIE,
 | 
			
		||||
    DailymotionIE,
 | 
			
		||||
    TEDIE,
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ import json
 | 
			
		||||
import re
 | 
			
		||||
import subprocess
 | 
			
		||||
 | 
			
		||||
from youtube_dl.swfinterp import SWFInterpreter
 | 
			
		||||
from youtube_dlc.swfinterp import SWFInterpreter
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TEST_DIR = os.path.join(
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import json
 | 
			
		||||
from youtube_dl.update import rsa_verify
 | 
			
		||||
from youtube_dlc.update import rsa_verify
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestUpdate(unittest.TestCase):
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ import io
 | 
			
		||||
import json
 | 
			
		||||
import xml.etree.ElementTree
 | 
			
		||||
 | 
			
		||||
from youtube_dl.utils import (
 | 
			
		||||
from youtube_dlc.utils import (
 | 
			
		||||
    age_restricted,
 | 
			
		||||
    args_to_str,
 | 
			
		||||
    encode_base_n,
 | 
			
		||||
@@ -105,7 +105,7 @@ from youtube_dl.utils import (
 | 
			
		||||
    cli_bool_option,
 | 
			
		||||
    parse_codecs,
 | 
			
		||||
)
 | 
			
		||||
from youtube_dl.compat import (
 | 
			
		||||
from youtube_dlc.compat import (
 | 
			
		||||
    compat_chr,
 | 
			
		||||
    compat_etree_fromstring,
 | 
			
		||||
    compat_getenv,
 | 
			
		||||
@@ -240,12 +240,12 @@ class TestUtil(unittest.TestCase):
 | 
			
		||||
        def env(var):
 | 
			
		||||
            return '%{0}%'.format(var) if sys.platform == 'win32' else '${0}'.format(var)
 | 
			
		||||
 | 
			
		||||
        compat_setenv('YOUTUBE_DL_EXPATH_PATH', 'expanded')
 | 
			
		||||
        self.assertEqual(expand_path(env('YOUTUBE_DL_EXPATH_PATH')), 'expanded')
 | 
			
		||||
        compat_setenv('youtube_dlc_EXPATH_PATH', 'expanded')
 | 
			
		||||
        self.assertEqual(expand_path(env('youtube_dlc_EXPATH_PATH')), 'expanded')
 | 
			
		||||
        self.assertEqual(expand_path(env('HOME')), compat_getenv('HOME'))
 | 
			
		||||
        self.assertEqual(expand_path('~'), compat_getenv('HOME'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            expand_path('~/%s' % env('YOUTUBE_DL_EXPATH_PATH')),
 | 
			
		||||
            expand_path('~/%s' % env('youtube_dlc_EXPATH_PATH')),
 | 
			
		||||
            '%s/expanded' % compat_getenv('HOME'))
 | 
			
		||||
 | 
			
		||||
    def test_prepend_extension(self):
 | 
			
		||||
@@ -1388,8 +1388,8 @@ Line 1
 | 
			
		||||
        self.assertEqual(caesar('ebg', 'acegik', -2), 'abc')
 | 
			
		||||
 | 
			
		||||
    def test_rot47(self):
 | 
			
		||||
        self.assertEqual(rot47('youtube-dl'), r'J@FEF36\5=')
 | 
			
		||||
        self.assertEqual(rot47('YOUTUBE-DL'), r'*~&%&qt\s{')
 | 
			
		||||
        self.assertEqual(rot47('youtube-dlc'), r'J@FEF36\5=')
 | 
			
		||||
        self.assertEqual(rot47('youtube-dlc'), r'*~&%&qt\s{')
 | 
			
		||||
 | 
			
		||||
    def test_urshift(self):
 | 
			
		||||
        self.assertEqual(urshift(3, 1), 1)
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ class TestVerboseOutput(unittest.TestCase):
 | 
			
		||||
    def test_private_info_arg(self):
 | 
			
		||||
        outp = subprocess.Popen(
 | 
			
		||||
            [
 | 
			
		||||
                sys.executable, 'youtube_dl/__main__.py', '-v',
 | 
			
		||||
                sys.executable, 'youtube_dlc/__main__.py', '-v',
 | 
			
		||||
                '--username', 'johnsmith@gmail.com',
 | 
			
		||||
                '--password', 'secret',
 | 
			
		||||
            ], cwd=rootDir, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 | 
			
		||||
@@ -30,7 +30,7 @@ class TestVerboseOutput(unittest.TestCase):
 | 
			
		||||
    def test_private_info_shortarg(self):
 | 
			
		||||
        outp = subprocess.Popen(
 | 
			
		||||
            [
 | 
			
		||||
                sys.executable, 'youtube_dl/__main__.py', '-v',
 | 
			
		||||
                sys.executable, 'youtube_dlc/__main__.py', '-v',
 | 
			
		||||
                '-u', 'johnsmith@gmail.com',
 | 
			
		||||
                '-p', 'secret',
 | 
			
		||||
            ], cwd=rootDir, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 | 
			
		||||
@@ -43,7 +43,7 @@ class TestVerboseOutput(unittest.TestCase):
 | 
			
		||||
    def test_private_info_eq(self):
 | 
			
		||||
        outp = subprocess.Popen(
 | 
			
		||||
            [
 | 
			
		||||
                sys.executable, 'youtube_dl/__main__.py', '-v',
 | 
			
		||||
                sys.executable, 'youtube_dlc/__main__.py', '-v',
 | 
			
		||||
                '--username=johnsmith@gmail.com',
 | 
			
		||||
                '--password=secret',
 | 
			
		||||
            ], cwd=rootDir, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 | 
			
		||||
@@ -56,7 +56,7 @@ class TestVerboseOutput(unittest.TestCase):
 | 
			
		||||
    def test_private_info_shortarg_eq(self):
 | 
			
		||||
        outp = subprocess.Popen(
 | 
			
		||||
            [
 | 
			
		||||
                sys.executable, 'youtube_dl/__main__.py', '-v',
 | 
			
		||||
                sys.executable, 'youtube_dlc/__main__.py', '-v',
 | 
			
		||||
                '-u=johnsmith@gmail.com',
 | 
			
		||||
                '-p=secret',
 | 
			
		||||
            ], cwd=rootDir, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 | 
			
		||||
 
 | 
			
		||||
@@ -15,11 +15,11 @@ import io
 | 
			
		||||
 | 
			
		||||
import xml.etree.ElementTree
 | 
			
		||||
 | 
			
		||||
import youtube_dl.YoutubeDL
 | 
			
		||||
import youtube_dl.extractor
 | 
			
		||||
import youtube_dlc.YoutubeDL
 | 
			
		||||
import youtube_dlc.extractor
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class YoutubeDL(youtube_dl.YoutubeDL):
 | 
			
		||||
class YoutubeDL(youtube_dlc.YoutubeDL):
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
        super(YoutubeDL, self).__init__(*args, **kwargs)
 | 
			
		||||
        self.to_stderr = self.to_screen
 | 
			
		||||
@@ -45,7 +45,7 @@ class TestAnnotations(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_info_json(self):
 | 
			
		||||
        expected = list(EXPECTED_ANNOTATIONS)  # Two annotations could have the same text.
 | 
			
		||||
        ie = youtube_dl.extractor.YoutubeIE()
 | 
			
		||||
        ie = youtube_dlc.extractor.YoutubeIE()
 | 
			
		||||
        ydl = YoutubeDL(params)
 | 
			
		||||
        ydl.add_info_extractor(ie)
 | 
			
		||||
        ydl.download([TEST_ID])
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ import unittest
 | 
			
		||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
 | 
			
		||||
from test.helper import expect_value
 | 
			
		||||
from youtube_dl.extractor import YoutubeIE
 | 
			
		||||
from youtube_dlc.extractor import YoutubeIE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestYoutubeChapters(unittest.TestCase):
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
			
		||||
from test.helper import FakeYDL
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from youtube_dl.extractor import (
 | 
			
		||||
from youtube_dlc.extractor import (
 | 
			
		||||
    YoutubePlaylistIE,
 | 
			
		||||
    YoutubeIE,
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -13,8 +13,8 @@ import re
 | 
			
		||||
import string
 | 
			
		||||
 | 
			
		||||
from test.helper import FakeYDL
 | 
			
		||||
from youtube_dl.extractor import YoutubeIE
 | 
			
		||||
from youtube_dl.compat import compat_str, compat_urlretrieve
 | 
			
		||||
from youtube_dlc.extractor import YoutubeIE
 | 
			
		||||
from youtube_dlc.compat import compat_str, compat_urlretrieve
 | 
			
		||||
 | 
			
		||||
_TESTS = [
 | 
			
		||||
    (
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								tox.ini
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								tox.ini
									
									
									
									
									
								
							@@ -10,5 +10,5 @@ defaultargs = test --exclude test_download.py --exclude test_age_restriction.py
 | 
			
		||||
    --exclude test_subtitles.py --exclude test_write_annotations.py
 | 
			
		||||
    --exclude test_youtube_lists.py --exclude test_iqiyi_sdk_interpreter.py
 | 
			
		||||
    --exclude test_socks.py
 | 
			
		||||
commands = nosetests --verbose {posargs:{[testenv]defaultargs}}  # --with-coverage --cover-package=youtube_dl --cover-html
 | 
			
		||||
commands = nosetests --verbose {posargs:{[testenv]defaultargs}}  # --with-coverage --cover-package=youtube_dlc --cover-html
 | 
			
		||||
                                               # test.test_download:TestDownload.test_NowVideo
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
# This allows the youtube-dl command to be installed in ZSH using antigen.
 | 
			
		||||
# This allows the youtube-dlc command to be installed in ZSH using antigen.
 | 
			
		||||
# Antigen is a bundle manager. It allows you to enhance the functionality of
 | 
			
		||||
# your zsh session by installing bundles and themes easily.
 | 
			
		||||
 | 
			
		||||
@@ -6,11 +6,11 @@
 | 
			
		||||
# http://antigen.sharats.me/
 | 
			
		||||
# https://github.com/zsh-users/antigen
 | 
			
		||||
 | 
			
		||||
# Install youtube-dl:
 | 
			
		||||
# Install youtube-dlc:
 | 
			
		||||
# antigen bundle ytdl-org/youtube-dl
 | 
			
		||||
# Bundles installed by antigen are available for use immediately.
 | 
			
		||||
 | 
			
		||||
# Update youtube-dl (and all other antigen bundles):
 | 
			
		||||
# Update youtube-dlc (and all other antigen bundles):
 | 
			
		||||
# antigen update
 | 
			
		||||
 | 
			
		||||
# The antigen command will download the git repository to a folder and then
 | 
			
		||||
@@ -18,7 +18,7 @@
 | 
			
		||||
# code is documented here:
 | 
			
		||||
# https://github.com/zsh-users/antigen#notes-on-writing-plugins
 | 
			
		||||
 | 
			
		||||
# This specific script just aliases youtube-dl to the python script that this
 | 
			
		||||
# This specific script just aliases youtube-dlc to the python script that this
 | 
			
		||||
# library provides. This requires updating the PYTHONPATH to ensure that the
 | 
			
		||||
# full set of code can be located.
 | 
			
		||||
alias youtube-dl="PYTHONPATH=$(dirname $0) $(dirname $0)/bin/youtube-dl"
 | 
			
		||||
alias youtube-dlc="PYTHONPATH=$(dirname $0) $(dirname $0)/bin/youtube-dlc"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								youtube_dl/YoutubeDL.py → youtube_dlc/YoutubeDL.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										12
									
								
								youtube_dl/YoutubeDL.py → youtube_dlc/YoutubeDL.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -228,7 +228,7 @@ class YoutubeDL(object):
 | 
			
		||||
                       playlist items.
 | 
			
		||||
    postprocessors:    A list of dictionaries, each with an entry
 | 
			
		||||
                       * key:  The name of the postprocessor. See
 | 
			
		||||
                               youtube_dl/postprocessor/__init__.py for a list.
 | 
			
		||||
                               youtube_dlc/postprocessor/__init__.py for a list.
 | 
			
		||||
                       as well as any further keyword arguments for the
 | 
			
		||||
                       postprocessor.
 | 
			
		||||
    progress_hooks:    A list of functions that get called on download
 | 
			
		||||
@@ -264,7 +264,7 @@ class YoutubeDL(object):
 | 
			
		||||
                                           about it, warn otherwise (default)
 | 
			
		||||
    source_address:    Client-side IP address to bind to.
 | 
			
		||||
    call_home:         Boolean, true iff we are allowed to contact the
 | 
			
		||||
                       youtube-dl servers for debugging.
 | 
			
		||||
                       youtube-dlc servers for debugging.
 | 
			
		||||
    sleep_interval:    Number of seconds to sleep before each download when
 | 
			
		||||
                       used alone or a lower bound of a range for randomized
 | 
			
		||||
                       sleep before each download (minimum possible number
 | 
			
		||||
@@ -301,7 +301,7 @@ class YoutubeDL(object):
 | 
			
		||||
                       use downloader suggested by extractor if None.
 | 
			
		||||
 | 
			
		||||
    The following parameters are not used by YoutubeDL itself, they are used by
 | 
			
		||||
    the downloader (see youtube_dl/downloader/common.py):
 | 
			
		||||
    the downloader (see youtube_dlc/downloader/common.py):
 | 
			
		||||
    nopart, updatetime, buffersize, ratelimit, min_filesize, max_filesize, test,
 | 
			
		||||
    noresizebuffer, retries, continuedl, noprogress, consoletitle,
 | 
			
		||||
    xattr_set_filesize, external_downloader_args, hls_use_mpegts,
 | 
			
		||||
@@ -441,7 +441,7 @@ class YoutubeDL(object):
 | 
			
		||||
            if re.match(r'^-[0-9A-Za-z_-]{10}$', a)]
 | 
			
		||||
        if idxs:
 | 
			
		||||
            correct_argv = (
 | 
			
		||||
                ['youtube-dl']
 | 
			
		||||
                ['youtube-dlc']
 | 
			
		||||
                + [a for i, a in enumerate(argv) if i not in idxs]
 | 
			
		||||
                + ['--'] + [argv[i] for i in idxs]
 | 
			
		||||
            )
 | 
			
		||||
@@ -2254,7 +2254,7 @@ class YoutubeDL(object):
 | 
			
		||||
                self.get_encoding()))
 | 
			
		||||
        write_string(encoding_str, encoding=None)
 | 
			
		||||
 | 
			
		||||
        self._write_string('[debug] youtube-dl version ' + __version__ + '\n')
 | 
			
		||||
        self._write_string('[debug] youtube-dlc version ' + __version__ + '\n')
 | 
			
		||||
        if _LAZY_LOADER:
 | 
			
		||||
            self._write_string('[debug] Lazy loading extractors enabled' + '\n')
 | 
			
		||||
        try:
 | 
			
		||||
@@ -2352,7 +2352,7 @@ class YoutubeDL(object):
 | 
			
		||||
        file_handler = compat_urllib_request.FileHandler()
 | 
			
		||||
 | 
			
		||||
        def file_open(*args, **kwargs):
 | 
			
		||||
            raise compat_urllib_error.URLError('file:// scheme is explicitly disabled in youtube-dl for security reasons')
 | 
			
		||||
            raise compat_urllib_error.URLError('file:// scheme is explicitly disabled in youtube-dlc for security reasons')
 | 
			
		||||
        file_handler.file_open = file_open
 | 
			
		||||
 | 
			
		||||
        opener = compat_urllib_request.build_opener(
 | 
			
		||||
@@ -53,7 +53,7 @@ def _real_main(argv=None):
 | 
			
		||||
 | 
			
		||||
    workaround_optparse_bug9161()
 | 
			
		||||
 | 
			
		||||
    setproctitle('youtube-dl')
 | 
			
		||||
    setproctitle('youtube-dlc')
 | 
			
		||||
 | 
			
		||||
    parser, opts, args = parseOpts(argv)
 | 
			
		||||
 | 
			
		||||
@@ -455,7 +455,7 @@ def _real_main(argv=None):
 | 
			
		||||
            ydl.warn_if_short_id(sys.argv[1:] if argv is None else argv)
 | 
			
		||||
            parser.error(
 | 
			
		||||
                'You must provide at least one URL.\n'
 | 
			
		||||
                'Type youtube-dl --help to see a list of all options.')
 | 
			
		||||
                'Type youtube-dlc --help to see a list of all options.')
 | 
			
		||||
 | 
			
		||||
        try:
 | 
			
		||||
            if opts.load_info_filename is not None:
 | 
			
		||||
							
								
								
									
										8
									
								
								youtube_dl/__main__.py → youtube_dlc/__main__.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										8
									
								
								youtube_dl/__main__.py → youtube_dlc/__main__.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -2,8 +2,8 @@
 | 
			
		||||
from __future__ import unicode_literals
 | 
			
		||||
 | 
			
		||||
# Execute with
 | 
			
		||||
# $ python youtube_dl/__main__.py (2.6+)
 | 
			
		||||
# $ python -m youtube_dl          (2.7+)
 | 
			
		||||
# $ python youtube_dlc/__main__.py (2.6+)
 | 
			
		||||
# $ python -m youtube_dlc          (2.7+)
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
@@ -13,7 +13,7 @@ if __package__ is None and not hasattr(sys, 'frozen'):
 | 
			
		||||
    path = os.path.realpath(os.path.abspath(__file__))
 | 
			
		||||
    sys.path.insert(0, os.path.dirname(os.path.dirname(path)))
 | 
			
		||||
 | 
			
		||||
import youtube_dl
 | 
			
		||||
import youtube_dlc
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    youtube_dl.main()
 | 
			
		||||
    youtube_dlc.main()
 | 
			
		||||
@@ -23,7 +23,7 @@ class Cache(object):
 | 
			
		||||
        res = self._ydl.params.get('cachedir')
 | 
			
		||||
        if res is None:
 | 
			
		||||
            cache_root = compat_getenv('XDG_CACHE_HOME', '~/.cache')
 | 
			
		||||
            res = os.path.join(cache_root, 'youtube-dl')
 | 
			
		||||
            res = os.path.join(cache_root, 'youtube-dlc')
 | 
			
		||||
        return expand_path(res)
 | 
			
		||||
 | 
			
		||||
    def _get_cache_fn(self, section, key, dtype):
 | 
			
		||||
@@ -2973,7 +2973,7 @@ else:
 | 
			
		||||
 | 
			
		||||
if platform.python_implementation() == 'PyPy' and sys.pypy_version_info < (5, 4, 0):
 | 
			
		||||
    # PyPy2 prior to version 5.4.0 expects byte strings as Windows function
 | 
			
		||||
    # names, see the original PyPy issue [1] and the youtube-dl one [2].
 | 
			
		||||
    # names, see the original PyPy issue [1] and the youtube-dlc one [2].
 | 
			
		||||
    # 1. https://bitbucket.org/pypy/pypy/issues/2360/windows-ctypescdll-typeerror-function-name
 | 
			
		||||
    # 2. https://github.com/ytdl-org/youtube-dl/pull/4392
 | 
			
		||||
    def compat_ctypes_WINFUNCTYPE(*args, **kwargs):
 | 
			
		||||
@@ -243,7 +243,7 @@ class FileDownloader(object):
 | 
			
		||||
            else:
 | 
			
		||||
                clear_line = ('\r\x1b[K' if sys.stderr.isatty() else '\r')
 | 
			
		||||
            self.to_screen(clear_line + fullmsg, skip_eol=not is_last_line)
 | 
			
		||||
        self.to_console_title('youtube-dl ' + msg)
 | 
			
		||||
        self.to_console_title('youtube-dlc ' + msg)
 | 
			
		||||
 | 
			
		||||
    def report_progress(self, s):
 | 
			
		||||
        if s['status'] == 'finished':
 | 
			
		||||
@@ -32,9 +32,9 @@ class FragmentFD(FileDownloader):
 | 
			
		||||
    keep_fragments:     Keep downloaded fragments on disk after downloading is
 | 
			
		||||
                        finished
 | 
			
		||||
 | 
			
		||||
    For each incomplete fragment download youtube-dl keeps on disk a special
 | 
			
		||||
    For each incomplete fragment download youtube-dlc keeps on disk a special
 | 
			
		||||
    bookkeeping file with download state and metadata (in future such files will
 | 
			
		||||
    be used for any incomplete download handled by youtube-dl). This file is
 | 
			
		||||
    be used for any incomplete download handled by youtube-dlc). This file is
 | 
			
		||||
    used to properly handle resuming, check download file consistency and detect
 | 
			
		||||
    potential errors. The file has a .ytdl extension and represents a standard
 | 
			
		||||
    JSON file of the following format:
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user