{ "info": { "author": "liu xue yan", "author_email": "liu_xue_yan@foxmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Communications :: File Sharing", "Topic :: Internet" ], "description": ":Source: https://github.com/tanbro/aliyunoss2-autoupload\n:Package: https://pypi.org/project/aliyunoss2-autoupload/\n\n|Circle CI| |Codacy| |Codacy Coverage| |PYPI Version| |PYPI License| |PYPI Python Versions| |PYPI Status| |PYPI Format|\n\naliyunoss2-autoupload\n#####################\n\nMonitor files by wildcard patterns, upload them to ALIYUN OSS, then move to backup directory.\n\nUsage\n*****\n\nCommand Line\n============\n\nAfter the package installed, run the command in a terminator, show help messages\n\n.. code-block:: console\n\n $ aliyunoss2-autoupload --help\n\n usage: aliyunoss2-autoupload [-h] [--version] {run,echo_config_sample} ...\n\n Watch files in a directory and upload them to Aliyun OSS on file writing\n completed\n\n optional arguments:\n -h, --help show this help message and exit\n --version show program's version number and exit\n\n subcommands:\n\n {run,echo_config_sample}\n Print the help of sub_commands\n run Start to run then program. It will monitor and upload\n files continuously.\n echo_config_sample Echo configure file sample\n\n.. code-block:: console\n\n $ aliyunoss2-autoupload run --help\n\n usage: aliyunoss2-autoupload run [-h] [--only-once]\n [--config-file CONFIG_FILE]\n [--logging-config-file LOGGING_CONFIG_FILE]\n\n optional arguments:\n -h, --help show this help message and exit\n --only-once, -o Upload only once, then exit. Will NOT monitor files.\n (default=False)\n --config-file CONFIG_FILE, -c CONFIG_FILE\n The program configuration file. The program will first\n try to load configuration file by environment variable\n ${ALIYUNOSS2_AUTOUPLOAD_CONF}. If the environment\n variable not assigned, then try to load configuration\n file \"conf/aliyunoss2-autoupload.yml\"\n --logging-config-file LOGGING_CONFIG_FILE, -l LOGGING_CONFIG_FILE\n The logging configuration file. The program will first\n try to load logging configuration file by environment\n variable ${ALIYUNOSS2_AUTOUPLOAD_LOG_CONF}. If the\n environment variable not assigned, then try to load\n configuration file\n \"conf/aliyunoss2-autoupload.log.yml\"\n\n\n.. code-block:: console\n\n $ aliyunoss2-autoupload echo_config_sample --help\n\n usage: aliyunoss2-autoupload echo_config_sample [-h] {prog,log}\n\n positional arguments:\n {prog,log} Configure file to echo\n\n optional arguments:\n -h, --help show this help message and exit\n\nConfiguration File\n==================\n\nThe program will first try to load configuration file from environment variable ``ALIYUNOSS2_AUTOUPLOAD_CONF``.\nIf the environment variable not assigned, then try to load configuration file `\"conf/aliyunoss2-autoupload.yml\"`.\n\nThe YAML_ file is like blow:\n\n.. code-block:: yaml\n\n ---\n\n ## Aliyun OSS configs\n oss:\n ## Name of your Aliyun OSS bucket\n name: \"your_bucket_name\"\n ## Endpoint URL of Aliyun OSS bucket\n endpoint: \"oss-xx-xxxxxx.aliyuncs.com\"\n ## cname of the domain of Aliyun OSS bucket. Empty if no cname.\n cname: \"\"\n ## Access Key ID of Aliyun OSS bucket\n access_key_id: \"your_access_key_id\"\n ## Access Key Secret of Aliyun OSS bucket\n access_key_secret: \"your_access_key_secret\"\n\n ## Directory name configs\n dir:\n ## Calculate uploading file relative name by this local directory\n rel_dir: \"\"\n ## Upload files to OSS in this dir\n oss_dir: \"\"\n ## Move uploaded file the the directory. It MUST be a different dir from where the files are. If not, the file will be uploaded again and again.\n bak_dir: \"\"\n\n ## watcher configs\n watcher:\n ## The time interval(seconds) this program scan the directory\n interval: 30\n ## If the interval between the current time and the file\\'s modification time is greater than this value, the write is considered complete.\n write_complete_time: 30\n ## Pattern of the files to watch and upload\n patterns: \"files/*.*\"\n ## If find patterns recursively\n recursive: false\n ## pool of at most max_workers threads to execute upload/backup tasks. If max_workers is None or not given, it will default to the number of processors on the machine, multiplied by 5.\n max_workers: ~\n\nAlso, the program will first try to load logging configuration file by environment variable ``ALIYUNOSS2_AUTOUPLOAD_LOG_CONF``.\nIf the environment variable not assigned, then try to load configuration file `\"conf/aliyunoss2-autoupload.log.yml\"`.\n\nLogging config file is also YAML_.\nGo to https://docs.python.org/3/library/logging.config.html for more information about Python logging config.\n\n------\n\n.. _YAML: http://yaml.org/\n\n------\n\n.. |Circle CI| image:: https://circleci.com/gh/tanbro/aliyunoss2-autoupload.svg?style=svg\n :target: https://circleci.com/gh/tanbro/aliyunoss2-autoupload\n\n.. |Codacy| image:: https://api.codacy.com/project/badge/Grade/2fff1a8c9fd84366bffb92f026862dc2\n :target: https://www.codacy.com/app/tanbro/aliyunoss2-autoupload?utm_source=github.com&utm_medium=referral&utm_content=tanbro/aliyunoss2-autoupload&utm_campaign=Badge_Grade\n\n.. |Codacy Coverage| image:: https://api.codacy.com/project/badge/Coverage/2fff1a8c9fd84366bffb92f026862dc2\n :target: https://www.codacy.com/app/tanbro/aliyunoss2-autoupload?utm_source=github.com&utm_medium=referral&utm_content=tanbro/aliyunoss2-autoupload&utm_campaign=Badge_Coverage\n\n.. |PYPI Version| image:: https://img.shields.io/pypi/v/aliyunoss2-autoupload.svg\n :target: https://pypi.org/project/aliyunoss2-autoupload/\n\n.. |PYPI License| image:: https://img.shields.io/pypi/l/aliyunoss2-autoupload.svg\n :target: https://pypi.org/project/aliyunoss2-autoupload/\n\n.. |PYPI Python Versions| image:: https://img.shields.io/pypi/pyversions/aliyunoss2-autoupload.svg\n :target: https://pypi.org/project/aliyunoss2-autoupload/\n\n.. |PYPI Status| image:: https://img.shields.io/pypi/status/aliyunoss2-autoupload.svg\n :target: https://pypi.org/project/aliyunoss2-autoupload/\n\n.. |PYPI Format| image:: https://img.shields.io/pypi/format/aliyunoss2-autoupload.svg\n :target: https://pypi.org/project/aliyunoss2-autoupload/\n\nInstall\n*******\n\nInstall by pip\n==============\n\n::\n\n pip install aliyunoss2-autoupload\n\nInstall from code\n=================\n\n::\n\n git clone https://github.com/tanbro/aliyunoss2-autoupload.git\n cd aliyunoss2-autoupload\n path/of/your/python setup.py install\n\nChangelog\n*********\n\n0.1\n===\n\nAdded\n-----\n* Reload configuration every time before scanning files.\n* `--only-once` command line option.\n\nOptimized\n---------\n* test case for ``main()`` function\n\n0.1b2\n=====\n\n:Date: 2018-06-20\n\nAdds\n----\n* More detailed documents.\n\nBug Fixes:\n----------\n* Remove files in `.gitignore`, but tracked.\n\n0.1b1\n=====\n\n:Date: 2018-06-19\n\nChanges\n-------\n* Support old `Python 2.7`, `Python 3.4`\n* Config file name extension changed from ``\".yaml\"`` to ``\".yml\"``\n* Default config file environment variable name\n* Default config file path if no environment variable\n\nAdds\n----\n* Some simple test cases\n* CircleCI\n* Codacy\n\n0.1a3\n=====\nThe first ever-usable version.\n\n:Date: 2018-04-18\n\nChanges\n-------\n* Now Python 3.5+ ONLY, because ``glob.iglob`` has no ``recursive`` argument and ``\"**\"`` wildcard in lower Python version\n\nBug Fixes\n---------\n* Backup directory errors\n* OSS exception\n\nCONTRIBUTING\n************\n\nContributions are welcome!\n\nIt's advised to develop in venv_\n\n::\n\n /path/of/your/python -m venv .venv\n source .venv/bin/activate\n git clone git@github.com:tanbro/aliyunoss2-autoupload.git\n cd aliyunoss2-autoupload\n python setup.py develop\n\n.. _venv: https://docs.python.org/library/venv.html\n\nAuthors\n*******\n\n* liu xue yan \n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tanbro/aliyunoss2-autoupload", "keywords": "aliyun oss autoupload", "license": "AGPLv3+", "maintainer": "", "maintainer_email": "", "name": "aliyunoss2-autoupload", "package_url": "https://pypi.org/project/aliyunoss2-autoupload/", "platform": "", "project_url": "https://pypi.org/project/aliyunoss2-autoupload/", "project_urls": { "Homepage": "https://github.com/tanbro/aliyunoss2-autoupload" }, "release_url": "https://pypi.org/project/aliyunoss2-autoupload/0.1/", "requires_dist": [ "oss2 (>=2.2.0)", "PyYAML (>=3.12)", "marshmallow (>=3.0.0b1)", "futures; python_version <= \"2.7\"" ], "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "summary": "Monitor files by wildcard patterns, upload them to ALIYUN OSS, then move to backup directory.", "version": "0.1" }, "last_serial": 4010620, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "fe29dfbc09b1b38fbd6ce82bfa26e84f", "sha256": "1f25a702e7b465c1f6cec195595b49362060a2c6016dd25c81dff9ec9bac99ca" }, "downloads": -1, "filename": "aliyunoss2_autoupload-0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fe29dfbc09b1b38fbd6ce82bfa26e84f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 15583, "upload_time": "2018-06-28T09:33:56", "url": "https://files.pythonhosted.org/packages/11/b2/40f73bbe5b836f11fac7598417b1e93434c8f2d0ff169ea3f2320ba10933/aliyunoss2_autoupload-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3ac32503f2f678e6579a09c14569ebc", "sha256": "5fc6ba80443205a3e74e792fe63f33fb2d3ac93ca4973f651630011da9d79c94" }, "downloads": -1, "filename": "aliyunoss2-autoupload-0.1.tar.gz", "has_sig": false, "md5_digest": "e3ac32503f2f678e6579a09c14569ebc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 31918, "upload_time": "2018-06-28T09:33:57", "url": "https://files.pythonhosted.org/packages/3d/ae/e7d089863b9984b22bff07e65f86ccab3dbeb63757509e65e4ff8bc24dbb/aliyunoss2-autoupload-0.1.tar.gz" } ], "0.1a1": [ { "comment_text": "", "digests": { "md5": "6a11dd730fcadc22bd5ce77d762b13cb", "sha256": "3c432d44b34b3f037cd62bc4c2240ff0f88b90e21dd78859039559a472ef43fb" }, "downloads": -1, "filename": "aliyunoss2_autoupload-0.1a1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6a11dd730fcadc22bd5ce77d762b13cb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 9929, "upload_time": "2018-04-18T05:59:43", "url": "https://files.pythonhosted.org/packages/9b/1e/83ba78a573d23a62e6b76bfc52ce04ab80f92bcc491956beaab5a2287968/aliyunoss2_autoupload-0.1a1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8a8b5d1aa44ec2c0e33760e883c02c4", "sha256": "65b404c2b8474dc71effa23acee88863af5a275ff06883ca0d6ab7471b6deed2" }, "downloads": -1, "filename": "aliyunoss2-autoupload-0.1a1.tar.gz", "has_sig": false, "md5_digest": "a8a8b5d1aa44ec2c0e33760e883c02c4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 23719, "upload_time": "2018-04-18T06:01:41", "url": "https://files.pythonhosted.org/packages/8c/08/26051e19388cfad8404f98108eccf642809cc239f10be9450741dea671d5/aliyunoss2-autoupload-0.1a1.tar.gz" } ], "0.1a2.post1": [ { "comment_text": "", "digests": { "md5": "a2696f3dedec7f9359163dc8eb3b4b6c", "sha256": "2276f2e2484236b97f691afdd79369fb31066f5f3276ccda86a47e608833dd04" }, "downloads": -1, "filename": "aliyunoss2_autoupload-0.1a2.post1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a2696f3dedec7f9359163dc8eb3b4b6c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5", "size": 10172, "upload_time": "2018-04-18T07:26:20", "url": "https://files.pythonhosted.org/packages/f4/61/d05cf0f0d1677938cb0d28297bb530b375ae44afcf241279a303a8213d05/aliyunoss2_autoupload-0.1a2.post1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f854d071c22f7f62d8c35a6e2f68dc4b", "sha256": "04ce11bda384eb139dc3acb256364c2d20596f26b145b43c3eb2d14e3b8d8f5d" }, "downloads": -1, "filename": "aliyunoss2-autoupload-0.1a2.post1.tar.gz", "has_sig": false, "md5_digest": "f854d071c22f7f62d8c35a6e2f68dc4b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24686, "upload_time": "2018-04-18T07:26:22", "url": "https://files.pythonhosted.org/packages/3d/26/c25ef311c6a1bfa014496c4d54ebc67f2731fe490e178a3ea49f937b21a5/aliyunoss2-autoupload-0.1a2.post1.tar.gz" } ], "0.1a3": [ { "comment_text": "", "digests": { "md5": "9230fe8fbc214623ff271c52bccf79ca", "sha256": "31fe1ce160f85e82f677bc59975bb15a22c6854423aa0cebd22fdd356ec6f236" }, "downloads": -1, "filename": "aliyunoss2_autoupload-0.1a3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9230fe8fbc214623ff271c52bccf79ca", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5", "size": 10256, "upload_time": "2018-04-18T09:54:37", "url": "https://files.pythonhosted.org/packages/fe/c7/b8db2cbd59202d91ba28ce4f420b98c7424c1093210eb8107dba7abb7f9c/aliyunoss2_autoupload-0.1a3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c63142ae4dc779d0ea558135324912d0", "sha256": "99b531329abe94de43cf88de7c06746cab717566edfa6a9c4459301fd03aeb3e" }, "downloads": -1, "filename": "aliyunoss2-autoupload-0.1a3.tar.gz", "has_sig": false, "md5_digest": "c63142ae4dc779d0ea558135324912d0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24900, "upload_time": "2018-04-18T09:56:36", "url": "https://files.pythonhosted.org/packages/2c/ce/4ae8116baa20eacb73c0299c64c521d65d9481c47ce2be50e33b844a0dfc/aliyunoss2-autoupload-0.1a3.tar.gz" } ], "0.1b1": [ { "comment_text": "", "digests": { "md5": "674ad19816c1a3de945887f05470a05b", "sha256": "7de9e7f36c5b1d2a0d96298379fac79a99d2e8876e53e14edc756d9888fe7c6c" }, "downloads": -1, "filename": "aliyunoss2_autoupload-0.1b1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "674ad19816c1a3de945887f05470a05b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 13736, "upload_time": "2018-06-19T11:05:32", "url": "https://files.pythonhosted.org/packages/10/27/4bc22c0e97d70e5f14eac4c3d6ec0b67a979a8b829f984f9fcf290a9e373/aliyunoss2_autoupload-0.1b1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e0dc6d22afd5ec77649001e0db78777f", "sha256": "8af3e7053f9e2075ef6a6ea8d70fe2854d61ce688b4551ae94c48d02c0cd3fc5" }, "downloads": -1, "filename": "aliyunoss2-autoupload-0.1b1.tar.gz", "has_sig": false, "md5_digest": "e0dc6d22afd5ec77649001e0db78777f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 30189, "upload_time": "2018-06-19T11:05:33", "url": "https://files.pythonhosted.org/packages/bd/39/645684186edc434eeb7627ad67a5ae4d4faffe68cd65ecfdf061f948b214/aliyunoss2-autoupload-0.1b1.tar.gz" } ], "0.1b2": [ { "comment_text": "", "digests": { "md5": "386be2a8c9075063b0532823c8ff9034", "sha256": "cc5536111541a4233011099c1d2d758d48f25df62f99f11689018f6c6a6c299d" }, "downloads": -1, "filename": "aliyunoss2_autoupload-0.1b2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "386be2a8c9075063b0532823c8ff9034", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 15061, "upload_time": "2018-06-20T03:58:19", "url": "https://files.pythonhosted.org/packages/0a/ca/0f473efa30a2dfe999c6304d7aac26620308a60051fbe1f25ff3a2571fd6/aliyunoss2_autoupload-0.1b2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "393282a04139d1d8731dd01c7c6e180d", "sha256": "f3cd5b69c6e5db6ad93a913cb15d14913d68cd181804322f43b055ca29250778" }, "downloads": -1, "filename": "aliyunoss2-autoupload-0.1b2.tar.gz", "has_sig": false, "md5_digest": "393282a04139d1d8731dd01c7c6e180d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 30970, "upload_time": "2018-06-20T03:58:20", "url": "https://files.pythonhosted.org/packages/c8/5a/aa8bad7dd13b1440b69fe7aaa84f2aa6e8f99e6fc6afeb80162a96ba5d23/aliyunoss2-autoupload-0.1b2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fe29dfbc09b1b38fbd6ce82bfa26e84f", "sha256": "1f25a702e7b465c1f6cec195595b49362060a2c6016dd25c81dff9ec9bac99ca" }, "downloads": -1, "filename": "aliyunoss2_autoupload-0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fe29dfbc09b1b38fbd6ce82bfa26e84f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 15583, "upload_time": "2018-06-28T09:33:56", "url": "https://files.pythonhosted.org/packages/11/b2/40f73bbe5b836f11fac7598417b1e93434c8f2d0ff169ea3f2320ba10933/aliyunoss2_autoupload-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3ac32503f2f678e6579a09c14569ebc", "sha256": "5fc6ba80443205a3e74e792fe63f33fb2d3ac93ca4973f651630011da9d79c94" }, "downloads": -1, "filename": "aliyunoss2-autoupload-0.1.tar.gz", "has_sig": false, "md5_digest": "e3ac32503f2f678e6579a09c14569ebc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 31918, "upload_time": "2018-06-28T09:33:57", "url": "https://files.pythonhosted.org/packages/3d/ae/e7d089863b9984b22bff07e65f86ccab3dbeb63757509e65e4ff8bc24dbb/aliyunoss2-autoupload-0.1.tar.gz" } ] }