mirror of
https://github.com/simon987/scripts.git
synced 2025-04-10 05:46:44 +00:00
yee
This commit is contained in:
parent
5443308bf7
commit
838381ea89
43
flac2mp3_V0
Executable file
43
flac2mp3_V0
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/usr/bin/bash python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
from shutil import copyfile
|
||||||
|
import pathlib
|
||||||
|
from multiprocessing import Pool, Value
|
||||||
|
|
||||||
|
SRC = "/mnt/merger/audio/music"
|
||||||
|
DST = "/mnt/merger/audio/music_[V0]"
|
||||||
|
|
||||||
|
to_convert = []
|
||||||
|
counter = Value("d")
|
||||||
|
|
||||||
|
|
||||||
|
def convert(path):
|
||||||
|
global counter
|
||||||
|
destination = DST + path[len(SRC):]
|
||||||
|
destination = os.path.splitext(destination)[0] + ".mp3"
|
||||||
|
|
||||||
|
pathlib.Path(os.path.split(destination)[0]).mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
if not os.path.exists(destination):
|
||||||
|
os.system("ffmpeg -i \"" + path + "\" -c:a libmp3lame -q:a 0 -y \"" + destination + "\" -loglevel panic")
|
||||||
|
print("[%.2f%%] - " % (counter.value / len(to_convert) * 100) + destination)
|
||||||
|
counter.value += 1
|
||||||
|
|
||||||
|
|
||||||
|
def recursive_convert(path):
|
||||||
|
|
||||||
|
for item in os.listdir(path):
|
||||||
|
full_path = path + os.sep + item
|
||||||
|
if os.path.isdir(full_path):
|
||||||
|
recursive_convert(full_path)
|
||||||
|
else:
|
||||||
|
if os.path.splitext(item)[1] in [".mp3", ".flac", ".m4a", ".ape"]:
|
||||||
|
to_convert.append(full_path)
|
||||||
|
|
||||||
|
|
||||||
|
recursive_convert(SRC)
|
||||||
|
print("Converting " + str(len(to_convert)) + " files...")
|
||||||
|
|
||||||
|
pool = Pool(processes=4)
|
||||||
|
pool.map(convert, to_convert)
|
46
flac2opus
Executable file
46
flac2opus
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
from shutil import copyfile
|
||||||
|
import pathlib
|
||||||
|
from multiprocessing import Pool, Value
|
||||||
|
|
||||||
|
SRC = "/mnt/merger/audio/music"
|
||||||
|
DST = "/mnt/merger/audio/music_opus"
|
||||||
|
|
||||||
|
to_convert = []
|
||||||
|
counter = Value("d")
|
||||||
|
|
||||||
|
|
||||||
|
def convert(path):
|
||||||
|
global counter
|
||||||
|
destination = DST + path[len(SRC):]
|
||||||
|
destination = os.path.splitext(destination)[0] + ".opus"
|
||||||
|
|
||||||
|
pathlib.Path(os.path.split(destination)[0]).mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
if not os.path.exists(destination):
|
||||||
|
if path.endswith("flac"):
|
||||||
|
os.system("opusenc \"" + path + "\" --bitrate 80 \"" + destination + "\" --quiet")
|
||||||
|
else:
|
||||||
|
os.system("ffmpeg -i \"" + path + "\" -f flac -loglevel panic - | opusenc - \"" + destination + "\" --quiet")
|
||||||
|
print("[%.2f%%] - " % (counter.value / len(to_convert) * 100) + destination)
|
||||||
|
counter.value += 1
|
||||||
|
|
||||||
|
|
||||||
|
def recursive_convert(path):
|
||||||
|
|
||||||
|
for item in os.listdir(path):
|
||||||
|
full_path = path + os.sep + item
|
||||||
|
if os.path.isdir(full_path):
|
||||||
|
recursive_convert(full_path)
|
||||||
|
else:
|
||||||
|
if os.path.splitext(item)[1] in [".mp3", ".flac", ".m4a", ".ape"]:
|
||||||
|
to_convert.append(full_path)
|
||||||
|
|
||||||
|
|
||||||
|
recursive_convert(SRC)
|
||||||
|
print("Converting " + str(len(to_convert)) + " files...")
|
||||||
|
|
||||||
|
pool = Pool(processes=4)
|
||||||
|
pool.map(convert, to_convert)
|
10
sc_update
10
sc_update
@ -1,5 +1,5 @@
|
|||||||
sudo pacman -S archlinux-keyring
|
sudo pacman -S archlinux-keyring --noconfirm
|
||||||
sudo pacman-key --init
|
sudo pacman-key --init --noconfirm
|
||||||
sudo pacman-key --populate archlinux
|
sudo pacman-key --populate archlinux --noconfirm
|
||||||
sudo pacman-key --refresh-keys
|
sudo pacman-key --refresh-keys --noconfirm
|
||||||
sudo pacman -Syyu
|
sudo pacman -Syyu --noconfirm
|
||||||
|
55
send_mail
Executable file
55
send_mail
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import smtplib
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
from email.message import Message
|
||||||
|
from email.mime.multipart import MIMEMultipart
|
||||||
|
from email.mime.text import MIMEText
|
||||||
|
from email.utils import formatdate
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description="mail")
|
||||||
|
parser.add_argument("--subject", "-s",
|
||||||
|
action="store", type=str, required=True,
|
||||||
|
help="Message subject")
|
||||||
|
parser.add_argument("--message", "-m",
|
||||||
|
action="store", type=str, required=True,
|
||||||
|
help="Message body")
|
||||||
|
parser.add_argument("--sender", "-f",
|
||||||
|
action="store", type=str, default="me@simon987.net",
|
||||||
|
help="Source address")
|
||||||
|
parser.add_argument("--to", "-t",
|
||||||
|
action="store", type=str, required=True,
|
||||||
|
help="Destination address")
|
||||||
|
parser.add_argument("--smtp_server",
|
||||||
|
action="store", type=str, default="mail.simon987.net",
|
||||||
|
help="SMTP server")
|
||||||
|
parser.add_argument("--smtp_password", "-p",
|
||||||
|
action="store", type=str, required=True,
|
||||||
|
help="SMTP password")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
HOME = str(Path.home())
|
||||||
|
|
||||||
|
|
||||||
|
if args.message == "-":
|
||||||
|
text = sys.stdin.read()
|
||||||
|
else:
|
||||||
|
text = args.message
|
||||||
|
|
||||||
|
msg = MIMEText(text).as_string().replace("\n", "\r\n")
|
||||||
|
|
||||||
|
msg["From"] = args.sender
|
||||||
|
msg["Subject"] = args.subject
|
||||||
|
msg["To"] = args.to
|
||||||
|
msg["Date"] = formatdate(time.time(), True)
|
||||||
|
|
||||||
|
s = smtplib.SMTP(args.smtp_server, port=587, )
|
||||||
|
s.starttls()
|
||||||
|
s.login(args.sender, args.smtp_password)
|
||||||
|
s.sendmail(args.sender, args.to, msg.as_string())
|
||||||
|
s.quit()
|
11
webmenc
11
webmenc
@ -1,9 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
source $(dirname $0)/lib/argparse || exit 1
|
source $(dirname $0)/lib/argparse || exit 1
|
||||||
argparse "$@" <<EOF || exit 1
|
argparse "$@" <<EOF || exit 1
|
||||||
|
parser.add_argument('infile')
|
||||||
parser.add_argument('-v', '--video-bitrate', type=int,
|
parser.add_argument('-v', '--video-bitrate', type=int,
|
||||||
help='Video bitrate in kbps')
|
help='Video bitrate in kbps')
|
||||||
|
|
||||||
@ -13,9 +12,9 @@ EOF
|
|||||||
|
|
||||||
CRF=30
|
CRF=30
|
||||||
|
|
||||||
ffmpeg -i "$1" -y -b:v $VIDEO_BITRATE \
|
ffmpeg -i "${INFILE}" -y -b:v "${VIDEO_BITRATE}k" \
|
||||||
-quality good -crf $CRF -c:v libvpx-vp9 -an \
|
-quality good -crf $CRF -c:v libvpx-vp9 -an \
|
||||||
-pass 1 -speed 4 -f webm /dev/null &&\
|
-pass 1 -speed 4 -f webm /dev/null &&\
|
||||||
ffmpeg -i "$1" -y -b:v $VIDEO_BITRATE -auto-alt-ref 1 -lag-in-frames 25 \
|
ffmpeg -i "${INFILE}" -y -b:v "${VIDEO_BITRATE}k" -auto-alt-ref 1 -lag-in-frames 25 \
|
||||||
-quality good -crf $CRF -c:v libvpx-vp9 -c:a libopus -b:a $AUDIO_BITRATE \
|
-quality good -crf $CRF -c:v libvpx-vp9 -c:a libopus -b:a ${AUDIO_BITRATE}k \
|
||||||
-pass 2 -speed 1 "$1.webm"
|
-pass 2 -speed 1 "${INFILE}.webm"
|
||||||
|
83
webmenc_auto
Executable file
83
webmenc_auto
Executable file
@ -0,0 +1,83 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
width=$(ffprobe "${INFILE}" -show_streams -print_format json 2>/dev/null | jq ".streams[] | select(.width != null) | .width" | head -n 1)
|
||||||
|
height=$(ffprobe "${INFILE}" -show_streams -print_format json 2>/dev/null | jq ".streams[] | select(.height != null) | .height" | head -n 1)
|
||||||
|
fps=$(($(ffprobe "${INFILE}" -show_streams -print_format json 2>/dev/null | jq -r ".streams[] | select(.r_frame_rate != null) | .r_frame_rate" | head -n 1)))
|
||||||
|
|
||||||
|
if [[ ${width} -lt ${height} ]]; then
|
||||||
|
tmp=${width}
|
||||||
|
width=${height}
|
||||||
|
height=${tmp}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${width} -le 320 ]]; then
|
||||||
|
MIN_VBR=75
|
||||||
|
CRF=36
|
||||||
|
TRG_VRB=150
|
||||||
|
MAX_VBR=218
|
||||||
|
TILE_COLS=0
|
||||||
|
THREADS=2
|
||||||
|
elif [[ $width -le 640 ]]; then
|
||||||
|
MIN_VBR=375
|
||||||
|
CRF=33
|
||||||
|
TRG_VBR=750
|
||||||
|
MAX_VBR=1088
|
||||||
|
TILE_COLS=1
|
||||||
|
THREADS=4
|
||||||
|
elif [[ $width -le 1280 ]]; then
|
||||||
|
MIN_VBR=512
|
||||||
|
CRF=32
|
||||||
|
TRG_VBR=1024
|
||||||
|
MAX_VBR=1485
|
||||||
|
TILE_COLS=2
|
||||||
|
THREADS=8
|
||||||
|
elif [[ $width -le 1920 ]]; then
|
||||||
|
if [[ $fps -le 30 ]]; then
|
||||||
|
MIN_VBR=900
|
||||||
|
TRG_VBR=1800
|
||||||
|
MAX_VBR=2610
|
||||||
|
else
|
||||||
|
MIN_VBR=1500
|
||||||
|
TRG_VBR=3000
|
||||||
|
MAX_VBR=4350
|
||||||
|
fi
|
||||||
|
CRF=31
|
||||||
|
TILE_COLS=2
|
||||||
|
THREADS=8
|
||||||
|
elif [[ $width -le 2560 ]]; then
|
||||||
|
if [[ $fps -le 35 ]]; then
|
||||||
|
MIN_VBR=3000
|
||||||
|
TRG_VBR=6000
|
||||||
|
MAX_VBR=8700
|
||||||
|
else
|
||||||
|
MIN_VBR=4500
|
||||||
|
TRG_VBR=9000
|
||||||
|
MAX_VBR=13050
|
||||||
|
fi
|
||||||
|
CRF=24
|
||||||
|
TILE_COLS=3
|
||||||
|
THREADS=16
|
||||||
|
else
|
||||||
|
if [[ $fps -le 35 ]]; then
|
||||||
|
MIN_VBR=6000
|
||||||
|
TRG_VBR=12000
|
||||||
|
MAX_VBR=17400
|
||||||
|
else
|
||||||
|
MIN_VBR=9000
|
||||||
|
TRG_VBR=18000
|
||||||
|
MAX_VBR=26100
|
||||||
|
fi
|
||||||
|
TILE_COLS=3
|
||||||
|
THREADS=16
|
||||||
|
CRF=15
|
||||||
|
fi
|
||||||
|
|
||||||
|
ffmpeg -i "${INFILE}" -y -b:v "${TRG_VBR}k" -minrate "${MIN_VBR}k" -maxrate "${MAX_VBR}k" -crf $CRF \
|
||||||
|
-tile-columns ${TILE_COLS} -threads ${THREADS} \
|
||||||
|
-quality good -c:v libvpx-vp9 -an \
|
||||||
|
-pass 1 -speed 4 -f webm /dev/null && \
|
||||||
|
ffmpeg -i "${INFILE}" -y -b:v "${TRG_VBR}k" -minrate "${MIN_VBR}k" -maxrate "${MAX_VBR}k" -crf $CRF\
|
||||||
|
-tile-columns ${TILE_COLS} -threads ${THREADS} \
|
||||||
|
-quality good -c:v libvpx-vp9 -c:a libopus -b:a 32k \
|
||||||
|
-pass 2 -speed 1 "${INFILE}.webm"
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user