Migrate from gitea
This commit is contained in:
commit
0d358fccce
5 changed files with 366 additions and 0 deletions
164
.gitignore
vendored
Normal file
164
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,164 @@
|
|||
# ---> Python
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
# For a library or package, you might want to ignore these files since the code is
|
||||
# intended to run in multiple environments; otherwise, check them in:
|
||||
# .python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# poetry
|
||||
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||
#poetry.lock
|
||||
|
||||
# pdm
|
||||
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||
#pdm.lock
|
||||
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||
# in version control.
|
||||
# https://pdm.fming.dev/#use-with-ide
|
||||
.pdm.toml
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
# PyCharm
|
||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
# vscode
|
||||
.vscode
|
||||
21
README.md
Normal file
21
README.md
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# scripts_video
|
||||
|
||||
Useful commands
|
||||
```
|
||||
ffmpeg -i Millennium.Mambo.2001.UHD.BluRay.2160p.DTS-HD.MA.5.1.DV.HEVC.HYBRID.REMUX-FraMeSToR.mkv -c:v copy -bsf:v hevc_mp4toannexb -f hevc - | dovi_tool -m 2 convert --discard -
|
||||
|
||||
ffmpeg -i My.Darling.Clementine.1946.1080p.BluRay.REMUX.AVC.DTS-HD.MA.1.0-EPSiLON\ \(1\).mkv -map 0 -codec copy -map 0:1 -c:a:0 pcm_s32le Darling_out.mkv
|
||||
|
||||
ffmpeg -i Yi.Yi.2000.1080p.CC.Blu-ray.REMUX.AVC.DTS-HD.MA2.0-HDH.mkv -map 0 -codec copy -c:a aac -b:a 320k Yi.Yi.2000.1080p.CC.Blu-ray.REMUX.AVC.DTS-HD.MA2.0.AAC-HDH.mkv
|
||||
|
||||
tdarr-ffmpeg -i /Data/Pelis/My.Darling.Clementine.1946.1080p.BluRay.REMUX.AVC.DTS-HD.MA.PCM.1.0-EPSiLON.mkv -map 0 -c:v copy -c:a copy -map 0:4 -c:a:0 libfdk_aac -vbr 5 -ac 2 -metadata:s:a:0 'title="2.0 tdarr"' -strict -2 -c:s copy -metadata 'comment="2.0 tdarr"' -max_muxing_queue_size 9999 "/Data/cache tdarr/tdarr-workDir2-9uw7bakt1/My.Darling.Clementine.1946.1080p.BluRay.REMUX.AVC.DTS-HD.MA.PCM.1.0-EPSiLON-TdarrCacheFile-uiqLfj6uf.mkv"
|
||||
|
||||
ffmpeg -i /Data/Pelis/My.Darling.Clementine.1946.1080p.BluRay.REMUX.AVC.DTS-HD.MA.PCM.1.0-EPSiLON.mkv -map 0 -c:v copy -c:a copy -map 0:1 -c:a:0 libfdk_aac -vbr 5 -ac 2 -c:s copy output.mkv"
|
||||
|
||||
ffmpeg -i "$file" -map 0 -codec copy -c:s mov_text -movflags +faststart -strict experimental "$output"
|
||||
|
||||
D:\Documentos\Descargas\ffmpeg.exe -i E:\Okja.2017.UHD.BluRay.2160p.TrueHD.Atmos.7.1.DV.HEVC.REMUX-FraMeSToR.mkv -c:a libfdk_aac -vbr 5 -ac 2 okja.aac
|
||||
|
||||
ffmpeg -i /Data/Pelis/My.Darling.Clementine.1946.1080p.BluRay.REMUX.AVC.DTS-HD.MA.PCM.1.0-EPSiLON.mkv -c:a:0 libfdk_aac -vbr 5 -af "volume=1.66,pan=stereo|c0=0.5*c2+0.707*c0+0.707*c4+0.5*c3|c1=0.5*c2+0.707*c1+0.707*c5+0.5*c3" "outputstereo.aac"
|
||||
|
||||
```
|
||||
106
plugins_tdarr/Tdarr_Plugin_Alex_DownmixStereo.js
Normal file
106
plugins_tdarr/Tdarr_Plugin_Alex_DownmixStereo.js
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
|
||||
const details = () => ({
|
||||
id: 'Tdarr_Plugin_Alex_DownmixStereo',
|
||||
Stage: 'Pre-processing',
|
||||
Name: 'Alex-DownmixStereo',
|
||||
Type: 'Audio',
|
||||
Operation: 'Transcode',
|
||||
Description: 'Todos los streams de audio que no sean 2.0, les hago downmix \n\n',
|
||||
Version: '2.4',
|
||||
Tags: 'pre-processing,ffmpeg,audio only,configurable',
|
||||
Inputs: [],
|
||||
});
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const plugin = (file, librarySettings, inputs, otherArguments) => {
|
||||
const lib = require('../methods/lib')();
|
||||
// eslint-disable-next-line no-unused-vars,no-param-reassign
|
||||
inputs = lib.loadDefaultValues(inputs, details);
|
||||
const response = {
|
||||
processFile: false,
|
||||
container: `.${file.container}`,
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '',
|
||||
};
|
||||
|
||||
// Check if file is a video. If it isn't then exit plugin.
|
||||
if (file.fileMedium !== 'video') {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log('File is not video');
|
||||
response.infoLog += '☒File is not video. \n';
|
||||
response.processFile = false;
|
||||
return response;
|
||||
}
|
||||
|
||||
// Set up required variables.
|
||||
let ffmpegCommandInsert = '';
|
||||
let audioIdx = 0;
|
||||
let convert = false;
|
||||
let already_converted = false;
|
||||
let only_convert_dts = false;
|
||||
|
||||
//if (file.video_resolution.includes("1080p")){
|
||||
// only_convert_dts = true;
|
||||
//}
|
||||
only_convert_dts = true;
|
||||
// Go through each stream in the file.
|
||||
if ("comment" in file.ffProbeData.format.tags){
|
||||
if (file.ffProbeData.format.tags.comment.includes("2.0 tdarr")){
|
||||
already_converted = true;
|
||||
}
|
||||
}
|
||||
if ("COMMENT" in file.ffProbeData.format.tags){
|
||||
if (file.ffProbeData.format.tags.COMMENT.includes("2.0 tdarr")){
|
||||
already_converted = true;
|
||||
}
|
||||
}
|
||||
|
||||
// for (let i = 0; i < file.ffProbeData.streams.length; i++) {
|
||||
// try {
|
||||
// // Go through all audio streams and check if 2 is already converted.
|
||||
// if (file.ffProbeData.streams[i].codec_type.toLowerCase() === 'audio') {
|
||||
// if (file.ffProbeData.streams[i].channels === 2 && file.ffProbeData.streams[i].tags.title.includes("2.0 tdarr")) {
|
||||
// already_converted = true;
|
||||
// }
|
||||
// }
|
||||
// } catch (err) {
|
||||
// // Error
|
||||
// }
|
||||
// }
|
||||
|
||||
// Go through each stream in the file.
|
||||
for (let i = 0; i < file.ffProbeData.streams.length; i++) {
|
||||
// Check if stream is audio.
|
||||
if (file.ffProbeData.streams[i].codec_type.toLowerCase() === 'audio') {
|
||||
if (only_convert_dts === true){
|
||||
//si la pista no es dts: continue;
|
||||
if (!file.ffProbeData.streams[i].codec_long_name.includes("DCA")){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (file.ffProbeData.streams[i].channels !== 2) {
|
||||
//ffmpegCommandInsert += `-map 0:${i} -c:a:${audioIdx} libmp3lame -q:a 2 -ac 2 -metadata:s:a:${audioIdx} title="2.0 tdarr" `;
|
||||
ffmpegCommandInsert += `-map 0:${i} -c:a:${audioIdx} libfdk_aac -vbr 5 -af "volume=1.66,pan=stereo|c0=0.5*c2+0.707*c0+0.707*c4+0.5*c3|c1=0.5*c2+0.707*c1+0.707*c5+0.5*c3" -metadata:s:a:${audioIdx} title="2.0 tdarr" `;
|
||||
//ffmpegCommandInsert += `-map 0:${i} -c:a:${audioIdx} aac -ac 2 -metadata:s:a:${audioIdx} title="2.0 tdarr" `;
|
||||
response.infoLog += `Creating 2 channel from audio stream ${audioIdx}. \n`;
|
||||
convert = true;
|
||||
}
|
||||
audioIdx += 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Convert file if convert variable is set to true.
|
||||
if (convert === false || already_converted === true) {
|
||||
response.infoLog += '☑File contains all required audio formats. \n';
|
||||
response.processFile = false;
|
||||
} else {
|
||||
response.processFile = true;
|
||||
response.preset = `, -map 0 -c:v copy -c:a copy ${ffmpegCommandInsert} `
|
||||
+ '-strict -2 -c:s copy -metadata comment="2.0 tdarr" -max_muxing_queue_size 9999 ';
|
||||
}
|
||||
return response;
|
||||
};
|
||||
module.exports.details = details;
|
||||
module.exports.plugin = plugin;
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
/* eslint-disable */
|
||||
|
||||
|
||||
// tdarrSkipTest
|
||||
const details = () => {
|
||||
return {
|
||||
id: "Tdarr_Plugin_O8O0dCTlb_Set_File_Permissions_For_Docker",
|
||||
Stage: 'Pre-processing',
|
||||
Name: "Set file permissions for Docker",
|
||||
Type: "Video",
|
||||
Operation: "Transcode",
|
||||
Description: "Sets file permissions using chmod 777. Use at end of stack. ",
|
||||
Version: "",
|
||||
Tags: "post-processing",
|
||||
Inputs:[],
|
||||
}
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const plugin = (file, librarySettings, inputs, otherArguments) => {
|
||||
|
||||
const lib = require('../methods/lib')();
|
||||
// eslint-disable-next-line no-unused-vars,no-param-reassign
|
||||
inputs = lib.loadDefaultValues(inputs, details);
|
||||
|
||||
//Must return this object at some point
|
||||
var response = {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '',
|
||||
|
||||
}
|
||||
|
||||
response.infoLog += ""
|
||||
|
||||
if ((true) || file.forceProcessing === true) {
|
||||
|
||||
require("child_process").execSync(`chmod 777 "${file._id}"`)
|
||||
response.preset = ''
|
||||
response.container = '.mkv'
|
||||
response.handBrakeMode = false
|
||||
response.FFmpegMode = true
|
||||
response.reQueueAfter = true;
|
||||
response.processFile = false
|
||||
response.infoLog += "File permissions set \n"
|
||||
return response
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports.details = details;
|
||||
module.exports.plugin = plugin;
|
||||
19
renombrar_subs/renombrar.py
Normal file
19
renombrar_subs/renombrar.py
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import sys
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
||||
ruta_base = sys.argv [1]
|
||||
|
||||
nombre_carpeta_subs = "Subs"
|
||||
ruta_subs = os.path.join(ruta_base,nombre_carpeta_subs)
|
||||
|
||||
for nombre in (subcarpeta for subcarpeta in os.listdir(ruta_subs) if not os.path.isfile(subcarpeta) ):
|
||||
ruta_subcarpeta = os.path.join(ruta_subs,nombre)
|
||||
nombre_fichero_sub = [x for x in os.listdir(ruta_subcarpeta) if "English" in x][0]
|
||||
|
||||
origen = os.path.join(ruta_subcarpeta,nombre_fichero_sub)
|
||||
destino = os.path.join(ruta_base,nombre+".en.srt")
|
||||
#print("oringe: "+origen)
|
||||
#print("destino: "+destino)
|
||||
shutil.copyfile(origen, destino)
|
||||
Loading…
Add table
Add a link
Reference in a new issue