2016-09-26 8 views
1

私は、以下のスクリプトを使用して、既存のメディアファイルをHandBrake CLIを使用してMP4に再エンコードしています。それは長いプロセスになるだろうから、過去7日間に作成されたファイルやファイル拡張子の他のフィルタをキャプチャして新しいコンテンツを更新できるようにしたいのですが、古いコンテンツは異なる時間に別々のスクリプトで実行できます。過去7日間に作成されたファイルのみをキャプチャするには、スクリプトで何を変更する必要がありますか?Pythonで過去x日間に変更されたファイルをキャプチャします

import os 
import time 
import subprocess 
import sys 
import httplib 
import urllib 
from xml.dom import minidom 
import logging 
import datetime 

#Script Directory setup 
myDateTime = datetime.datetime.now().strftime("%y-%m-%d-%H-%M") 
logdir = 'D:\\logs\\' 
logfile = logdir + 'TV_encode-' + myDateTime + '.log' 

#Log Handler Setup 
logger = logging.getLogger('TV_encode') 
hdlr = logging.FileHandler(logfile) 
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') 
hdlr.setFormatter(formatter) 
logger.addHandler(hdlr) 
logger.setLevel(logging.INFO) 

logger.info('Getting list of files to re-encode...') 
fileList = [] 
rootdir = 'T:\\' 
logger.info('Using %s as root directory for scan...' % rootdir) 
for root, subFolders, files in os.walk(rootdir): 
    for file in files: 
     theFile = os.path.join(root,file) 
     fileName, fileExtension = os.path.splitext(theFile) 
     if fileExtension.lower() in ('.avi', '.divx', '.flv', '.m4v', '.mkv', '.mov', '.mpg', '.mpeg', '.wmv'): 
      print 'Adding',theFile 
      logger.info('Adding %s to list of file to re-encode.' % theFile) 
      fileList.append(theFile) 

runstr = '"C:\\Program Files\\Handbrake\\HandBrakeCLI.exe" -i "{0}" -o "{1}" --preset="Normal" --two-pass --turbo' 

print '=======--------=======' 
logger.info('=======--------=======') 
logger.info('Starting processing of files...') 

while fileList: 
    inFile = fileList.pop() 
    logger.info('Original file: %s' % inFile) 
    fileName, fileExtension = os.path.splitext(inFile) 
    outFile = fileName+'.mp4' 
    logger.info('New file: %s' % outFile) 

    print 'Processing',inFile 
    logger.info('Processing %s' % inFile) 
    returncode = subprocess.call(runstr.format(inFile,outFile)) 
    time.sleep(5) 
    print 'Removing',inFile 
    logger.info('Removing %s' % inFile) 
    os.remove(inFile) 

    logger.info('Sending Pushover notification...') 
    conn = httplib.HTTPSConnection("api.pushover.net:443") 
    conn.request("POST", "/1/messages.json", 
       urllib.urlencode({ 
        "token": "TOKENHERE", 
        "user": "USERKEY", 
        "message": "Re-encoding complete for %s" % fileName, 
       }), {"Content-type": "application/x-www-form-urlencoded"}) 
    conn.getresponse() 

答えて

1

os.path.getmtime(filename)エポックからの変更時間を秒単位で表示します。

datetimeモジュールを使用してdatetimeオブジェクトに変換し、通常どおりに比較します。

import datetime 
import os 

ONE_WEEK_AGO = datetime.datetime.today() - datetime.timedelta(days=7) 

mod_date = datetime.datetime.fromtimestamp(os.path.getmtime(theFile)) 
if mod_date > ONE_WEEK_AGO: 
    # use the file. 
+0

ありがとうございます!ちょっと丁寧に言うと、 'mod_date> ONE_WEEK_AGO'の比較を既存の' if'文に 'と'句として追加しなければなりませんでした。 – user3492006

関連する問題