aboutsummaryrefslogtreecommitdiffstats
path: root/setup.py
blob: 87e34f9abc478eab8684a6d6802057daed1f90e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/usr/bin/env python3
# coding: utf-8
import os.path
import warnings
import sys

try:
    from setuptools import setup, Command, find_packages
    setuptools_available = True
except ImportError:
    from distutils.core import setup, Command
    setuptools_available = False
from distutils.spawn import spawn

# Get the version from hypervideo_dl/version.py without importing the package
exec(compile(open('hypervideo_dl/version.py').read(), 'hypervideo_dl/version.py', 'exec'))


DESCRIPTION = 'A youtube-dl fork with additional features and patches'

LONG_DESCRIPTION = '\n\n'.join((
    'Official repository: <https://github.com/hypervideo/hypervideo>',
    '**PS**: Some links in this document will not work since this is a copy of the README.md from Github',
    open('README.md', encoding='utf-8').read()))

REQUIREMENTS = ['mutagen', 'pycryptodome', 'websockets']


if sys.argv[1:2] == ['py2exe']:
    import py2exe  # noqa: F401
    warnings.warn(
        'py2exe builds do not support pycryptodomex and needs VC++14 to run. '
        'The recommended way is to use "pyinst.py" to build using pyinstaller')
    params = {
        'console': [{
            'script': './hypervideo_dl/__main__.py',
            'dest_base': 'hypervideo',
            'version': __version__,
            'description': DESCRIPTION,
            'comments': LONG_DESCRIPTION.split('\n')[0],
            'product_name': 'hypervideo',
            'product_version': __version__,
        }],
        'options': {
            'py2exe': {
                'bundle_files': 0,
                'compressed': 1,
                'optimize': 2,
                'dist_dir': './dist',
                'excludes': ['Crypto', 'Cryptodome'],  # py2exe cannot import Crypto
                'dll_excludes': ['w9xpopen.exe', 'crypt32.dll'],
            }
        },
        'zipfile': None
    }

else:
    files_spec = [
        ('share/bash-completion/completions', ['completions/bash/hypervideo']),
        ('share/zsh/site-functions', ['completions/zsh/_hypervideo']),
        ('share/fish/vendor_completions.d', ['completions/fish/hypervideo.fish']),
        ('share/doc/hypervideo_dl', ['README.txt']),
        ('share/man/man1', ['hypervideo.1'])
    ]
    root = os.path.dirname(os.path.abspath(__file__))
    data_files = []
    for dirname, files in files_spec:
        resfiles = []
        for fn in files:
            if not os.path.exists(fn):
                warnings.warn('Skipping file %s since it is not present. Try running `make pypi-files` first' % fn)
            else:
                resfiles.append(fn)
        data_files.append((dirname, resfiles))

    params = {
        'data_files': data_files,
    }

    if setuptools_available:
        params['entry_points'] = {'console_scripts': ['hypervideo = hypervideo_dl:main']}
    else:
        params['scripts'] = ['hypervideo']


class build_lazy_extractors(Command):
    description = 'Build the extractor lazy loading module'
    user_options = []

    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        spawn([sys.executable, 'devscripts/make_lazy_extractors.py', 'hypervideo_dl/extractor/lazy_extractors.py'],
              dry_run=self.dry_run)


if setuptools_available:
    packages = find_packages(exclude=('youtube_dl', 'youtube_dlc', 'test', 'ytdlp_plugins'))
else:
    packages = ['hypervideo_dl', 'hypervideo_dl.downloader', 'hypervideo_dl.extractor', 'hypervideo_dl.postprocessor']


setup(
    name='hypervideo',
    version=__version__,
    maintainer='Jesús E..',
    maintainer_email='heckyel@hyperbola.info',
    license='CC0-1.0',
    description=DESCRIPTION,
    long_description=LONG_DESCRIPTION,
    long_description_content_type='text/markdown',
    url='https://git.conocimientoslibres.ga/software/hypervideo.git',
    packages=packages,
    install_requires=REQUIREMENTS,
    classifiers=[
        'Topic :: Multimedia :: Video',
        'Development Status :: 5 - Production/Stable',
        'Environment :: Console',
        'Programming Language :: Python',
        'Programming Language :: Python :: 3.6',
        'Programming Language :: Python :: 3.7',
        'Programming Language :: Python :: 3.8',
        'Programming Language :: Python :: 3.9',
        'Programming Language :: Python :: 3.10',
        'Programming Language :: Python :: 3.11',
        'Programming Language :: Python :: Implementation',
        'Programming Language :: Python :: Implementation :: CPython',
        'Programming Language :: Python :: Implementation :: PyPy',
        'License :: Public Domain',
        'Operating System :: OS Independent',
    ],
    python_requires='>=3.6',

    cmdclass={'build_lazy_extractors': build_lazy_extractors},
    **params
)