scripts: add more asset configs
This commit is contained in:
parent
55babd1dbf
commit
1dc3dbaf8d
14
.idea/inspectionProfiles/Project_Default.xml
Normal file
14
.idea/inspectionProfiles/Project_Default.xml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="ignoredPackages">
|
||||||
|
<value>
|
||||||
|
<list size="1">
|
||||||
|
<item index="0" class="java.lang.String" itemvalue="scikit-image" />
|
||||||
|
</list>
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
</profile>
|
||||||
|
</component>
|
6
.idea/jsLibraryMappings.xml
Normal file
6
.idea/jsLibraryMappings.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="JavaScriptLibraryMappings">
|
||||||
|
<excludedPredefinedLibrary name="actaeon/server/node_modules" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -18,9 +18,14 @@ def run(event, func, args):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('--config', help='asset config', default='assets.yaml')
|
parser.add_argument('--config', help='asset config (default=assets.yaml)', default='assets.yaml')
|
||||||
parser.add_argument('--processes', type=int, default=cpu_count(), help='number of processes to use')
|
parser.add_argument('--processes', type=int, default=cpu_count(), help=f'number of processes to use (default={cpu_count()})')
|
||||||
parser.add_argument('--out-dir', '--output', help='output directory', default='../public/assets')
|
parser.add_argument('--out-dir', '--output-dir', '--output', '-o', help='output directory (default=../public/assets)', default='../public/assets')
|
||||||
|
parser.add_argument('--no-overwrite', '-n', help='don\'t overwrite exising files', action='store_true')
|
||||||
|
parser.add_argument('--no-music', help='don\'t process music files', action='store_true')
|
||||||
|
parser.add_argument('--no-audio', help='don\'t process other audio files', action='store_true')
|
||||||
|
parser.add_argument('--no-jackets', help='don\'t process jacket images', action='store_true')
|
||||||
|
parser.add_argument('--no-images', help='don\'t process other images', action='store_true')
|
||||||
subparsers = parser.add_subparsers(dest='game', help='game extracter to use', required=True)
|
subparsers = parser.add_subparsers(dest='game', help='game extracter to use', required=True)
|
||||||
extracters = get_extracters()
|
extracters = get_extracters()
|
||||||
for name, extracter in extracters.items():
|
for name, extracter in extracters.items():
|
||||||
|
32
scripts/assets.fast.yaml
Normal file
32
scripts/assets.fast.yaml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# produces decent quality files faster, at the expense of larger file sizes
|
||||||
|
|
||||||
|
# path to ffmpeg if it is not on the path
|
||||||
|
ffmpeg_path: 'ffmpeg'
|
||||||
|
# path to vgmstream if it is not on the path
|
||||||
|
# required for some audio conversions
|
||||||
|
# https://github.com/vgmstream/vgmstream
|
||||||
|
vgmstream_path: 'vgmstream-cli'
|
||||||
|
|
||||||
|
# options for music
|
||||||
|
music:
|
||||||
|
enable: true
|
||||||
|
extension: .opus
|
||||||
|
ffmpeg_args: ['-b:a', '64k']
|
||||||
|
|
||||||
|
# options for music jacket images
|
||||||
|
jackets:
|
||||||
|
enable: true
|
||||||
|
extension: .webp
|
||||||
|
ffmpeg_args: []
|
||||||
|
|
||||||
|
# options for other images
|
||||||
|
images:
|
||||||
|
enable: true
|
||||||
|
extension: .webp
|
||||||
|
ffmpeg_args: ['-preset', 'drawing']
|
||||||
|
|
||||||
|
# options for other audio
|
||||||
|
audio:
|
||||||
|
enable: true
|
||||||
|
extension: .opus
|
||||||
|
ffmpeg_args: [ '-b:a', '64k' ]
|
32
scripts/assets.faster.yaml
Normal file
32
scripts/assets.faster.yaml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# produces decent quality files much faster, at the expense of greatly increased file sizes
|
||||||
|
|
||||||
|
# path to ffmpeg if it is not on the path
|
||||||
|
ffmpeg_path: 'ffmpeg'
|
||||||
|
# path to vgmstream if it is not on the path
|
||||||
|
# required for some audio conversions
|
||||||
|
# https://github.com/vgmstream/vgmstream
|
||||||
|
vgmstream_path: 'vgmstream-cli'
|
||||||
|
|
||||||
|
# options for music
|
||||||
|
music:
|
||||||
|
enable: true
|
||||||
|
extension: .opus
|
||||||
|
ffmpeg_args: ['-b:a', '64k']
|
||||||
|
|
||||||
|
# options for music jacket images
|
||||||
|
jackets:
|
||||||
|
enable: true
|
||||||
|
extension: .png
|
||||||
|
ffmpeg_args: []
|
||||||
|
|
||||||
|
# options for other images
|
||||||
|
images:
|
||||||
|
enable: true
|
||||||
|
extension: .png
|
||||||
|
ffmpeg_args: []
|
||||||
|
|
||||||
|
# options for other audio
|
||||||
|
audio:
|
||||||
|
enable: true
|
||||||
|
extension: .opus
|
||||||
|
ffmpeg_args: [ '-b:a', '64k' ]
|
32
scripts/assets.lossless.yaml
Normal file
32
scripts/assets.lossless.yaml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# produces lossless files
|
||||||
|
|
||||||
|
# path to ffmpeg if it is not on the path
|
||||||
|
ffmpeg_path: 'ffmpeg'
|
||||||
|
# path to vgmstream if it is not on the path
|
||||||
|
# required for some audio conversions
|
||||||
|
# https://github.com/vgmstream/vgmstream
|
||||||
|
vgmstream_path: 'vgmstream-cli'
|
||||||
|
|
||||||
|
# options for music
|
||||||
|
music:
|
||||||
|
enable: true
|
||||||
|
extension: .flac
|
||||||
|
ffmpeg_args: []
|
||||||
|
|
||||||
|
# options for music jacket images
|
||||||
|
jackets:
|
||||||
|
enable: true
|
||||||
|
extension: .webp
|
||||||
|
ffmpeg_args: ['-lossless', '1']
|
||||||
|
|
||||||
|
# options for other images
|
||||||
|
images:
|
||||||
|
enable: true
|
||||||
|
extension: .webp
|
||||||
|
ffmpeg_args: ['-lossless', '1']
|
||||||
|
|
||||||
|
# options for other audio
|
||||||
|
audio:
|
||||||
|
enable: true
|
||||||
|
extension: .flac
|
||||||
|
ffmpeg_args: []
|
@ -1,3 +1,5 @@
|
|||||||
|
# produces small-sized, decent quality files at the expense of long encoding times
|
||||||
|
|
||||||
# path to ffmpeg if it is not on the path
|
# path to ffmpeg if it is not on the path
|
||||||
ffmpeg_path: 'ffmpeg'
|
ffmpeg_path: 'ffmpeg'
|
||||||
# path to vgmstream if it is not on the path
|
# path to vgmstream if it is not on the path
|
||||||
@ -14,13 +16,14 @@ music:
|
|||||||
# options for music jacket images
|
# options for music jacket images
|
||||||
jackets:
|
jackets:
|
||||||
enable: true
|
enable: true
|
||||||
extension: .webp
|
extension: .avif
|
||||||
|
ffmpeg_args: ['-c:v', 'libaom-av1', '-still-picture', '1', '-cpu-used', '2', '-pix_fmt:0', 'yuv420p']
|
||||||
|
|
||||||
# options for other images
|
# options for other images
|
||||||
images:
|
images:
|
||||||
enable: true
|
enable: true
|
||||||
extension: .webp
|
extension: .avif
|
||||||
ffmpeg_args: ['-preset', 'drawing']
|
ffmpeg_args: ['-map', '0', '-map', '0', '-filter:v:1', 'alphaextract', '-c:v', 'libaom-av1', '-still-picture', '1', '-cpu-used', '2', '-pix_fmt:0', 'yuv420p']
|
||||||
|
|
||||||
# options for other audio
|
# options for other audio
|
||||||
audio:
|
audio:
|
||||||
|
@ -13,7 +13,7 @@ from collections import defaultdict
|
|||||||
|
|
||||||
|
|
||||||
class Extracter:
|
class Extracter:
|
||||||
def __init__(self, *, config, out_dir, **kwargs):
|
def __init__(self, *, config, out_dir, no_overwrite, no_music, no_audio, no_jackets, no_images, **kwargs):
|
||||||
with open(config, 'r') as f:
|
with open(config, 'r') as f:
|
||||||
self.config = yaml.safe_load(f)
|
self.config = yaml.safe_load(f)
|
||||||
self.music_enabled = self.config['music']['enable']
|
self.music_enabled = self.config['music']['enable']
|
||||||
@ -22,6 +22,11 @@ class Extracter:
|
|||||||
self.audio_enabled = self.config['audio']['enable']
|
self.audio_enabled = self.config['audio']['enable']
|
||||||
self.out_dir = Path(out_dir)
|
self.out_dir = Path(out_dir)
|
||||||
self.tmp_dir = self.out_dir / 'tmp'
|
self.tmp_dir = self.out_dir / 'tmp'
|
||||||
|
self.no_overwrite = no_overwrite
|
||||||
|
self.no_music = no_music
|
||||||
|
self.no_audio = no_audio
|
||||||
|
self.no_jackets = no_jackets
|
||||||
|
self.no_images = no_images
|
||||||
|
|
||||||
def get_tmp(self, ext='.dat'):
|
def get_tmp(self, ext='.dat'):
|
||||||
self.tmp_dir.mkdir(parents=True, exist_ok=True)
|
self.tmp_dir.mkdir(parents=True, exist_ok=True)
|
||||||
@ -76,7 +81,7 @@ class Extracter:
|
|||||||
|
|
||||||
args = [
|
args = [
|
||||||
self.config['ffmpeg_path'],
|
self.config['ffmpeg_path'],
|
||||||
'-y',
|
('-n' if self.no_overwrite else '-y'),
|
||||||
'-hide_banner',
|
'-hide_banner',
|
||||||
'-loglevel',
|
'-loglevel',
|
||||||
'error',
|
'error',
|
||||||
@ -141,13 +146,13 @@ class Extracter:
|
|||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def extract(self):
|
def extract(self):
|
||||||
if self.jackets_enabled:
|
if self.jackets_enabled and not self.no_jackets:
|
||||||
yield from self.extract_jacket()
|
yield from self.extract_jacket()
|
||||||
if self.images_enabled:
|
if self.images_enabled and not self.no_images:
|
||||||
yield from self.extract_images()
|
yield from self.extract_images()
|
||||||
if self.music_enabled:
|
if self.music_enabled and not self.no_music:
|
||||||
yield from self.extract_music()
|
yield from self.extract_music()
|
||||||
if self.audio_enabled:
|
if self.audio_enabled and not self.no_audio:
|
||||||
yield from self.extract_audio()
|
yield from self.extract_audio()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
Loading…
Reference in New Issue
Block a user