GrabBox는 Sierra로 인해 이동할 수 없습니다.

11353 단어 GrabBoxMacPython

개요

  • 지금까지도 Mac에서 GrabBox라는 포획 도구를 사용하고 있다http://d.hatena.ne.jp/tell-k/20110523/1306166332
  • Sierra OS의 경우 OS가 이동하지 않습니다.(정말 시라의 잘못인지 수수께끼) 슬픔
  • 응급대책을 먼저 했기 때문에 필기를 한다
  • 정황

  • GrabBox는 정상적으로 설치되어 있지만 Shift+Cmd+4에서 포착되더라도 이미지 파일은 Dropbox에 저장되지 않습니다
  • Droppox에 있는 GrabBox의 응용프로그램 디렉토리에 이미지 파일을 직접 배치한 뒤 공개된 것을 확인할 수 있다.
  • 대응

  • 포획 후 Dropbox의 예정 디렉터리로 이미지를 이동할 수 있다면 이전의 사용 편의와 일치할 수 있습니다.
  • Mac로 캡처의 저장 위치를 변경할 수 있기 때문에 파이톤에서 다음과 같은 스크립트를 준비했습니다.
  • 캡처의 저장 위치를 특정한 축소판으로 설정
  • 특정한 세부 사항을 감시하고 파일 제작(watchdog)
  • 생성된 파일이 이미지인 경우 고유한 이름으로 적절하게 이름 변경
  • Retine의 이미지 크기가 2배인 것 같아서 1/2(Pillow)로 조정
  • 크기 조정된 이미지를 Dropbox의 GrabBox의 Dicret
  • 으로 이동
  • Dropbox 공개를 위한 URL 생성
  • 클립보드에 공개 URL 복사하기
  • 대본 내용은 이런 느낌이에요.
    move2dropbox.py
    # -*- coding: utf-8 -*-
    import time
    import os
    import uuid
    import shutil
    import subprocess
    
    from PIL import Image
    from watchdog.observers import Observer
    from watchdog.events import FileSystemEventHandler
    
    here = os.path.abspath(os.path.dirname(__file__))
    HOME_DIR = os.path.expanduser('~')
    
    SCREENSHOT_DIR = os.path.join(here, 'screenshot')
    DROPBOX_DIR = os.path.join(HOME_DIR, 'Dropbox', 'アプリ', 'GrabBox')
    DROPBOX_URL = 'https://dl.dropboxusercontent.com/spa/xxxxxxxxx/'
    
    CMD_LOCATION = 'defaults write com.apple.screencapture location {}'.format(SCREENSHOT_DIR)  # NOQA
    CMD_NAME = 'defaults write com.apple.screencapture name "grabox"'
    CMD_KILLALL = 'killall SystemUIServer'
    
    
    def resize_for_retina(imgfile):
        img = Image.open(imgfile)
        resized = img.resize([int(0.5 * s) for s in img.size])
        resized.save(imgfile)
    
    
    class MyHandler(FileSystemEventHandler):
        def on_created(self, event):
            for img in os.listdir(SCREENSHOT_DIR):
                if not img.endswith('.png'):
                    continue
                new_img = '{}.png'.format(uuid.uuid4().hex)
                resize_for_retina(os.path.join(SCREENSHOT_DIR, img))
                shutil.move(
                    os.path.join(SCREENSHOT_DIR, img),
                    os.path.join(DROPBOX_DIR, new_img)
                )
                subprocess.call(
                    'echo "{}" | pbcopy'.format(DROPBOX_URL + new_img),
                    shell=True
                )
    
    if __name__ == "__main__":
        if not os.path.exists(SCREENSHOT_DIR):
            os.makedirs(SCREENSHOT_DIR)
    
        subprocess.call(CMD_LOCATION, shell=True)
        subprocess.call(CMD_NAME, shell=True)
        subprocess.call(CMD_KILLALL, shell=True)
    
        observer = Observer()
        observer.schedule(MyHandler(), path=SCREENSHOT_DIR, recursive=False)
        observer.start()
        try:
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            observer.stop()
        observer.join()
    
    마지막으로 백스테이지에서 이 스크립트를 두드리는 조개 스크립트를 만듭니다.
    move2dropbox.command
    nohup python /path/to/move2dropbox.py > /dev/null 2>&1 &
    
    ".command"확장자로 시스템 환경 사용자 및 그룹 > 로그인 항목에 등록

    이렇게 로그인하면 위의 모니터링 스크립트가 임의로 실행됩니다.

    총결산

  • 추천하는 포획 도구를 바로 알려주세요
  • 추기 (2016/10/31)


    추천한 물건을 열거하다
  • Monosnap( https://monosnap.com/welcome )
  • Screenpresso( http://www.screenpresso.com/ ) Windows and iOS only
  • 끝맺다

    좋은 웹페이지 즐겨찾기