summaryrefslogtreecommitdiff
path: root/setup.py
blob: af68b485ef787f217fab474fbadbba2408707dc6 (plain)
    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 )

Generated by cgit