{ "info": { "author": "Paul Chakravarti", "author_email": "paul.chakravarti@gmail.com", "bugtrack_url": null, "classifiers": [ "Topic :: Communications :: File Sharing", "Topic :: Software Development :: Libraries" ], "description": "minus.py\n\n****************************************************************\n*** Note: This no longer works due to changes in the service ***\n****************************************************************\n\nMinus.com significantly changed their service so that the current \nAPI doesn't work any more (which is a shame). Have left the code\nup in case anyone is interested (quite a bit could be reused to\ninterface with other file sharing services)\n\n\n\nIntroduction\n------------\n\nminus.py is a Python library which interacts with the minus.com \n(http://minus.com) file sharing service. \n\nIt provides three layered services:\n\na) A 'Pythonic' API to the Minus.com REST interface\nb) An interactive Minus.com client - modeled on ftp(1)\nc) A non-interactive command-line utility to upload/download files\n to Minus.com\n\nPythonic API\n------------\n\nThe minus library exposes the Minus.com REST interface through a\nnumber of Python proxy objects:\n\n MinusConnection - Low-level connection to REST API\n MinusUser - User object \n MinusFolder - Folder object\n MinusFile - File object\n\n MinusAPIError - API Exception\n\nA simple example of interaction with the API is -\n\n >>> minus = MinusConnection('api_key','api_secret') \n >>> minus.authenticate('user','password')\n >>> user = minus.activeuser() \n >>> print [ f._name for f in user.folders() ]\n >>> folder = minus.find('Stuff')\n >>> print [ f._name for f in folder.files() ]\n\n(See object docstrings for methods available)\n\nPaging is handled transparently through the PagedList/PagedListIter\nclasses - these support lazy loading however in general this is \nnot used through the helper classes.\n\nInteractive Client\n------------------\n\nIf the module is run directly the __main__ method will call an \ninteractive CLI client based on the 'cmd' library. This behaves\nin a similar way to the ftp(1) client. Basic help and command\nline editing are provided through the 'cmd' library.\n\nThe available commands are:\n\n cd Change remote folder\n del .. Delete remote files\n get [] Get remote file\n lcd Change local directory\n lpwd Print local path\n ls List remote folder\n mget .. Get multiple remote files\n mkdir Create remote folder (private)\n mkpublic Create remote folder (public)\n mput .. Put multiple local files\n put [] Put local file\n pwd Print remote folder\n rmdir Delete remote folder (deletes contents)\n stat .. Print details on remote files\n\nThe library supports local/remote globbing and local i/o rediraction - eg.\n\n Remote glob: mget *.jpg (works with mget/del/ls/stat)\n Local glob: mput *.txt (works with mput)\n Pipe to stdout: get -\n Pipe to process: get |less\n Pipe from process: put date| date.txt\n\nNote - Minus.com allows multiple folders/files with the same name (the id \nattribute provides a unique id)\n\nA simple example of an interactive session is:\n\n# ./minus.py --username \nPassword: \n(Minus:user) [/] : ls\nFolder Updated Files Creator Visibility\n--------------------------------------------------------------------------------\nStuff 2012-01-08 12:25:44 15 user private\nStuff2 2012-01-08 13:28:04 0 user public\n(Minus:paulc) [/] : cd Stuff\n--> CWD \"Stuff\" OK\n(Minus:user) [/Stuff] : ls\nName Uploaded Size Title\n--------------------------------------------------------------------------------\nSNV33271.jpg 2012-01-05 18:36:22 251673 -\nSNV33183.jpg 2012-01-05 18:35:57 176134 -\n(Minus:paulc) [/Stuff] : get SNV33271.jpg \n--> GET \"SNV33271.jpg\" OK (251673 bytes)\n(Minus:user) [/Stuff] : put t1.data\n--> PUT \"t1.data\" OK (13672 bytes)\n\nCommand Line Utility\n--------------------\n\nIf the module is run from the command line with the --get, --put, or\n--list-folders options the utility runs non interactively and provides\na simple way of uploading/downloading content - eg.\n\n Upload local files: \n \n ./minus.py --user user --put 'Folder Name' \n\n (Folder is created if it doesnt already exist)\n\n Upload local files to public folder: \n\n ./minus.py --user user --public --put 'Folder Name' \n\n Download remote files:\n\n ./minus.py --user user --get 'Folder Name' \n \n Download matching remote files:\n\n ./minus.py --user user --get 'Folder Name' \\*.jpg \\*.png\n\n (Remember to quote remote glob so that it isn't expanded by the shell)\n\n List Folders:\n\n ./minus.py --user user --list-folders\n\n (You can specify the password on the command-line however note that this \n will be visible in process args - if not specified will be prompted)\n\nAPI Key\n-------\n\nYou must have a valid Minus.com API_KEY/API_SECRET to use the library (see\nhttp://minus.com/pages/api to request an API key). These are normally\npassed into the MinusConnection constructor.\n\nTo use the CLI client the API_KEY/API_SECRET should be placed in a config\nfile (by default ~/.minus.conf - can be changed using the --config flag).\nThe file is in '.ini' format and contains a single [api] section with\napi_key and api_secret keys:\n\n [api]\n api_key: ...\n api_secret: ...\n\nDebugging/Development\n---------------------\n\nYou can turn on the --debug flag to see the HTTP requests/responses and also\nuse the --shell flag to drop into an interactive Python interpreter immediately\nafter authentication where you can experiment with the API - there will be \nMinusConnection (minus) and MinusUser (user) variables available.\n\nDependencies\n------------\n\nThe module comprises a single file and can be either installed normally using\npip/site-packages etc or just installed & called from a local directory. There\nare no dependencies other than the Python interpreter (tested with 2.7 but \nshould be ok with earlier).\n\nRepository/Issues\n-----------------\n\nThe master repository is https://bitbucket.org/paulc/minus. Please use the\nIssue tracker there to raise any issues.\n\nLicense\n-------\n\nMIT\n\nAuthor\n------\n\nPaul Chakravarti (paul.chakravarti@gmail.com)", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://bitbucket.org/paulc/minus/", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "minus", "package_url": "https://pypi.org/project/minus/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/minus/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://bitbucket.org/paulc/minus/" }, "release_url": "https://pypi.org/project/minus/1.2/", "requires_dist": null, "requires_python": null, "summary": "Python library & command-line utility which interacts with the minus.com (http://minus.com) file sharing service *** Note: This no longer works due to changes in the service ***", "version": "1.2" }, "last_serial": 847995, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "ec32cf536fde834e69b0e1dcfb662259", "sha256": "05e741186969a102320cf6a04ef232aec14fef10654f24d54c792234dc42e501" }, "downloads": -1, "filename": "minus-1.0.tar.gz", "has_sig": false, "md5_digest": "ec32cf536fde834e69b0e1dcfb662259", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12144, "upload_time": "2012-01-18T23:49:16", "url": "https://files.pythonhosted.org/packages/87/87/5a042ef637ba0cf7353e60887193cf27e0e86b00a576f116938e25c26af1/minus-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "29324e52235a7eb2c365e2cd0b6d1021", "sha256": "0ed66634f3c197cff70f1f52122cc0ed32dbdcf461552107a0f749c2f0821286" }, "downloads": -1, "filename": "minus-1.1.tar.gz", "has_sig": false, "md5_digest": "29324e52235a7eb2c365e2cd0b6d1021", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12676, "upload_time": "2012-01-20T00:29:01", "url": "https://files.pythonhosted.org/packages/57/ea/15883996015ad21cd6c18e57cb666e866d1b652c75451ca1e8dad529d8a2/minus-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "862b4811dc45a48b4a441081a7fbb246", "sha256": "0402d8cf02d02bbcb779bcc33bfc26d333799633a94e02618249d78ee6937251" }, "downloads": -1, "filename": "minus-1.2.tar.gz", "has_sig": false, "md5_digest": "862b4811dc45a48b4a441081a7fbb246", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13033, "upload_time": "2013-08-24T20:18:07", "url": "https://files.pythonhosted.org/packages/2e/32/1886cfec2eec649686ba3ad099e7fc144ad6a8d95551bd8982eab1330baa/minus-1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "862b4811dc45a48b4a441081a7fbb246", "sha256": "0402d8cf02d02bbcb779bcc33bfc26d333799633a94e02618249d78ee6937251" }, "downloads": -1, "filename": "minus-1.2.tar.gz", "has_sig": false, "md5_digest": "862b4811dc45a48b4a441081a7fbb246", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13033, "upload_time": "2013-08-24T20:18:07", "url": "https://files.pythonhosted.org/packages/2e/32/1886cfec2eec649686ba3ad099e7fc144ad6a8d95551bd8982eab1330baa/minus-1.2.tar.gz" } ] }