videosort.py zum interaktiven Auswählen oder Löschen von Videodateien, basierend auf mplayer
Erstellen Sie zuerst ~/.mplayer/input.conf mit dem folgenden Inhalt:
DEL run "rm '${path}' && killall mplayer"
INS run "mkdir -p $(dirname '${path}')/selected && mv '${path}' $(dirname '${path}')/selected && killall mplayer"Dies erstellt eine Tastenbelegung für DEL und INS, um die Datei zu löschen bzw. in ein selected-Verzeichnis zu verschieben.
Beachten Sie, dass gelöschte Dateien nicht in den Papierkorb verschoben, sondern dauerhaft gelöscht werden. Sichern Sie Ihre Dateien, wenn Sie es für notwendig erachten
Erstellen Sie dann ein Skript videosort.py:
#!/usr/bin/env python3
import argparse
import subprocess
from pathlib import Path
VIDEO_EXTENSIONS = {
'.mp4', '.avi', '.mkv', '.mov', '.wmv',
'.flv', '.webm', '.m4v', '.mpg', '.mpeg'
}
def get_sorted_files(directory, ascending=True, lexicographic=False):
# Get all files in directory
files = Path(directory).glob('*')
# Filter for video files only
files = [f for f in files if f.is_file() and
f.suffix.lower() in VIDEO_EXTENSIONS]
if lexicographic:
# Sort by filename
sorted_files = sorted(files, reverse=not ascending)
else:
# Sort by filesize
sorted_files = sorted(files,
key=lambda x: x.stat().st_size,
reverse=not ascending)
return sorted_files
def main():
parser = argparse.ArgumentParser(
description='Play files in directory sorted by size using mplayer')
parser.add_argument('directory', help='Directory containing files to play')
parser.add_argument('-a', '--ascending', action='store_true',
help='Sort by ascending size instead of descending')
parser.add_argument('-l', '--lexicographic', action='store_true',
help='Sort lexicographically instead of by size')
parser.add_argument('-f', '--fullscreen', action='store_true',
help='Play videos in fullscreen mode')
parser.add_argument('-s', '--speed', type=float, default=1.0,
help='Playback speed multiplier (default: 1.0)')
parser.add_argument('--half', action='store_true',
help='Play videos in half screen size')
parser.add_argument('-m', '--mute', action='store_true',
help='Mute audio output')
args = parser.parse_args()
if args.speed <= 0:
parser.error("Speed must be a positive number")
# Get sorted file list
files = get_sorted_files(args.directory,
args.ascending,
args.lexicographic)
# Get screen resolution if half screen mode is requested
if args.half:
try:
xrandr = subprocess.check_output(['xrandr']).decode()
resolution = [l for l in xrandr.splitlines() if ' connected' in l][0]
width = int(resolution.split()[2].split('x')[0])
height = int(resolution.split()[2].split('x')[1].split('+')[0])
geometry = f'{width//2}x{height//2}'
except:
print("Warning: Could not detect screen size, using default")
geometry = '960x540'
# Play each file
for file in files:
# -idle makes mplayer pause at end instead of exit
cmd = ['mplayer', '-loop', '0', '-fixed-vo']
if args.fullscreen:
cmd.append('-fs')
elif args.half:
cmd.extend(['-geometry', geometry])
if args.mute:
cmd.append('-ao')
cmd.append('null')
cmd.append('-speed')
cmd.append(str(args.speed))
# Input file
cmd.append(str(file))
try:
# Run mplayer and wait for it to complete
subprocess.run(cmd, check=True)
except subprocess.CalledProcessError as e:
print(f"Error playing {file}: {e}")
except KeyboardInterrupt:
print("\nPlayback interrupted by user")
break
if __name__ == '__main__':
main()Wenn Sie es ausführen, führt es mplayer auf eine Datei nach der anderen aus, sodass Sie DEL drücken können, um die Datei zu löschen, oder INS, um sie in ein selected-Verzeichnis zu verschieben. Sie können auch q drücken, um zur nächsten Datei zu springen, ohne sie zu löschen oder zu verschieben.
Die vielen Kommandozeilen-Optionen ermöglichen es Ihnen, das Verhalten des Skripts anzupassen, wie Sortierreihenfolge, Wiedergabegeschwindigkeit, Vollbildmodus und mehr.
usage: videosort.py [-h] [-a] [-l] [-f] [-s SPEED] [--half] [-m] directory
Play files in directory sorted by size using mplayer
positional arguments:
directory Directory containing files to play
options:
-h, --help show this help message and exit
-a, --ascending Sort by ascending size instead of descending
-l, --lexicographic Sort lexicographically instead of by size
-f, --fullscreen Play videos in fullscreen mode
-s SPEED, --speed SPEED
Playback speed multiplier (default: 1.0)
--half Play videos in half screen size
-m, --mute Mute audio output