Media copy research and development
This commit is contained in:
parent
d318df5e8f
commit
80fd76c485
1
mediacopy/.gitignore
vendored
Normal file
1
mediacopy/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.env
|
67
mediacopy/file_copy.py
Normal file
67
mediacopy/file_copy.py
Normal file
@ -0,0 +1,67 @@
|
||||
import os, time, sys
|
||||
from shutil import copy2
|
||||
import filecmp
|
||||
import pathlib
|
||||
from PIL import Image, ExifTags
|
||||
import pendulum
|
||||
|
||||
INGEST_DIR = pathlib.PureWindowsPath(r'\\192.168.1.4\photos\z_temp\external_backup\olympus\DCIM\100OLYMP')
|
||||
PHOTO_LIBRARY = '//192.168.1.4/photos/photo_library/'
|
||||
file_list = os.listdir(INGEST_DIR)
|
||||
# print(file_list)
|
||||
move_list = []
|
||||
|
||||
for item in file_list:
|
||||
cur_file = pathlib.Path(os.path.join(INGEST_DIR, item))
|
||||
# print(cur_file)
|
||||
# print("last modified: %s" % time.ctime(os.path.getmtime(cur_file)))
|
||||
# created_date = cur_file.stat().st_ctime
|
||||
|
||||
##Check for Exif Data
|
||||
## if no exif data revert to file created time
|
||||
try:
|
||||
created_date = Image.open(cur_file)._getexif()[36867]
|
||||
parsed_date = pendulum.parse(created_date)
|
||||
except:
|
||||
created_date = (time.ctime(os.path.getctime(cur_file)))
|
||||
parsed_date = pendulum.parse(created_date, strict=False)
|
||||
|
||||
filename, file_extension = os.path.splitext(item)
|
||||
filename = item ## Critical to the process
|
||||
if not file_extension.lower() == ".nef" and not file_extension.lower() == ".jpg":
|
||||
continue
|
||||
|
||||
# print(filename, file_extension)
|
||||
# print(created_date)
|
||||
# print()
|
||||
|
||||
# print(parsed_date)
|
||||
year = parsed_date.year
|
||||
month = str(parsed_date.month).zfill(2)
|
||||
day = str(parsed_date.day).zfill(2)
|
||||
destination = "%s%s/%s/%s/%s" % (PHOTO_LIBRARY, year, month, day, filename)
|
||||
# print(destination)
|
||||
print("We want to move %s to %s%s/%s/%s." % (filename, PHOTO_LIBRARY, year, month, day))
|
||||
|
||||
## check if the directory exists
|
||||
if not os.path.isdir(os.path.join(PHOTO_LIBRARY, str(year))):
|
||||
print("We couldn't find your directory")
|
||||
os.makedirs(os.path.join(PHOTO_LIBRARY, year))
|
||||
if not os.path.isdir(os.path.join(PHOTO_LIBRARY, str(year), str(month))):
|
||||
print("We couldn't find your directory")
|
||||
os.makedirs(os.path.join(PHOTO_LIBRARY, str(year), str(month)))
|
||||
if not os.path.isdir(os.path.join(PHOTO_LIBRARY, str(year), str(month), str(day))):
|
||||
print("We couldn't find your directory")
|
||||
os.makedirs(os.path.join(PHOTO_LIBRARY, str(year), str(month), str(day)))
|
||||
|
||||
## We should be copying, creating a source and destination hash
|
||||
## comparing the files and then deleting the source
|
||||
print()
|
||||
print("Copying %s to %s" % (cur_file, destination))
|
||||
copy2(cur_file, destination)
|
||||
if filecmp.cmp(cur_file, destination) == True:
|
||||
print("%s and %s are a match. Time to delete %s" % (cur_file, destination, cur_file))
|
||||
os.remove(cur_file)
|
||||
|
||||
### TODO:
|
||||
### Find files with no extension and save them + directory to a file
|
19
mediacopy/new_scans.py
Normal file
19
mediacopy/new_scans.py
Normal file
@ -0,0 +1,19 @@
|
||||
'''
|
||||
Honestly just check to see what the newest file is and if it is newer than the last one we saw
|
||||
Send a push notification to Alex
|
||||
|
||||
Aspirations:
|
||||
[] Suggest new names
|
||||
[] Rename them in the tool
|
||||
'''
|
||||
import os
|
||||
import time
|
||||
|
||||
SCANS_DIR = r'\\192.168.1.4\scans'
|
||||
listing = os.listdir(SCANS_DIR)
|
||||
print(listing)
|
||||
|
||||
for item in listing:
|
||||
cur_file = os.path.join(SCANS_DIR, item)
|
||||
# print("last modified: %s" % time.ctime(os.path.getmtime(cur_file))) # Last Modified Time
|
||||
print("%s Created: %s" % (item, time.ctime(os.path.getctime(cur_file))))
|
71
mediacopy/test_menu.py
Normal file
71
mediacopy/test_menu.py
Normal file
@ -0,0 +1,71 @@
|
||||
from PyInquirer import style_from_dict, Token, prompt, Separator
|
||||
from pprint import pprint
|
||||
|
||||
|
||||
style = style_from_dict({
|
||||
Token.Separator: '#cc5454',
|
||||
Token.QuestionMark: '#673ab7 bold',
|
||||
Token.Selected: '#cc5454', # default
|
||||
Token.Pointer: '#673ab7 bold',
|
||||
Token.Instruction: '', # default
|
||||
Token.Answer: '#f44336 bold',
|
||||
Token.Question: '',
|
||||
})
|
||||
|
||||
|
||||
questions = [
|
||||
{
|
||||
'type': 'checkbox',
|
||||
'message': 'Select toppings',
|
||||
'name': 'toppings',
|
||||
'choices': [
|
||||
Separator('= The Meats ='),
|
||||
{
|
||||
'name': 'Ham'
|
||||
},
|
||||
{
|
||||
'name': 'Ground Meat'
|
||||
},
|
||||
{
|
||||
'name': 'Bacon'
|
||||
},
|
||||
Separator('= The Cheeses ='),
|
||||
{
|
||||
'name': 'Mozzarella',
|
||||
'checked': True
|
||||
},
|
||||
{
|
||||
'name': 'Cheddar'
|
||||
},
|
||||
{
|
||||
'name': 'Parmesan'
|
||||
},
|
||||
Separator('= The usual ='),
|
||||
{
|
||||
'name': 'Mushroom'
|
||||
},
|
||||
{
|
||||
'name': 'Tomato'
|
||||
},
|
||||
{
|
||||
'name': 'Pepperoni'
|
||||
},
|
||||
Separator('= The extras ='),
|
||||
{
|
||||
'name': 'Pineapple'
|
||||
},
|
||||
{
|
||||
'name': 'Olives',
|
||||
'disabled': 'out of stock'
|
||||
},
|
||||
{
|
||||
'name': 'Extra cheese'
|
||||
}
|
||||
],
|
||||
'validate': lambda answer: 'You must choose at least one topping.' \
|
||||
if len(answer) == 0 else True
|
||||
}
|
||||
]
|
||||
|
||||
answers = prompt(questions, style=style)
|
||||
pprint(answers)
|
37
mediacopy/tkinter.py
Normal file
37
mediacopy/tkinter.py
Normal file
@ -0,0 +1,37 @@
|
||||
import tkinter as tk
|
||||
from tkinter import filedialog
|
||||
# from tkinter import *
|
||||
|
||||
class Application(tk.Frame):
|
||||
def __init__(self, master=None):
|
||||
super().__init__(master)
|
||||
self.master = master
|
||||
self.pack()
|
||||
self.create_widgets()
|
||||
|
||||
def create_widgets(self):
|
||||
self.copy_from = tk.Button(self)
|
||||
self.copy_from["text"] = "Copy from..."
|
||||
# self.copy_from["command"] = self.get_dir(self.copy_from)
|
||||
self.copy_from.pack(side="top")
|
||||
|
||||
self.copy_to = tk.Button(self)
|
||||
self.copy_to["text"] = "Copy to..."
|
||||
# self.copy_to.bind('<Enter>', self.get_dir(self.copy_to))
|
||||
self.copy_to.pack(side="top")
|
||||
|
||||
|
||||
self.quit = tk.Button(self, text="QUIT", fg="red",
|
||||
command=self.master.destroy)
|
||||
self.quit.pack(side="bottom")
|
||||
|
||||
def get_dir(self, the_widget):
|
||||
folder_selected = filedialog.askdirectory()
|
||||
if len(folder_selected) > 6:
|
||||
the_widget.config(text=folder_selected)
|
||||
|
||||
|
||||
root = tk.Tk()
|
||||
app = Application(master=root)
|
||||
app.copy_from.configure(command=app.get_dir(app.copy_from))
|
||||
app.mainloop()
|
Loading…
Reference in New Issue
Block a user