setup.py (4621B)
1 #!/usr/bin/env python 2 # coding: utf-8 3 4 from __future__ import print_function 5 6 import os.path 7 import warnings 8 import sys 9 10 try: 11 from setuptools import setup, Command 12 setuptools_available = True 13 except ImportError: 14 from distutils.core import setup, Command 15 setuptools_available = False 16 from distutils.spawn import spawn 17 18 try: 19 # This will create an exe that needs Microsoft Visual C++ 2008 20 # Redistributable Package 21 import py2exe 22 except ImportError: 23 if len(sys.argv) >= 2 and sys.argv[1] == 'py2exe': 24 print('Cannot import py2exe', file=sys.stderr) 25 exit(1) 26 27 py2exe_options = { 28 'bundle_files': 1, 29 'compressed': 1, 30 'optimize': 2, 31 'dist_dir': '.', 32 'dll_excludes': ['w9xpopen.exe', 'crypt32.dll'], 33 } 34 35 # Get the version from youtube_dl/version.py without importing the package 36 exec(compile(open('youtube_dl/version.py').read(), 37 'youtube_dl/version.py', 'exec')) 38 39 DESCRIPTION = 'YouTube video downloader' 40 LONG_DESCRIPTION = 'Command-line program to download videos from YouTube.com and other video sites' 41 42 py2exe_console = [{ 43 'script': './youtube_dl/__main__.py', 44 'dest_base': 'youtube-dl', 45 'version': __version__, 46 'description': DESCRIPTION, 47 'comments': LONG_DESCRIPTION, 48 'product_name': 'youtube-dl', 49 'product_version': __version__, 50 }] 51 52 py2exe_params = { 53 'console': py2exe_console, 54 'options': {'py2exe': py2exe_options}, 55 'zipfile': None 56 } 57 58 if len(sys.argv) >= 2 and sys.argv[1] == 'py2exe': 59 params = py2exe_params 60 else: 61 files_spec = [ 62 ('etc/bash_completion.d', ['youtube-dl.bash-completion']), 63 ('etc/fish/completions', ['youtube-dl.fish']), 64 ('share/doc/youtube_dl', ['README.txt']), 65 ('share/man/man1', ['youtube-dl.1']) 66 ] 67 root = os.path.dirname(os.path.abspath(__file__)) 68 data_files = [] 69 for dirname, files in files_spec: 70 resfiles = [] 71 for fn in files: 72 if not os.path.exists(fn): 73 warnings.warn('Skipping file %s since it is not present. Type make to build all automatically generated files.' % fn) 74 else: 75 resfiles.append(fn) 76 data_files.append((dirname, resfiles)) 77 78 params = { 79 'data_files': data_files, 80 } 81 if setuptools_available: 82 params['entry_points'] = {'console_scripts': ['youtube-dl = youtube_dl:main']} 83 else: 84 params['scripts'] = ['bin/youtube-dl'] 85 86 class build_lazy_extractors(Command): 87 description = 'Build the extractor lazy loading module' 88 user_options = [] 89 90 def initialize_options(self): 91 pass 92 93 def finalize_options(self): 94 pass 95 96 def run(self): 97 spawn( 98 [sys.executable, 'devscripts/make_lazy_extractors.py', 'youtube_dl/extractor/lazy_extractors.py'], 99 dry_run=self.dry_run, 100 ) 101 102 setup( 103 name='youtube_dl', 104 version=__version__, 105 description=DESCRIPTION, 106 long_description=LONG_DESCRIPTION, 107 url='https://github.com/ytdl-org/youtube-dl', 108 author='Ricardo Garcia', 109 author_email='ytdl@yt-dl.org', 110 maintainer='Sergey M.', 111 maintainer_email='dstftw@gmail.com', 112 license='Unlicense', 113 packages=[ 114 'youtube_dl', 115 'youtube_dl.extractor', 'youtube_dl.downloader', 116 'youtube_dl.postprocessor'], 117 118 # Provokes warning on most systems (why?!) 119 # test_suite = 'nose.collector', 120 # test_requires = ['nosetest'], 121 122 classifiers=[ 123 'Topic :: Multimedia :: Video', 124 'Development Status :: 5 - Production/Stable', 125 'Environment :: Console', 126 'License :: Public Domain', 127 'Programming Language :: Python', 128 'Programming Language :: Python :: 2', 129 'Programming Language :: Python :: 2.6', 130 'Programming Language :: Python :: 2.7', 131 'Programming Language :: Python :: 3', 132 'Programming Language :: Python :: 3.2', 133 'Programming Language :: Python :: 3.3', 134 'Programming Language :: Python :: 3.4', 135 'Programming Language :: Python :: 3.5', 136 'Programming Language :: Python :: 3.6', 137 'Programming Language :: Python :: 3.7', 138 'Programming Language :: Python :: 3.8', 139 'Programming Language :: Python :: Implementation', 140 'Programming Language :: Python :: Implementation :: CPython', 141 'Programming Language :: Python :: Implementation :: IronPython', 142 'Programming Language :: Python :: Implementation :: Jython', 143 'Programming Language :: Python :: Implementation :: PyPy', 144 ], 145 146 cmdclass={'build_lazy_extractors': build_lazy_extractors}, 147 **params 148 )