You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
4.1 KiB
169 lines
4.1 KiB
#!/usr/bin/env python2
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""Youtube-dlg setup file.
|
|
|
|
Note:
|
|
If you get 'TypeError: decoding Unicode is not supported' when you run
|
|
py2exe then apply the following patch:
|
|
|
|
http://sourceforge.net/p/py2exe/patches/28/
|
|
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import shutil
|
|
|
|
PY2EXE = len(sys.argv) >= 2 and sys.argv[1] == 'py2exe'
|
|
|
|
if PY2EXE:
|
|
try:
|
|
import py2exe
|
|
except ImportError as error:
|
|
print error
|
|
sys.exit(1)
|
|
|
|
from distutils.core import setup
|
|
from distutils.sysconfig import get_python_lib
|
|
|
|
from youtube_dl_gui import (
|
|
__author__,
|
|
__appname__,
|
|
__contact__,
|
|
__version__,
|
|
__license__,
|
|
__projecturl__,
|
|
__description__,
|
|
__descriptionfull__
|
|
)
|
|
|
|
|
|
ICONS_SIZES = ('16x16', '32x32', '48x48', '64x64', '128x128', '256x256')
|
|
ICONS_TEMPLATE = 'youtube_dl_gui/icons/youtube-dl-gui_{size}.png'
|
|
|
|
ICONS_LIST = [ICONS_TEMPLATE.format(size=size) for size in ICONS_SIZES]
|
|
|
|
|
|
# Set icons path
|
|
PY2EXE_ICONS = 'icons'
|
|
WINDOWS_ICONS = os.path.join(get_python_lib(), 'youtube_dl_gui', 'icons')
|
|
LINUX_ICONS = '/usr/share/icons/hicolor/'
|
|
|
|
LINUX_FALLBACK_ICONS = '/usr/share/pixmaps/'
|
|
|
|
|
|
# Set localization files path
|
|
LOCALE_PATH = os.path.join('youtube_dl_gui', 'locale')
|
|
|
|
PY2EXE_LOCALE_DIR = 'locale'
|
|
WIN_LOCALE_DIR = os.path.join(get_python_lib(), 'youtube_dl_gui', 'locale')
|
|
LINUX_LOCALE_DIR = '/usr/share/{app_name}/locale/'.format(app_name=__appname__.lower())
|
|
|
|
|
|
def create_scripts():
|
|
if not os.path.exists('build/_scripts/'):
|
|
os.makedirs('build/_scripts')
|
|
|
|
shutil.copyfile('youtube_dl_gui/__main__.py', 'build/_scripts/youtube-dl-gui')
|
|
|
|
|
|
def set_locale_files(data_files):
|
|
for directory in os.listdir(LOCALE_PATH):
|
|
locale_lang = os.path.join(directory, 'LC_MESSAGES')
|
|
|
|
src = os.path.join(LOCALE_PATH, locale_lang, 'youtube_dl_gui.mo')
|
|
|
|
if PY2EXE:
|
|
dst = os.path.join(PY2EXE_LOCALE_DIR, locale_lang)
|
|
elif os.name == 'nt':
|
|
dst = os.path.join(WIN_LOCALE_DIR, locale_lang)
|
|
else:
|
|
dst = os.path.join(LINUX_LOCALE_DIR, locale_lang)
|
|
|
|
data_files.append((dst, [src]))
|
|
|
|
|
|
def py2exe_setup():
|
|
py2exe_dependencies = [
|
|
'C:\\Windows\\System32\\ffmpeg.exe',
|
|
'C:\\Windows\\System32\\ffprobe.exe',
|
|
'C:\\python27\\DLLs\\MSVCP90.dll'
|
|
]
|
|
|
|
py2exe_data_files = [
|
|
('', py2exe_dependencies),
|
|
(PY2EXE_ICONS, ICONS_LIST)
|
|
]
|
|
|
|
set_locale_files(py2exe_data_files)
|
|
|
|
py2exe_options = {
|
|
'includes': ['wx.lib.pubsub.*',
|
|
'wx.lib.pubsub.core.*',
|
|
'wx.lib.pubsub.core.arg1.*']
|
|
}
|
|
|
|
py2exe_windows = {
|
|
'script': 'youtube_dl_gui\\__main__.py',
|
|
'icon_resources': [(0, 'youtube_dl_gui\\icons\\youtube-dl-gui.ico')]
|
|
}
|
|
|
|
params = {
|
|
'data_files': py2exe_data_files,
|
|
'windows': [py2exe_windows],
|
|
'options': {'py2exe': py2exe_options}
|
|
}
|
|
|
|
return params
|
|
|
|
|
|
def normal_setup():
|
|
data_files = list()
|
|
|
|
if os.name == 'nt':
|
|
icons_dir = (WINDOWS_ICONS, ICONS_LIST)
|
|
data_files.append(icons_dir)
|
|
|
|
set_locale_files(data_files)
|
|
|
|
params = {'data_files': data_files}
|
|
else:
|
|
# Create all the hicolor icons
|
|
for index, size in enumerate(ICONS_SIZES):
|
|
icons_dest = os.path.join(LINUX_ICONS, size, 'apps')
|
|
icons_dir = (icons_dest, [ICONS_LIST[index]])
|
|
|
|
data_files.append(icons_dir)
|
|
|
|
# Add the 48x48 icon as fallback
|
|
fallback_icon = (LINUX_FALLBACK_ICONS, [ICONS_LIST[2]])
|
|
data_files.append(fallback_icon)
|
|
|
|
set_locale_files(data_files)
|
|
|
|
create_scripts()
|
|
params = {'data_files': data_files, 'scripts': ['build/_scripts/youtube-dl-gui']}
|
|
|
|
return params
|
|
|
|
|
|
if PY2EXE:
|
|
params = py2exe_setup()
|
|
else:
|
|
params = normal_setup()
|
|
|
|
|
|
setup(
|
|
author = __author__,
|
|
name = __appname__,
|
|
version = __version__,
|
|
license = __license__,
|
|
author_email = __contact__,
|
|
url = __projecturl__,
|
|
description = __description__,
|
|
long_description = __descriptionfull__,
|
|
packages = ['youtube_dl_gui'],
|
|
|
|
**params
|
|
)
|