{ "info": { "author": "HuangBiao", "author_email": "19941222hb@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "qiniu storage asynchronous sdk for tornado\n=================================================\n\n.. image:: https://img.shields.io/github/license/mashape/apistatus.svg\n :target: LICENSE\n\n\nInstallation\n---------------\n\n.. code-block:: bash\n\n $ python3.x setup.py install\n\n\nor\n\n.. code-block:: bash\n \n $ pip3.x install tornado_qiniu\n\n\nEnvironment\n-------------------\n\n.. list-table::\n :widths: 50 50\n :header-rows: 1\n\n * - tornado_qiniu version \n - python version\n * - 1.0\n - 3.4,3.5\n\n\nQuick Start\n---------------------\n\nResource Upload and Download\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n from tornado import gen,ioloop\n from tornado_qiniu import QiniuClient\n\n access_key = \"your qiniu access key\"\n secret_key = \"your qiniu secret key\"\n bucket_name = \"your bucket name\"\n domain = \"your domain\"\n bucket_acp = 0 #bucket access property,1 ===>private bucket,0===>public bucket\n\n client = QiniuClient(access_key, secret_key, domain)\n loop = ioloop.IOLoop.current()\n\n #get a bucket instance\n bucket = client.bucket(bucket_name, bucket_acp=1)\n\n #get bucket upload token\n bucket.upload_token()\n\n # get resource url\n bucket.res(\"resource_key\").url()\n bucket.res('key1','key2').url()\n\n # download resource\n @gen.coroutine\n def get_resource():\n response = yield bucket.res(\"resource_key\").get() #return saved name\n # get multi resource \n response = yield bucket.res('key1','key2').get() #return a list of the saved name\n loop.run_sync(get_resource)\n\n # upload resource\n @gen.coroutine\n def upload():\n #when file's size greater than 4MB,using shard uploading \n #after uploading successfully,return key name and file hash value\n response = yield bucket.res(\"key\").put(\"./testfile\") #return resource hash value,and key\n\n loop.run_sync(upload)\n loop.close()\n\n\nResource Management\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n from tornado import gen,ioloop\n from tornado_qiniu import QiniuClient\n\n access_key = \"your qiniu access key\"\n secret_key = \"your qiniu secret key\"\n bucket_name = \"your bucket name\"\n domain=\"your domain\"\n bucket_acp = 0 #bucket access property,1 ===>private bucket,0===>public bucket\n\n client = QiniuClient(access_key,secret_key,domain)\n bucket = client.bucket(bucket_name,bucket_acp=bucket_acp)\n loop = ioloop.IOLoop.current()\n\n #single resource management\n @gen.coroutine\n def single_resource_manage():\n #resource state\n state = yield bucket.res('key').stat()\n\n #resource deleting\n yield bucket.res('key').delete()\n\t\n #resource moving\n yield bucket.res('src_key').moveto('dest_key', 'dest_bucket')\n\t\n #resource coping\n yield bucket.res('src_key').copyto('dest_key', 'dest_bucket')\n loop.run_sync(single_resource_manage)\n\t\n #multi resource management\n @gen.coroutine\n def multi_resource_manage():\n #multi resource state\n state = yield bucket.res('key1', 'key2', 'key3').multi_stat()\n\t\n #multi resource deleting\n yield bucket.res('key1', 'key2', 'key3').multi_delete()\n\t\n #multi resource coping\n yield bucket.res(*['key1', 'key2']).multi_copyto(['dest_key1', 'dest_key2'],'dest_bucket')\n\t\n #multi resource moving\n yield bucket.res('key1', 'key2').multi_moveto(['dest_key1', 'dest_key2'],'dest_bucket')\n loop.run_sync(multi_resource_manage)\n\n # resource management batch operation\n @gen.coroutine\n def batch_ops():\n #get batch instance\n batch = bucket.res().batch()\n batch.stat('keyname1')\t\n batch.delete('keyname2')\n #execute batch\n yield batch.execute()\n\t\n #multi resource batch operation\n batch = bucket.res('key1', 'key2').batch()\n batch.multi_stat()\n batch.multi_copy(['dest_key1', 'dest_key2'], 'dest_bucket')\n batch.multi_move(['dest_key1', 'dest_key2'], 'dest_bucket')\n\n #list all resources in current bucket\n batch.list()\n #execute batch ,return json format data\n yield bacth.execute()\n loop.run_sync(batch_ops)\n\n\nResource Process\n^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n from tornado import gen,ioloop\n from tornado_qiniu import QiniuClient\n\n access_key = \"your qiniu access key\"\n secret_key = \"your qiniu secret key\"\n bucket_name = \"your bucket name\"\n domain=\"your domain\"\n bucket_acp = 0 #bucket access property,1 ===>private bucket,0===>public bucket\n\n client = QiniuClient(access_key,secret_key,domain)\n bucket = client.bucket(bucket_name,bucket_acp=bucket_acp)\n loop = ioloop.IOLoop.current()\n\n # get resource info\n @gen.coroutine\n def get_info():\n \n # get image info\n imginfo = yield bucket.res(\"dummy_img_key\").imageinfo().get()\n \n # get image ave\n imgave = yield bucket.res(\"dummy_img_key\").imageave().get()\n \n # get image exif\n imgexif = yield bucket.res(\"dummy_img_key\").imageexif().get()\n \n loop.run_sync(get_info)\n\n # resource fops\n @gen.coroutine\n def resource_fops():\n # resource qrcode url\n qrcodeurl = bucket.res(\"dummy_img_key\").fops().qrcode().url()\n \n # get resource qrcode img\n qrcodeimg = yield bucket.res(\"dummy_img_key\").fops().qrcode().get()\n\n # resource text_watermark\n text_watermark_url = bucket.res(\"dummy_img_key\").fops().text_watermark(\"dummy\").url()\n text_watermark_img = yield bucket.res(\"dummy_img_key\").fops().text_watermark(\"dummy\").get()\n\n # resource image watermark\n img_url = bucket.res(\"water_img\").url()\n watered_img_url = bucket.res(\"dummy_img_key\").fops().image_watermark(img_url).url()\n waterd_img = yield bucket.res(\"dummy_img_key\").fops().image_watermark(img_url).get()\n \n # resource fops saveas\n saveas_url = bucket.res(\"dummy_key\").fops().text_watermark(\"dummy\").saveas(\"dummy_watermark\").url()\n yield bucket.res(\"dummy_key\").fops().text_watermark(\"dummy\").saveas(\"dummy_watermark\").get()\n\n # resource fops persistent\n \n # audio/vedio slice operation, the detail args refer to:\n # http://developer.qiniu.com/code/v6/api/dora-api/av/segtime.html\n\n yield bucket.res(\"dummy_av\").fops().avthumb_slice(no_domain=1).persistent()\n \n # audio/vedio transcoding operation,the detail args refer to:\n # http://developer.qiniu.com/code/v6/api/dora-api/av/avthumb.html\n yield bucket.res(\"dummy_av\").fops().avthumb_transcoding(\"mp3\").persistent()\n \n # audio/vedio concat operation,the detail args refer to :\n # http://developer.qiniu.com/code/v6/api/dora-api/av/avconcat.html\n yield bucket.res(\"dummy_av\").fops().avconcat(mode=2, frmt=\"mp4\", url1=\"http://**\",url2=\"http://**\").persistent()\n \n # audio/vedio vframe operation ,the detail args refer to:\n # http://developer.qiniu.com/code/v6/api/dora-api/av/vframe.html\n yield bucket.res(\"dummy_av\").fops().vframe(\"jpg\", 200, w=1000, h=3030).persistent()\n \n # get audio/vedio information\n avinfo = yield bucket.res(\"dummy_av\").avinfo().get()\n avinfo_url = bucket.res(\"dummy_av\").avinfo().url()\n\n # prefop interface\n response = yield bucket.res(\"key1\").prefop(\"persistent_id\")\n \n\nLicense\n-----------------\n\n`MIT License `_", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/free-free/tornaqiniu", "keywords": "tornado,qiniu,sdk", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "tornado_qiniu", "package_url": "https://pypi.org/project/tornado_qiniu/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/tornado_qiniu/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/free-free/tornaqiniu" }, "release_url": "https://pypi.org/project/tornado_qiniu/1.2/", "requires_dist": null, "requires_python": null, "summary": "An asynchronous qiniu cloud storage sdk for tornado", "version": "1.2" }, "last_serial": 2292769, "releases": { "1.1": [], "1.2": [ { "comment_text": "", "digests": { "md5": "1ca3508a1ffabd509d11c8afdc468414", "sha256": "a8d75a34ded41f28d92b29cbaf6ce7ae25ba0553eabdef4ded57191765cda881" }, "downloads": -1, "filename": "tornado_qiniu-1.2.tar.gz", "has_sig": false, "md5_digest": "1ca3508a1ffabd509d11c8afdc468414", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18253, "upload_time": "2016-08-20T16:59:09", "url": "https://files.pythonhosted.org/packages/e4/ca/60af0093227fb82013e553af1458eb5b48d65649189f52094794b717f81b/tornado_qiniu-1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1ca3508a1ffabd509d11c8afdc468414", "sha256": "a8d75a34ded41f28d92b29cbaf6ce7ae25ba0553eabdef4ded57191765cda881" }, "downloads": -1, "filename": "tornado_qiniu-1.2.tar.gz", "has_sig": false, "md5_digest": "1ca3508a1ffabd509d11c8afdc468414", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18253, "upload_time": "2016-08-20T16:59:09", "url": "https://files.pythonhosted.org/packages/e4/ca/60af0093227fb82013e553af1458eb5b48d65649189f52094794b717f81b/tornado_qiniu-1.2.tar.gz" } ] }