mirror of
https://github.com/blackjack4494/yt-dlc.git
synced 2024-12-22 07:43:08 +00:00
update workflow, semi fix integrated updater
This commit is contained in:
parent
b137e533ee
commit
915f2a92ac
7 changed files with 410 additions and 1 deletions
162
.github/workflows/build.yml
vendored
Normal file
162
.github/workflows/build.yml
vendored
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
name: Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- release
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_unix:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
ytdlc_version: ${{ steps.bump_version.outputs.ytdlc_version }}
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
sha2_unix: ${{ steps.sha2_file.outputs.sha2_unix }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '3.x'
|
||||||
|
- name: Install packages
|
||||||
|
run: sudo apt-get -y install zip pandoc man
|
||||||
|
- name: Bump version
|
||||||
|
id: bump_version
|
||||||
|
run: python scripts/update-version-workflow.py
|
||||||
|
- name: Run Make
|
||||||
|
run: make
|
||||||
|
- name: Create Release
|
||||||
|
id: create_release
|
||||||
|
uses: actions/create-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag_name: ${{ github.ref }}
|
||||||
|
release_name: youtube-dlc ${{ steps.dump_version.outputs.ytdlc_version }}
|
||||||
|
body: |
|
||||||
|
Changelog:
|
||||||
|
PLACEHOLDER
|
||||||
|
draft: false
|
||||||
|
prerelease: false
|
||||||
|
- name: Upload youtube-dlc Unix binary
|
||||||
|
id: upload-release-asset
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
asset_path: ./youtube-dlc
|
||||||
|
asset_name: youtube-dlc
|
||||||
|
asset_content_type: application/octet-stream
|
||||||
|
- name: Get SHA2-256SUMS for youtube-dlc
|
||||||
|
id: sha2_file
|
||||||
|
env:
|
||||||
|
SHA2: ${{ hashFiles('youtube-dlc') }}
|
||||||
|
run: echo "::set-output name=sha2_unix::${env:SHA2}"
|
||||||
|
|
||||||
|
build_windows:
|
||||||
|
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
needs: build_unix
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '3.x'
|
||||||
|
- name: Install Requirements
|
||||||
|
run: pip install pyinstaller
|
||||||
|
- name: Bump version
|
||||||
|
run: python scripts/update-version-workflow.py
|
||||||
|
- name: Run PyInstaller Script
|
||||||
|
run: python pyinst.py
|
||||||
|
- name: Upload youtube-dlc.exe Windows binary
|
||||||
|
id: upload-release-windows
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ needs.build_unix.outputs.upload_url }}
|
||||||
|
asset_path: ./dist/youtube-dlc.exe
|
||||||
|
asset_name: youtube-dlc.exe
|
||||||
|
asset_content_type: application/octet-stream
|
||||||
|
- name: Get SHA2-256SUMS for youtube-dlc.exe
|
||||||
|
id: sha2_file_win
|
||||||
|
env:
|
||||||
|
SHA2: ${{ hashFiles('dist/youtube-dlc.exe') }}
|
||||||
|
run: echo "::set-output name=sha2_windows::${env:SHA2}"
|
||||||
|
|
||||||
|
build_windows32:
|
||||||
|
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
needs: build_unix
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up Python 3.4.2 32-Bit
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '3.4.2'
|
||||||
|
architecture: 'x86'
|
||||||
|
- name: Install Requirements for 32 Bit
|
||||||
|
run: pip install pyinstaller==3.5
|
||||||
|
- name: Bump version
|
||||||
|
run: python scripts/update-version-workflow.py
|
||||||
|
- name: Run PyInstaller Script for 32 Bit
|
||||||
|
run: python pyinst32.py
|
||||||
|
- name: Upload Executable youtube-dlc_x86.exe
|
||||||
|
id: upload-release-windows32
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ needs.build_unix.outputs.upload_url }}
|
||||||
|
asset_path: ./dist/youtube-dlc_x86.exe
|
||||||
|
asset_name: youtube-dlc_x86.exe
|
||||||
|
asset_content_type: application/octet-stream
|
||||||
|
- name: Get SHA2-256SUMS for youtube-dlc_x86.exe
|
||||||
|
id: sha2_file_win32
|
||||||
|
env:
|
||||||
|
SHA2: ${{ hashFiles('dist/youtube-dlc_x86.exe') }}
|
||||||
|
run: echo "::set-output name=sha2_windows32::${env:SHA2}"
|
||||||
|
- name: Make SHA2-256SUMS file
|
||||||
|
env:
|
||||||
|
SHA2_WINDOWS: ${{ needs.build_windows.outputs.sha2_windows }}
|
||||||
|
SHA2_WINDOWS32: ${{ steps.sha2_file_win32.outputs.sha2_windows32 }}
|
||||||
|
SHA2_UNIX: ${{ needs.build_unix.outputs.sha2_unix }}
|
||||||
|
YTDLC_VERSION: ${{ needs.build_unix.outputs.ytdlc_version }}
|
||||||
|
run: |
|
||||||
|
echo "$SHA2_WINDOWS youtube-dlc.exe" > SHA2-256SUMS
|
||||||
|
echo "$SHA2_WINDOWS32 youtube-dlc32.exe" > SHA2-256SUMS
|
||||||
|
echo "$SHA2_UNIX youtube-dlc" >> SHA2-256SUMS
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '3.x'
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install setuptools wheel twine
|
||||||
|
- name: Bump version
|
||||||
|
run: python scripts/update-version-workflow.py
|
||||||
|
- name: Build and publish
|
||||||
|
env:
|
||||||
|
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
|
||||||
|
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
|
||||||
|
run: |
|
||||||
|
rm -rf dist/*
|
||||||
|
python setup.py sdist bdist_wheel
|
||||||
|
twine upload dist/*
|
89
pyinst.py
Normal file
89
pyinst.py
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
from PyInstaller.utils.win32.versioninfo import (
|
||||||
|
VarStruct, VarFileInfo, StringStruct, StringTable,
|
||||||
|
StringFileInfo, FixedFileInfo, VSVersionInfo, SetVersion,
|
||||||
|
)
|
||||||
|
import PyInstaller.__main__
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
FILE_DESCRIPTION = 'Media Downloader'
|
||||||
|
|
||||||
|
exec(compile(open('youtube_dlc/version.py').read(), 'youtube_dlc/version.py', 'exec'))
|
||||||
|
|
||||||
|
_LATEST_VERSION = locals()['__version__']
|
||||||
|
|
||||||
|
_OLD_VERSION = _LATEST_VERSION.rsplit("-", 1)
|
||||||
|
|
||||||
|
if len(_OLD_VERSION) > 0:
|
||||||
|
old_ver = _OLD_VERSION[0]
|
||||||
|
|
||||||
|
old_rev = ''
|
||||||
|
if len(_OLD_VERSION) > 1:
|
||||||
|
old_rev = _OLD_VERSION[1]
|
||||||
|
|
||||||
|
ver = f'{datetime.today():%Y.%m.%d}'
|
||||||
|
rev = ''
|
||||||
|
|
||||||
|
if old_ver == ver:
|
||||||
|
if old_rev:
|
||||||
|
rev = int(old_rev) + 1
|
||||||
|
else:
|
||||||
|
rev = 1
|
||||||
|
|
||||||
|
_SEPARATOR = '-'
|
||||||
|
|
||||||
|
version = _SEPARATOR.join(filter(None, [ver, str(rev)]))
|
||||||
|
|
||||||
|
print(version)
|
||||||
|
|
||||||
|
version_list = ver.split(".")
|
||||||
|
_year, _month, _day = [int(value) for value in version_list]
|
||||||
|
_rev = 0
|
||||||
|
if rev:
|
||||||
|
_rev = rev
|
||||||
|
_ver_tuple = _year, _month, _day, _rev
|
||||||
|
|
||||||
|
version_file = VSVersionInfo(
|
||||||
|
ffi=FixedFileInfo(
|
||||||
|
filevers=_ver_tuple,
|
||||||
|
prodvers=_ver_tuple,
|
||||||
|
mask=0x3F,
|
||||||
|
flags=0x0,
|
||||||
|
OS=0x4,
|
||||||
|
fileType=0x1,
|
||||||
|
subtype=0x0,
|
||||||
|
date=(0, 0),
|
||||||
|
),
|
||||||
|
kids=[
|
||||||
|
StringFileInfo(
|
||||||
|
[
|
||||||
|
StringTable(
|
||||||
|
"040904B0",
|
||||||
|
[
|
||||||
|
StringStruct("Comments", "Youtube-dlc Command Line Interface."),
|
||||||
|
StringStruct("CompanyName", "theidel@uni-bremen.de"),
|
||||||
|
StringStruct("FileDescription", FILE_DESCRIPTION),
|
||||||
|
StringStruct("FileVersion", version),
|
||||||
|
StringStruct("InternalName", "youtube-dlc"),
|
||||||
|
StringStruct(
|
||||||
|
"LegalCopyright",
|
||||||
|
"theidel@uni-bremen.de | UNLICENSE",
|
||||||
|
),
|
||||||
|
StringStruct("OriginalFilename", "youtube-dlc.exe"),
|
||||||
|
StringStruct("ProductName", "Youtube-dlc"),
|
||||||
|
StringStruct("ProductVersion", version + " | git.io/JUGsM"),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
]
|
||||||
|
),
|
||||||
|
VarFileInfo([VarStruct("Translation", [0, 1200])])
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
PyInstaller.__main__.run([
|
||||||
|
'--name=youtube-dlc',
|
||||||
|
'--onefile',
|
||||||
|
'--icon=win/icon/cloud.ico',
|
||||||
|
'youtube_dlc/__main__.py',
|
||||||
|
])
|
||||||
|
SetVersion('dist/youtube-dlc.exe', version_file)
|
89
pyinst32.py
Normal file
89
pyinst32.py
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
from PyInstaller.utils.win32.versioninfo import (
|
||||||
|
VarStruct, VarFileInfo, StringStruct, StringTable,
|
||||||
|
StringFileInfo, FixedFileInfo, VSVersionInfo, SetVersion,
|
||||||
|
)
|
||||||
|
import PyInstaller.__main__
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
FILE_DESCRIPTION = 'Media Downloader 32 Bit Version'
|
||||||
|
|
||||||
|
exec(compile(open('youtube_dlc/version.py').read(), 'youtube_dlc/version.py', 'exec'))
|
||||||
|
|
||||||
|
_LATEST_VERSION = locals()['__version__']
|
||||||
|
|
||||||
|
_OLD_VERSION = _LATEST_VERSION.rsplit("-", 1)
|
||||||
|
|
||||||
|
if len(_OLD_VERSION) > 0:
|
||||||
|
old_ver = _OLD_VERSION[0]
|
||||||
|
|
||||||
|
old_rev = ''
|
||||||
|
if len(_OLD_VERSION) > 1:
|
||||||
|
old_rev = _OLD_VERSION[1]
|
||||||
|
|
||||||
|
ver = f'{datetime.today():%Y.%m.%d}'
|
||||||
|
rev = ''
|
||||||
|
|
||||||
|
if old_ver == ver:
|
||||||
|
if old_rev:
|
||||||
|
rev = int(old_rev) + 1
|
||||||
|
else:
|
||||||
|
rev = 1
|
||||||
|
|
||||||
|
_SEPARATOR = '-'
|
||||||
|
|
||||||
|
version = _SEPARATOR.join(filter(None, [ver, str(rev)]))
|
||||||
|
|
||||||
|
print(version)
|
||||||
|
|
||||||
|
version_list = ver.split(".")
|
||||||
|
_year, _month, _day = [int(value) for value in version_list]
|
||||||
|
_rev = 0
|
||||||
|
if rev:
|
||||||
|
_rev = rev
|
||||||
|
_ver_tuple = _year, _month, _day, _rev
|
||||||
|
|
||||||
|
version_file = VSVersionInfo(
|
||||||
|
ffi=FixedFileInfo(
|
||||||
|
filevers=_ver_tuple,
|
||||||
|
prodvers=_ver_tuple,
|
||||||
|
mask=0x3F,
|
||||||
|
flags=0x0,
|
||||||
|
OS=0x4,
|
||||||
|
fileType=0x1,
|
||||||
|
subtype=0x0,
|
||||||
|
date=(0, 0),
|
||||||
|
),
|
||||||
|
kids=[
|
||||||
|
StringFileInfo(
|
||||||
|
[
|
||||||
|
StringTable(
|
||||||
|
"040904B0",
|
||||||
|
[
|
||||||
|
StringStruct("Comments", "Youtube-dlc_x86 Command Line Interface."),
|
||||||
|
StringStruct("CompanyName", "theidel@uni-bremen.de"),
|
||||||
|
StringStruct("FileDescription", FILE_DESCRIPTION),
|
||||||
|
StringStruct("FileVersion", version),
|
||||||
|
StringStruct("InternalName", "youtube-dlc_x86"),
|
||||||
|
StringStruct(
|
||||||
|
"LegalCopyright",
|
||||||
|
"theidel@uni-bremen.de | UNLICENSE",
|
||||||
|
),
|
||||||
|
StringStruct("OriginalFilename", "youtube-dlc_x86.exe"),
|
||||||
|
StringStruct("ProductName", "Youtube-dlc_x86"),
|
||||||
|
StringStruct("ProductVersion", version + "_x86 | git.io/JUGsM"),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
]
|
||||||
|
),
|
||||||
|
VarFileInfo([VarStruct("Translation", [0, 1200])])
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
PyInstaller.__main__.run([
|
||||||
|
'--name=youtube-dlc_x86',
|
||||||
|
'--onefile',
|
||||||
|
'--icon=win/icon/cloud.ico',
|
||||||
|
'youtube_dlc/__main__.py',
|
||||||
|
])
|
||||||
|
SetVersion('dist/youtube-dlc_x86.exe', version_file)
|
41
scripts/update-version-workflow.py
Normal file
41
scripts/update-version-workflow.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
from datetime import datetime
|
||||||
|
# import urllib.request
|
||||||
|
|
||||||
|
# response = urllib.request.urlopen('https://blackjack4494.github.io/youtube-dlc/update/LATEST_VERSION')
|
||||||
|
# _LATEST_VERSION = response.read().decode('utf-8')
|
||||||
|
|
||||||
|
exec(compile(open('youtube_dlc/version.py').read(), 'youtube_dlc/version.py', 'exec'))
|
||||||
|
|
||||||
|
_LATEST_VERSION = locals()['__version__']
|
||||||
|
|
||||||
|
_OLD_VERSION = _LATEST_VERSION.rsplit("-", 1)
|
||||||
|
|
||||||
|
if len(_OLD_VERSION) > 0:
|
||||||
|
old_ver = _OLD_VERSION[0]
|
||||||
|
|
||||||
|
old_rev = ''
|
||||||
|
if len(_OLD_VERSION) > 1:
|
||||||
|
old_rev = _OLD_VERSION[1]
|
||||||
|
|
||||||
|
ver = f'{datetime.today():%Y.%m.%d}'
|
||||||
|
rev = ''
|
||||||
|
|
||||||
|
if old_ver == ver:
|
||||||
|
if old_rev:
|
||||||
|
rev = int(old_rev) + 1
|
||||||
|
else:
|
||||||
|
rev = 1
|
||||||
|
|
||||||
|
_SEPARATOR = '-'
|
||||||
|
|
||||||
|
version = _SEPARATOR.join(filter(None, [ver, str(rev)]))
|
||||||
|
|
||||||
|
print('::set-output name=ydlc_version::' + version)
|
||||||
|
|
||||||
|
file_version_py = open('youtube_dlc/version.py', 'rt')
|
||||||
|
data = file_version_py.read()
|
||||||
|
data = data.replace(locals()['__version__'], version)
|
||||||
|
file_version_py.close()
|
||||||
|
file_version_py = open('youtube_dlc/version.py', 'wt')
|
||||||
|
file_version_py.write(data)
|
||||||
|
file_version_py.close()
|
28
scripts/update-version.py
Normal file
28
scripts/update-version.py
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
from datetime import datetime
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
|
response = urllib.request.urlopen('https://blackjack4494.github.io/youtube-dlc/update/LATEST_VERSION')
|
||||||
|
|
||||||
|
_LATEST_VERSION = response.read().decode('utf-8')
|
||||||
|
|
||||||
|
_OLD_VERSION = _LATEST_VERSION.rsplit("-", 1)
|
||||||
|
|
||||||
|
if len(_OLD_VERSION) > 0:
|
||||||
|
old_ver = _OLD_VERSION[0]
|
||||||
|
|
||||||
|
old_rev = ''
|
||||||
|
if len(_OLD_VERSION) > 1:
|
||||||
|
old_rev = _OLD_VERSION[1]
|
||||||
|
|
||||||
|
ver = f'{datetime.today():%Y.%m.%d}'
|
||||||
|
rev = ''
|
||||||
|
|
||||||
|
if old_ver == ver:
|
||||||
|
if old_rev:
|
||||||
|
rev = int(old_rev) + 1
|
||||||
|
else:
|
||||||
|
rev = 1
|
||||||
|
|
||||||
|
_SEPARATOR = '-'
|
||||||
|
|
||||||
|
version = _SEPARATOR.join(filter(None, [ver, str(rev)]))
|
|
@ -32,7 +32,7 @@ def rsa_verify(message, signature, key):
|
||||||
def update_self(to_screen, verbose, opener):
|
def update_self(to_screen, verbose, opener):
|
||||||
"""Update the program file with the latest version from the repository"""
|
"""Update the program file with the latest version from the repository"""
|
||||||
|
|
||||||
UPDATE_URL = 'https://yt-dl.org/update/'
|
UPDATE_URL = 'https://blackjack4494.github.io//update/'
|
||||||
VERSION_URL = UPDATE_URL + 'LATEST_VERSION'
|
VERSION_URL = UPDATE_URL + 'LATEST_VERSION'
|
||||||
JSON_URL = UPDATE_URL + 'versions.json'
|
JSON_URL = UPDATE_URL + 'versions.json'
|
||||||
UPDATES_RSA_KEY = (0x9d60ee4d8f805312fdb15a62f87b95bd66177b91df176765d13514a0f1754bcd2057295c5b6f1d35daa6742c3ffc9a82d3e118861c207995a8031e151d863c9927e304576bc80692bc8e094896fcf11b66f3e29e04e3a71e9a11558558acea1840aec37fc396fb6b65dc81a1c4144e03bd1c011de62e3f1357b327d08426fe93, 65537)
|
UPDATES_RSA_KEY = (0x9d60ee4d8f805312fdb15a62f87b95bd66177b91df176765d13514a0f1754bcd2057295c5b6f1d35daa6742c3ffc9a82d3e118861c207995a8031e151d863c9927e304576bc80692bc8e094896fcf11b66f3e29e04e3a71e9a11558558acea1840aec37fc396fb6b65dc81a1c4144e03bd1c011de62e3f1357b327d08426fe93, 65537)
|
||||||
|
|
Loading…
Reference in a new issue