{ "info": { "author": "sina cloud storage", "author_email": "hanchao3@staff.sina.com.cn", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Internet" ], "description": "#SinaStorage SDK\n\n[![Build Status](https://travis-ci.org/SinaCloudStorage/SinaStorage-SDK-Python.png?branch=master)](https://travis-ci.org/SinaCloudStorage/SinaStorage-SDK-Python)\n[![Coverage Status](https://coveralls.io/repos/SinaCloudStorage/SinaStorage-SDK-Python/badge.png)](https://coveralls.io/r/SinaCloudStorage/SinaStorage-SDK-Python)\n[![Build Status](https://pypip.in/v/scs-sdk/badge.png)](https://pypi.python.org/pypi/scs-sdk/)\n[![Egg Status](https://pypip.in/egg/scs-sdk/badge.svg)](https://pypi.python.org/pypi/scs-sdk/)\n\n\n##\u6982\u8ff0\n\u65b0\u6d6a\u4e91\u5b58\u50a8Python\u5e73\u53f0SDK\u4e3a\u7b2c\u4e09\u65b9\u5e94\u7528\u63d0\u4f9b\u4e86\u7b80\u5355\u6613\u7528\u7684API\u8c03\u7528\u670d\u52a1\uff0c\u4f7f\u7b2c\u4e09\u65b9\u5ba2\u6237\u7aef\u65e0\u9700\u4e86\u89e3\u590d\u6742\u7684\u9a8c\u8bc1\u673a\u5236\u5373\u53ef\u8fdb\u884c\u6388\u6743\u3001\u4e0a\u4f20\u3001\u4e0b\u8f7d\u7b49\u6587\u4ef6\u64cd\u4f5c\u3002\n\n##SDK \u73af\u5883\u8981\u6c42\n\n* Python 2.6\n* Python 2.7\n* Python 3.3\n* Python 3.4\n\n\n##SDK \u5b89\u88c5\n\n* \u901a\u8fc7pip\u5b89\u88c5:\n\n```\n$ pip install scs-sdk\n```\n\n* \u4e0b\u8f7d\u6e90\u7801\u5b89\u88c5\n\n```\n$ git clone https://github.com/SinaCloudStorage/SinaStorage-SDK-Python.git\n$ cd SinaStorage-SDK-Python\n$ python setup.py install\n```\n\n##\u5feb\u901f\u4e0a\u624b\n\n###1. \u521b\u5efabucket\u8bbf\u95ee\u5bf9\u8c61\uff1a\n```python\nfrom sinastorage.bucket import SCSBucket\nimport sinastorage\n\n#\u8bbe\u7f6eaccess_key,secret_key\nsinastorage.setDefaultAppInfo('\u4f60\u7684accesskey', '\u4f60\u7684secretkey')\ns = SCSBucket('bucket\u7684\u540d\u79f0',secure=False)\t# secure=True \u91c7\u7528https\u8bbf\u95ee\u65b9\u5f0f\nprint s \n#\n```\n\n###2. bucket \u64cd\u4f5c:\n* \u521b\u5efabucket\n```python\ns = SCSBucket('\u9700\u8981\u521b\u5efa\u7684bucket\u540d\u79f0')\ns.put_bucket()\n```\n* \u5220\u9664bucket:\n```python\ns = SCSBucket('\u9700\u8981\u5220\u9664\u7684bucket\u540d\u79f0')\ns.delete_bucket()\n```\n* \u5217\u51fa\u6240\u6709bucket:\n```python\ns = SCSBucket()\t\t\t\t\t\t\t#\u6b64\u5904\u4e0d\u8981\u586b\u5199\u4efb\u4f55bucket\u540d\u79f0\nbuckets_generator = s.list_buckets()\t#\u8fd4\u56degenerator\uff0c\u76f4\u63a5\u8fed\u4ee3\u5373\u53ef\nfor bucket in buckets_generator:\n print bucket\n\n#(bucketName,creationDate)\t\t\t\t#tuple\u7c7b\u578b\n```\n\n* \u83b7\u53d6bucket Meta\u4fe1\u606f:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\nmetaDict = s.meta()\nprint metaDict\n#{u'DeleteQuantity': 186, u'DeleteCapacity': 1699524638, u'Capacity': 2657406529, u'PoolName': u'plSAE', u'ProjectID': 4174, u'SizeC': 0, u'DownloadCapacity': 7327841538, u'UploadQuantity': 240, u'CapacityC': 0, u'ACL': {u'GRPS000000ANONYMOUSE': [u'read', u'write_acp'], u'SINA0000001001NHT3M7': [u'read', u'write', u'read_acp', u'write_acp'], u'GRPS0000000CANONICAL': [u'read', u'write', u'read_acp', u'write_acp']}, u'Project': u'test11', u'UploadCapacity': 4356931167, u'RelaxUpload': True, u'DownloadQuantity': 2546, u'Last-Modified': u'Fri, 28 Mar 2014 09:07:45 UTC', u'QuantityC': 0, u'Owner': u'SINA000000xxxxxxx', u'Quantity': 54}\n\n```\n\n###3. object \u64cd\u4f5c:\n* \u4e0a\u4f20\u6587\u4ef6/\u5185\u5bb9:\n```python\n#\u6587\u4ef6\u5185\u5bb9\ns = SCSBucket('bucket\u7684\u540d\u79f0')\nscsResponse = s.put('\u6587\u4ef6\u4e0a\u4f20\u8def\u5f84',u'\u6587\u4ef6\u5185\u5bb9')\n\n#\u6587\u4ef6\ns = SCSBucket('bucket\u7684\u540d\u79f0')\ns.putFile('\u6587\u4ef6\u4e0a\u4f20\u8def\u5f84', '\u672c\u5730\u6587\u4ef6\u8def\u5f84', \u4e0a\u4f20\u56de\u8c03\u51fd\u6570)\n\n```\n* \u79d2\u4f20\u6587\u4ef6:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\ns.put_relax('\u6587\u4ef6\u4e0a\u4f20\u8def\u5f84', '\u88ab\u79d2\u4f20\u6587\u4ef6\u7684sina_sha1\u503c', \u88ab\u79d2\u4f20\u6587\u4ef6\u7684\u6587\u4ef6\u957f\u5ea6s_sina_length)\n```\n* \u590d\u5236\u6587\u4ef6:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\n#\u6ce8\u610f\uff1asource \u5fc5\u987b\u4ecebucket\u5f00\u59cb\uff0c\u5982\uff1a'/bucketname/file.txt'\ns.copy(source='/\u6e90\u6587\u4ef6bucket\u540d\u79f0/\u6e90\u6587\u4ef6uri\u5730\u5740', key='\u6587\u4ef6\u4e0a\u4f20\u8def\u5f84')\n```\n* \u5217\u6587\u4ef6\u76ee\u5f55:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\n#\u8fd4\u56degenerator\u5bf9\u8c61\nfiles_generator = s.listdir(prefix='\u6587\u4ef6\u540d\u524d\u7f00', marker='Key\u7684\u521d\u59cb\u4f4d\u7f6e', limit=\u8fd4\u56de\u6761\u6570, delimiter='\u6298\u53e0\u5b57\u7b26')\n\n#\u76f8\u5173\u4fe1\u606f\uff0c\u901a\u8fc7generator\u5c5e\u6027\u83b7\u5f97\nprint ('truncated : %r\\n'\n'marker:%r\\n'\n'prefix:%r\\n'\n'delimiter:%r\\n'\n'contents_quantity:%r\\n'\n'common_prefixes_quantity:%r\\n'\n'next_marker:%r'%(files_generator.truncated, \n files_generator.marker,\n files_generator.prefix,\n files_generator.delimiter,\n files_generator.contents_quantity,\n files_generator.common_prefixes_quantity,\n files_generator.next_marker))\n#\u5217\u76ee\u5f55\nfor item in files_generator:\n print item\n\n#(name, isPrefix, sha1, expiration_time, modify, owner, md5, content_type, size)\n```\n\n* \u4e0b\u8f7d\u6587\u4ef6:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\nresponse = s['a/asdf/\u65b0\u5efa \u6587\u672c\u6587\u6863.txt']\n#\u4fdd\u5b58\u6587\u4ef6\u81f3\u672c\u5730\nCHUNK = 16 * 1024\nwith open('\u672c\u5730\u76ee\u6807\u6587\u4ef6\u5730\u5740', 'wb') as fp:\n while True:\n chunk = response.read(CHUNK)\n if not chunk: break\n fp.write(chunk)\n \n```\n\n* \u5220\u9664\u6587\u4ef6:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\ndel s[\"\u9700\u8981\u5220\u9664\u7684\u6587\u4ef6\u8def\u5f84\"]\n```\n* \u83b7\u53d6\u6587\u4ef6\u4fe1\u606f:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\ninfo = s.info('\u670d\u52a1\u5668\u7aef\u6587\u4ef6\u8def\u5f84')\nprint info['mimetype']\n#application/pdf\nprint info['size']\n#2433230\nprint info\n#{'mimetype': 'application/pdf', 'modify': datetime.datetime(2014, 4, 1, 6, 58, 58), 'headers': {'content-length': '2433230', ...}, 'date': datetime.datetime(2014, 4, 1, 9, 14, 57), 'metadata': {'crc32': 'DDEF42FA', ...}, 'size': 2433230}\n```\n* \u4fee\u6539\u6587\u4ef6meta\u4fe1\u606f:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\ns.update_meta('\u670d\u52a1\u5668\u7aef\u6587\u4ef6\u8def\u5f84', {'\u81ea\u5b9a\u4e49\u5c5e\u6027\u540d':'\u81ea\u5b9a\u4e49\u5c5e\u6027\u503c','file_meta_key':'meta_value'})\n```\n* \u83b7\u53d6\u6587\u4ef6acl\u4fe1\u606f:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\nprint s.acl_info('\u670d\u52a1\u5668\u7aef\u6587\u4ef6\u8def\u5f84')\n#{u'Owner': u'SINA000000...', u'ACL': {u'GRPS000000ANONYMOUSE': [u'read'], u'GRPS0000000CANONICAL': [u'read_acp', u'write_acp']}}\n```\n* \u4fee\u6539\u6587\u4ef6acl\u4fe1\u606f:\n```python\nfrom sinastorage.bucket import SCSBucket,ACL\ns = SCSBucket('bucket\u7684\u540d\u79f0')\nacl = {}\nacl[ACL.ACL_GROUP_ANONYMOUSE] = [ACL.ACL_READ]\nacl[ACL.ACL_GROUP_CANONICAL] = [ACL.ACL_READ_ACP,ACL.ACL_WRITE_ACP]\n\ns.update_acl('\u670d\u52a1\u5668\u7aef\u6587\u4ef6\u8def\u5f84', acl)\n```\n\n* \u83b7\u53d6\u6587\u4ef6Meta\u4fe1\u606f:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\nmetaDict = s.meta('\u670d\u52a1\u5668\u7aef\u6587\u4ef6\u8def\u5f84')\nprint metaDict\n#{u'Info': None, u'File-Name': u'aaaa.txt', u'Info-Int': None, u'Content-MD5': u'86924f3b03cc23f04bcb3f3c1e13e57e', u'Last-Modified': u'Fri, 04 Jul 2014 06:49:03 UTC', u'Content-SHA1': u'9b8c7c8b7654339d3301d95945a6933212bb50b0', u'Owner': u'SINA000000xxxxxxx', u'Type': u'application/octet-stream', u'File-Meta': {u'Content-Type': u'application/octet-stream', u'x-amz-meta-crc32': u'75414E4E'}, u'Size': 5253200}\n\n```\n\n* \u5206\u7247\u4e0a\u4f20:\n\n```python\nfrom sinastorage.bucket import SCSBucket,ACL\ns = SCSBucket('bucket\u7684\u540d\u79f0')\ns.multipart_upload('\u670d\u52a1\u5668\u7aef\u6587\u4ef6\u8def\u5f84', '\u672c\u5730\u6587\u4ef6\u8def\u5f84')\n```\n\n* \u5217\u51fa\u5df2\u7ecf\u4e0a\u4f20\u7684\u6240\u6709\u5206\u5757:\n\n```python\nfrom sinastorage.bucket import SCSBucket,ACL\ns = SCSBucket('bucket\u7684\u540d\u79f0')\nprint s.list_parts('upload_id', '\u670d\u52a1\u5668\u7aef\u6587\u4ef6\u8def\u5f84')\n```\n\n\n###4. URL\u7b7e\u540d\u5de5\u5177:\n* \u65e0\u7b7e\u540d\u4fe1\u606fURL:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\nprint s.make_url('\u5f85\u751f\u6210url\u5730\u5740\u7684\u6587\u4ef6\u8def\u5f84')\n```\n* \u542b\u7b7e\u540d\u4fe1\u606fURL:\n```python\ns = SCSBucket('bucket\u7684\u540d\u79f0')\nprint s.make_url_authed('\u5f85\u751f\u6210url\u5730\u5740\u7684\u6587\u4ef6\u8def\u5f84')\n```", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/SinaCloudStorage/SinaStorage-SDK-Python", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://open.sinastorage.com/", "keywords": "sina,scs,sinacloudstorage", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "scs-sdk", "package_url": "https://pypi.org/project/scs-sdk/", "platform": "Posix; MacOS X; Windows", "project_url": "https://pypi.org/project/scs-sdk/", "project_urls": { "Download": "https://github.com/SinaCloudStorage/SinaStorage-SDK-Python", "Homepage": "http://open.sinastorage.com/" }, "release_url": "https://pypi.org/project/scs-sdk/1.1.6/", "requires_dist": null, "requires_python": null, "summary": "Python SDK For \u65b0\u6d6a\u4e91\u5b58\u50a8", "version": "1.1.6" }, "last_serial": 1306876, "releases": { "1.1.0": [ { "comment_text": "", "digests": { "md5": "014835b2e2b8fe4d93654c4cfc75512a", "sha256": "74a95abcd27858b389cd26f5b4338c11434d5c9773d25047cdf8e77f996a49f0" }, "downloads": -1, "filename": "scs-sdk-1.1.0.tar.gz", "has_sig": false, "md5_digest": "014835b2e2b8fe4d93654c4cfc75512a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15337, "upload_time": "2014-10-20T08:57:15", "url": "https://files.pythonhosted.org/packages/a3/f1/575ef8a6198eae9ac2b9b84fb0a531dc3f6c4ac6e4e68628e0c884efe728/scs-sdk-1.1.0.tar.gz" } ], "1.1.0a.dev1": [ { "comment_text": "", "digests": { "md5": "68437e92eda9722a539bd2938d109d42", "sha256": "08e4fc60ce628cb58da9ad73b1c8b1dbcdabea6a78616f13f8208fca3efb5bc5" }, "downloads": -1, "filename": "scs-sdk-1.1.0a.dev1.tar.gz", "has_sig": false, "md5_digest": "68437e92eda9722a539bd2938d109d42", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15142, "upload_time": "2014-10-14T07:25:40", "url": "https://files.pythonhosted.org/packages/60/19/0fa61a48572c1d54202f70c83ef4285b17ff349a9f162bb7b6b831b28243/scs-sdk-1.1.0a.dev1.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "14a6741c0d78314cae9f8dc805ecebed", "sha256": "98f4842ba67788cf9e5bb01c23d2e5e3842b6432e1e72ca7303e564dd02206ec" }, "downloads": -1, "filename": "scs-sdk-1.1.6.tar.gz", "has_sig": false, "md5_digest": "14a6741c0d78314cae9f8dc805ecebed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26575, "upload_time": "2014-11-14T10:57:36", "url": "https://files.pythonhosted.org/packages/cc/4a/3c69023825f70186fd58495dac0fa4aa73628df435e36f2bcb40d8c2c058/scs-sdk-1.1.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "14a6741c0d78314cae9f8dc805ecebed", "sha256": "98f4842ba67788cf9e5bb01c23d2e5e3842b6432e1e72ca7303e564dd02206ec" }, "downloads": -1, "filename": "scs-sdk-1.1.6.tar.gz", "has_sig": false, "md5_digest": "14a6741c0d78314cae9f8dc805ecebed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26575, "upload_time": "2014-11-14T10:57:36", "url": "https://files.pythonhosted.org/packages/cc/4a/3c69023825f70186fd58495dac0fa4aa73628df435e36f2bcb40d8c2c058/scs-sdk-1.1.6.tar.gz" } ] }