Ejemplo n.º 1
0
def GetManyYearPhotoDates(currentLocalDT):
    """
        From users care lists, to find out the past date.
        2020-05-20, 2019-05-20, 2018-05-20, 2017-05-20, 2016-05-20...etc
    """
    dbh = dbPhotoHelper()
    tzh = TimeZoneHelper(DefaultTimeZone)
    dth = DateTimeHelper()

    ts = dbh.getMinPhotoUtcTS()
    if not ts:
        return

    localUtcDateTime = dth.timestampToDateTime(ts)
    localDateTime = tzh.getLocalTime(localUtcDateTime)
    nowMonth = currentLocalDT.month
    nowDay = currentLocalDT.day

    for y in range(localDateTime.year, currentLocalDT.year + 1):
        yield datetime(y, nowMonth, nowDay)
def maintainMonitorDir():
    """
        Search sub folder from the root dir in the database.
        Maintain the database.
    """
    print('maintainMonitorDir:')

    evalh = EvaluateTimeHelper()

    dbh = dbPhotoHelper()
    fdh = DirectoryHelper()
    rootdirs = dbh.getRootDirs()
    i = 0
    for rootdir in rootdirs:
        evalh.start(rootdir['DIR'])
        folders = fdh.listHasFilesDirectories(rootdir['DIR'])
        for folder in folders:
            i = i + 1
            #print(str(i)+'. '+rootdir['DIR']+' : '+folder)
            dbh.insertDirIfNotExist((folder, False, False, None))
        evalh.stop()
Ejemplo n.º 3
0
def GetVideosByVideoDates(videoDates, catalogs, randomVideosNumber):
    """
        Get the random video path in your video database.
    """
    dbh = dbPhotoHelper()
    dth = DateTimeHelper()
    tzh = TimeZoneHelper(DefaultTimeZone)
    for dt in videoDates:
        #timeHelper.start('GetVideosByVideoDates')
        #ymd = dth.formatDateTimeToSqliteYMD(dt)
        ymdStart = tzh.getUTCTime(dt)
        ymdEnd = tzh.getUTCTime(dt + timedelta(days=1))
        dataRows = dbh.getRandomVideoThisDayByCatalog(ymdStart, ymdEnd,
                                                      randomVideosNumber,
                                                      catalogs)
        #timeHelper.stop()
        yield (dt,
               map(
                   lambda row: {
                       'DIR': row['DIR'],
                       'FILE_NAME': row['FILE_NAME']
                   }, dataRows))
Ejemplo n.º 4
0
def GetPhotosByPhotoDates(photoDates, catalogs, randomPhotosNumber):
    """
        Get the random photo path in your photo database.
    """
    dbh = dbPhotoHelper()
    dth = DateTimeHelper()
    tzh = TimeZoneHelper(DefaultTimeZone)
    for dt in photoDates:
        #timeHelper.start('GetPhotosByPhotoDates')
        #ymd = dth.formatDateTimeToSqliteYMD(dt)
        ymdtsStart = dth.dateTimeToTimestamp(tzh.getUTCTime(dt))
        ymdtsEnd = dth.dateTimeToTimestamp(
            tzh.getUTCTime(dt + timedelta(days=1)))
        dataRows = dbh.getRandomThisDayByCatalog(ymdtsStart, ymdtsEnd,
                                                 randomPhotosNumber, catalogs)
        #timeHelper.stop()
        yield (dt,
               map(
                   lambda row: {
                       'DIR': row['DIR'],
                       'FILE_NAME': row['FILE_NAME'],
                       'GPS': row['GPS'],
                       'GPS_ADDRESS': row['GPS_ADDRESS']
                   }, dataRows))
Ejemplo n.º 5
0
def CreatePhotoMessage(oriYear, obj):
    dbh = dbPhotoHelper()
    duh = dbUsersHelper()
    apiKey = duh.getGoogleAPIKey()
    geoh = None
    if apiKey:
        geoh = GeoHelper(apiKey)

    by = datetime.now().year - oriYear
    msg = str(by) + ' years ago' if by > 1 else str(by) + ' year ago'
    #picURI = obj['THUMBNAIL']
    basename = os.path.basename(obj['DIR'])
    msg = msg + "\n" + basename + "/" + obj['FILE_NAME']
    gps_address = obj['GPS_ADDRESS']
    gps = obj['GPS']
    if gps_address:
        msg = msg + "\n" + gps_address
    elif gps:
        if geoh:
            address = geoh.getNearAddress(gps)
            if address:
                msg = msg + "\n" + address
                dbh.UpdateGeoAddress(obj['FILE_NAME'], obj['DIR'], address)
    return msg
from datetime import datetime
from db.SaPhotoDB import dbPhotoHelper
from date.TimeZoneHelper import TimeZoneHelper
from date.DateTimeHelper import DateTimeHelper
from graph.ExifHelper import ExifHelper
from synology.FileParser import ImageFileHelper
from synology.FileParser import VideoFileHelper

from db.MyCatalogEncoder import MyCatalogEncoder
"""
    Parse all the photos from your monitor folders in database.
    Extract every photo information and exif, then store in database.
"""

DefaultTimeZone = 'Asia/Taipei'
dbh = dbPhotoHelper()
tzh = TimeZoneHelper(DefaultTimeZone)
dth = DateTimeHelper()
dirs = dbh.getMonitorDirs()

def VideoProcess(DIR,BatchProcessDateTime,recursiveFalg):
    videofh = VideoFileHelper()

    i = 0
    j = 0
    files = videofh.getFiles(DIR,None,recursiveFalg)
    for f in files:
        dd = os.path.dirname(f)
        fname = os.path.basename(f)   
        ext = os.path.splitext(fname)[1]         
Ejemplo n.º 7
0
def InsertRootDir(folders):
    dbh = dbPhotoHelper()
    for folder in folders:
        dbh.insertDirIfNotExist((folder, True, False, None))