Skip to content

Instantly share code, notes, and snippets.

@mursts
Created November 3, 2012 06:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mursts/4006307 to your computer and use it in GitHub Desktop.
Save mursts/4006307 to your computer and use it in GitHub Desktop.
Dropboxの"Camera Uploads"にアップロードされた写真・動画ファイルを日付フォルダに振り分ける
#!/usr/bin/env python
# coding:utf-8
import os
import time
import re
import shutil
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
WATCH_DIR = os.path.join(os.environ['HOME'], "Dropbox/Camera Uploads/")
FILENAME_MATCHER = re.compile('/([\d]{4}-[\d]{2})-([\d]{2}).*\.(jpg|png|mp4)$')
def move_file(src):
try:
if not os.path.exists(src):
return
m = FILENAME_MATCHER.search(src)
if m:
save_dir_name = m.group(1)
save_dir = os.path.join(WATCH_DIR, save_dir_name)
if not os.path.exists(save_dir):
os.makedirs(save_dir, 0755)
shutil.move(src, save_dir)
except Exception:
pass
class EventHandler(FileSystemEventHandler):
def on_created(self, event):
move_file(event.src_path)
def on_modified(self, event):
move_file(event.src_path)
def main():
event_handler = EventHandler()
observer = Observer()
observer.schedule(event_handler, WATCH_DIR)
observer.start()
try:
while True:
time.sleep(10)
except (Exception, KeyboardInterrupt):
observer.stop()
observer.join()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment