Umsortieren

Gespeichert von Erik Wegner am/um Do, 22.06.2017 - 20:29

Die Fotos in einem Verzeichnis werden ausgewertet und in Unterverzeichnisse verschoben.

#!/usr/bin/env python3


# Einstellungen

# Umgebung ist "linux" oder "windows"
umgebung = "linux"
#umgebung = "windows"

# Soll die Jahreszahl im Verzeichnis mit verwendet werden?
erzeuge_jahresverzeichnis = True

# Einstellungen je nach Umgebung

if umgebung == "linux":
	befehl_mkdir = "mkdir -p"
	befehl_move = "mv"
if umgebung == "window":
	befehl_mkdir = "md"
	befehl_move = "move"

# Programm

import re
import os

unproc = []
directories = []

regex1 = re.compile("^\d{4}-\d{2}-\d{2}-.*\.jpg$")


def procfilename(name):
	"Zerlege den Dateinamen in Datumsbestandteile"
	p = ""
	if name.startswith('IMG_') or name.startswith('VID_'):
		p = name[4:12]
		y = name[4:8]
		m = name[8:10]
		d = name[10:12]
		#print (name + ' => ' + y + '/' + m + '/' + d)
	if name.startswith('Lumia 1020_'):
		p = name[11:19]
		y = name[11:15]
		m = name[15:17]
		d = name[17:19]
		#print (name + ' => ' + y + '/' + m + '/' + d)
	if name.startswith('WP_2') and name.find("HDR") == -1:
		p = name[3:11]
		y = name[3:7]
		m = name[7:9]
		d = name[9:11]
		#print (name + ' => ' + y + '/' + m + '/' + d)
	if name.startswith('Office Lens'):
		p = name[12:20]
		y = name[12:16]
		m = name[16:18]
		d = name[18:20]
		#print (name + ' => ' + y + '/' + m + '/' + d)
	if regex1.match(name):
		p = name[0:10]
		y = name[0:4]
		m = name[5:7]
		d = name[8:10]
	if p == "":
		unproc.append(name)
		return
	if erzeuge_jahresverzeichnis:
		directory = os.path.join(y, m, d)
	else:
		directory = os.path.join(m, d)
	if directory not in directories:
		print (befehl_mkdir + " " + directory)
		directories.append(directory)
	print (befehl_move + ' "' + name + '" ' + directory)

def readfile(fname):
	with open(fname) as f:
		for line in f:
			procfilename(line.strip())
	print(repr(unproc))

if __name__ == "__main__":
	#readfile('filelist.txt')
	basepath = "."
	for file in os.listdir(basepath):
		if file.endswith(".jpg") or file.endswith(".mp4"):
			procfilename(file)