Melon core
This commit is contained in:
parent
6a1cf1d167
commit
0a4fcc0869
128
core/melon.py
Normal file
128
core/melon.py
Normal file
@ -0,0 +1,128 @@
|
||||
import os
|
||||
import mysql.connector as mariadb
|
||||
import cv2
|
||||
from pyffmpeg import FFmpeg
|
||||
|
||||
def CheckFileName(path):
|
||||
filename, file_extension = os.path.splitext(path)
|
||||
return filename
|
||||
|
||||
def CheckFileType(path):
|
||||
filename, file_extension = os.path.splitext(path)
|
||||
return file_extension
|
||||
|
||||
def CheckFileSize(path):
|
||||
return os.path.getsize(path) # return in byte
|
||||
|
||||
def CheckFileHeight(path):
|
||||
try:
|
||||
vid = cv2.VideoCapture(path)
|
||||
height = vid.get(cv2.CAP_PROP_FRAME_HEIGHT)
|
||||
except Exception as e:
|
||||
height = None
|
||||
print('[DEBUG] Error: '+str(e))
|
||||
return height
|
||||
|
||||
def CheckFileWidth(path):
|
||||
try:
|
||||
vid = cv2.VideoCapture(path)
|
||||
width = vid.get(cv2.CAP_PROP_FRAME_WIDTH)
|
||||
except Exception as e:
|
||||
width = None
|
||||
print('[DEBUG] Error: '+str(e))
|
||||
return width
|
||||
|
||||
def CheckDir(storage):
|
||||
return os.path.isdir(storage)
|
||||
|
||||
def CountDir(storage):
|
||||
return len(os.listdir(storage))
|
||||
|
||||
def CountDb(dbin, table, portal_field, portal_value):
|
||||
con = mariadb.connect(**dbin)
|
||||
cursor = con.cursor()
|
||||
cursor.execute(f"SELECT * FROM {table} WHERE {portal_field} = {portal_value} ;")
|
||||
result = cursor.fetchall()
|
||||
total = len(result)
|
||||
con.close()
|
||||
return total
|
||||
|
||||
def CountCompare(storage, dbin, table, portal_field, portal_value):
|
||||
storage_count = CountDir(storage)
|
||||
print('[DEBUG] Storage Count: '+str(storage_count))
|
||||
record_count = CountDb(dbin, table, portal_field, portal_value)
|
||||
print('[DEBUG] Record Count: '+str(record_count))
|
||||
if storage_count == record_count:
|
||||
print('[DEBUG] Sync well!')
|
||||
return 'ok'
|
||||
elif storage_count > record_count:
|
||||
print('[DEBUG] New file detected!')
|
||||
return 'new'
|
||||
elif storage_count < record_count:
|
||||
print('[DEBUG] Warning: Some videos is missing!')
|
||||
return 'miss'
|
||||
else:
|
||||
print('[DEBUG] Unknown Error!')
|
||||
return 'error'
|
||||
|
||||
def CreateVideoThumbnail(inf, outf):
|
||||
FFmpeg().convert(inf, outf)
|
||||
|
||||
def CleanVideoThumbnail(storage, temp):
|
||||
pass
|
||||
|
||||
def NewFileDetector(storage, dbin, table, temp):
|
||||
# cek for list dari directori
|
||||
new_file_count = 0
|
||||
new_file = []
|
||||
content = os.listdir(storage)
|
||||
for row1 in content:
|
||||
con = mariadb.connect(**dbin)
|
||||
cursor = con.cursor()
|
||||
cursor.execute("SELECT * FROM `"+table+"` WHERE id = '"+row1+"';")
|
||||
result = cursor.fetchall()
|
||||
detected = len(result)
|
||||
con.close()
|
||||
if detected == 0:
|
||||
new_file_count += 1
|
||||
name = CheckFileName(row1)
|
||||
type = CheckFileType(row1)
|
||||
size = CheckFileSize(storage+row1)
|
||||
height = CheckFileHeight(storage+row1)
|
||||
width = CheckFileWidth(storage+row1)
|
||||
name_esc = name.replace(' ','\ ')
|
||||
in_file = f'{storage}{name_esc}{type}'
|
||||
tempthumb = f'{temp}{name_esc}{type}.jpg'
|
||||
info = {
|
||||
"file" : row1,
|
||||
"name" : name,
|
||||
"type" : type,
|
||||
"size" : size,
|
||||
"height" : height,
|
||||
"width" : width,
|
||||
"thumbnail": tempthumb
|
||||
}
|
||||
try:
|
||||
CreateVideoThumbnail(in_file, tempthumb)
|
||||
print(f'[DEBUG] FFmpeg is running')
|
||||
print(f'[DEBUG] In File: {in_file}')
|
||||
print(f'[DEBUG] Out File: {tempthumb}')
|
||||
except Exception as e:
|
||||
print(f'[DEBUG] ERROR: {e}')
|
||||
new_file.append(info)
|
||||
|
||||
result = {
|
||||
"count" : new_file_count,
|
||||
"info" : new_file
|
||||
}
|
||||
return result
|
||||
|
||||
def MissingFileDetector(storage, dbin, table):
|
||||
# cek for list dari database
|
||||
pass
|
||||
|
||||
def NewFileInsertData():
|
||||
pass
|
||||
|
||||
def MissingFileRemoveData():
|
||||
pass
|
Loading…
Reference in New Issue
Block a user