diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3ac5111 --- /dev/null +++ b/.gitignore @@ -0,0 +1,99 @@ +# Byte-compiled / optimized / DLL files +.DS_Store +__pycache__/ +*.py[cod] +*$py.class +*.swp +*.swo +run-colorfy + +# C extensions +*.so +.idea/ + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +# lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# IPython Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# dotenv +.env + +# virtualenv +.venv/ +venv/ +ENV/ + +# Spyder project settings +.spyderproject + +# Rope project settings +.ropeproject + +# App +_app.py +apps/ diff --git a/Dropzone Action/Qiniu.dzbundle/action.py b/Dropzone Action/Qiniu.dzbundle/action.py index ea1fb7a..7328ee4 100755 --- a/Dropzone Action/Qiniu.dzbundle/action.py +++ b/Dropzone Action/Qiniu.dzbundle/action.py @@ -9,14 +9,16 @@ # KeyModifiers: Command, Option, Control, Shift # SkipConfig: No # RunsSandboxed: No -# Version: 1.2 +# Version: 1.2.1 # UniqueID: 0830 # MinDropzoneVersion: 3.5 +# Modify: Mush Mo import os import sys import commands import shutil +import hashlib import imghdr import webbrowser from qiniu import Auth @@ -26,58 +28,58 @@ reload(sys) sys.setdefaultencoding('utf8') query = None + + def getAuth(): global query - if query != None: + if query is not None: return query access_key = os.environ['username'] secret_key = os.environ['password'] query = Auth(access_key, secret_key) return query + def isFileExist(file_name): - q = getAuth() # check if file already exist bucket_name = os.environ['server'] bucket = BucketManager(getAuth()) ret, info = bucket.stat(bucket_name, file_name) - if ret != None: + if ret is not None: return True else: return False + def uploadFile(file_path, file_name): - q = getAuth() + qiniu_auth = getAuth() bucket_name = os.environ['server'] if isFileExist(file_name): dz.fail("Filename already exist") + if 'remote_path' in os.environ: + file_name = '{}/{}'.format(os.environ['remote_path'], file_name) - token = q.upload_token(bucket_name, file_name) + token = qiniu_auth.upload_token(bucket_name, file_name) ret, info = put_file(token, file_name, file_path) if info.status_code == 200: - bucket_domain = os.environ.get('root_url', '') - base_url = 'http://%s/%s' % (bucket_domain, file_name) - - # copy file to local path as backup - if 'remote_path' in os.environ: - dest_path = '%s/%s' % (os.environ['remote_path'], file_name) - shutil.copyfile(file_path, dest_path) - + root_url = os.environ.get('root_url', '') + base_url = '{}/{}'.format(root_url, file_name) return base_url else: return False + def dragged(): dz.begin("Starting uploading...") dz.determinate(True) dz.percent(10) - + # keep origin name - file_path = items[0] + file_path = items[0] # noqa file_name = os.path.basename(file_path) - base_url = uploadFile(file_path, file_name) + base_url = uploadFile(file_path, file_name) if base_url: dz.finish("Upload Completed") @@ -87,7 +89,8 @@ def dragged(): dz.fail("Upload Failed") dz.percent(100) dz.url(False) - + + def clicked(): dz.percent(10) @@ -96,15 +99,18 @@ def clicked(): command = '"%s/pngpaste" "%s"' % (current_path, file_path) status, output = commands.getstatusoutput(command) if (status != 0): - webbrowser.open("https://portal.qiniu.com/bucket/" + os.environ['server'] + "/resource") + webbrowser.open("https://portal.qiniu.com/bucket/" + + os.environ['server'] + "/resource") dz.fail(output) - file_name = dz.inputbox("Filename Required", "Enter filename without suffix:") + with open(file_path) as f_img: + file_name = hashlib.md5(f_img.read()).hexdigest() file_name = file_name + '.' + imghdr.what(file_path) while True: if isFileExist(file_name): - file_name = dz.inputbox("Filename already exist", "Enter filename without suffix:") + file_name = dz.inputbox( + "Filename already exist", "Enter filename without suffix:") file_name = file_name + '.' + imghdr.what(file_path) else: break diff --git a/README.md b/README.md index 43b9ae7..97dbc01 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -Scripts -======= +Dropzone 上传七牛的插件 +=================== -some script files +这是一个上传图片到七牛的Dropzone插件, 在原作上做了一些修改, 配置方法见下图 + +![example](https://olob4plt2.qnssl.com/dropzoneupload/926bb31d9cfb265dbacf9bd7a6c4071c.png)