{ "info": { "author": "Pili Hu", "author_email": "me@hupili.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "Intended Audience :: Science/Research", "License :: Public Domain", "Natural Language :: English", "Programming Language :: Python :: 2.7", "Topic :: Communications :: Chat", "Topic :: Internet", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "SNSAPI\n======\n\nA cross-platform **middleware** for Social Networking Services (SNS):\n\n- Unified interfaces and data structures.\n- The building block of a **user-centric** `meta social\n network `__.\n- Near-zero infrastructure\n `requirements `__.\n- Play with your social channels `like a\n hacker `__.\n\nLightning Demo 1 -- Read Twitter Timeline\n-----------------------------------------\n\nStep 1.\n~~~~~~~\n\nRegister user and developer on Twitter. `Apply for application keys and\naccess\ntokens `__.\n\nStep 2.\n~~~~~~~\n\nSave the following codes to ``mytest.py`` in the root dir of this\nproject:\n\n.. code:: python\n\n from snscli import *\n nc = new_channel('TwitterStatus')\n nc['app_key'] = 'Your Consumer Key from dev.twitter.com'\n nc['app_secret'] = 'Your Consumer Secret from dev.twitter.com'\n nc['access_key'] = 'Your Access Token from dev.twitter.com'\n nc['access_secret'] = 'Your Access Token Secret from dev.twitter.com'\n add_channel(nc)\n print home_timeline()\n\nFilling your app credentials in the above script: ``app_key``,\n``app_secret``, ``access_key``, ``access_key``.\n\nStep 3.\n~~~~~~~\n\nTry it by ``python mytest.py``. You will see your home timeline from\ntwitter.\n\nRemarks\n~~~~~~~\n\nSNSApi **unifies the interfaces** of all SNS such that retrieving new\nmessages from all other platforms are the same:\n\n- Create a new channel configuration and ``add_channel`` it.\n- Invoke a single ``home_timeline()`` to obtain an aggregated timeline\n from all channels in a batch.\n\nLightning Demo 2 -- Backup Your Data\n------------------------------------\n\nStep 1.\n~~~~~~~\n\n`Configure a\nchannel.json `__\nfile with two channels:\n\n- One is called \"myrenren\" and it interfaces with Renren (an OSN in\n China).\n- The other is called \"mysqlite\" and it interfaces with a SQLite3 DB.\n\nSee `one\nexample `__\n``channel.json`` configuration.\n\nStep 2.\n~~~~~~~\n\nSave the following codes to ``backup.py`` in the root dir of this\nproject:\n\n.. code:: python\n\n from snsapi.snspocket import SNSPocket\n sp = SNSPocket()\n sp.load_config()\n sp.auth()\n\n ml = sp['myrenren'].home_timeline()\n for m in ml:\n sp['mysqlite'].update(m)\n\nStep 3.\n~~~~~~~\n\nTry it by ``python backup.py``. Now your timeline of Renren (latest 20\nmessages by default) is backed up to the SQLite DB. You can run this\nscript on a regular basis to backup data from all kinds of SNS.\n\nRemarks\n~~~~~~~\n\nSNSApi unifies the **data structures** of all SNS so as to enable\nflexible/ programmable inter-operation between those services:\n\n- Backup one message in SQLite is just \"update a status\" there.\n- In order to read those messages, just invoke ``home_timeline`` of\n your SQLite channel.\n- The data in SQLite DB are ready for further analysis. For example, I\n remember someone said that \"snsapi is awesome\". Who posted it? I can\n not recall. Now, enter sqlite and use one line of command to get the\n answer: ``select * from message where text like '%snsapi%';``.\n- You can also use EMail or RSS to distribute your statuses and follow\n the updates of your friends.\n- When there are new platforms, it's just one configuration away to use\n them. The intervention from app developer is not needed.\n\nLightning Demo 3 -- An Ad-Hoc DSN\n---------------------------------\n\n`Decentralized Social\nNetwork `__ (DSN) is the\nnext paradigm of social networking. Current centralized services have a\nlot of problems, e.g. `Spying for\nfree `__.\n\nSNSApi is just a middleware to offload your burden in interfacing with\ndifferent platforms. Now, try to build something without worrying about\nthe interfacing detials.\n\n.. figure:: https://docs.google.com/drawings/d/1S-REIYN46lR6WpmimG1v5CPJdDYlfVnGDwY3vL5Tju4/pub?w=400\n :alt: \n\nSee `RSoc Community Page `__\nif you are interested.\n\nSupported Platforms\n-------------------\n\nEnther the interactive shell by ``python -i snscli.py``. Get the\nsupported platforms as follows:\n\n::\n\n Supported platforms:\n * DoubanFeed\n * Email\n * FacebookFeed\n * InstagramFeed\n * RSS\n * RSS2RW\n * RSSSummary\n * RenrenBlog\n * RenrenFeed\n * RenrenPhoto\n * RenrenShare\n * RenrenStatus\n * RenrenStatusDirect\n * SQLite\n * SinaWeiboBase\n * SinaWeiboStatus\n * SinaWeiboWapStatus\n * TencentWeiboStatus\n * TwitterStatus\n * ...\n\nMore platforms are coming! Please join us!\n\nGet Started\n-----------\n\n- Clone and install dependencies via ``pip``. Then you are ready to go.\n See `installation\n guide `__ if you\n need more detailed information. See\n `troubleshooting `__\n page if you encounter problems in your initial tests.\n- We have several `demo\n apps `__ in this\n repo. You can start with them and see how to use those classes of\n SNSAPI.\n- Users who don't want to write Python or other non-Python programmers\n can start with our command-line-interface (``snscli.py``). `The\n official SNSAPI website `__ should get\n your started quickly along this line. This CLI can allow interfacing\n with other languages using STDIN/ STDOUT.\n- Users who are not comfortable with CLI can use the\n graphical-user-interface (``snsgui.py``). See `more user\n interfaces `__.\n\nResources\n---------\n\n- `SNSApi Website `__: maintained by\n `@hupili `__; welcome to report problems\n to admin, or send pull request to `website\n repo `__ directly.\n- `SNSApi Website (CN) `__: maintained by\n `@xuanqinanhai `__.\n- `SNSApi doc `__:\n automatically generated from code using Sphinx; also available as\n inline doc using ``help(XXX)`` from Python shell.\n- `SNSApi Github Wiki `__:\n editable by all GitHub users; welcome to share your experience.\n- `SNSApi Google\n Group `__:\n The most efficient way to get help, discuss new ideas and organize\n community activities. Please join us!\n\nLicense\n-------\n\n|copyleft|\n\nAll materials of this project are released to public domain, except for\nthe followings:\n\n- ``snsapi/third/*``: The third party modules. Please refer to their\n original LICENSE. We have pointers in ``snsapi/third/README.md`` for\n those third party modules.\n\nOther\n-----\n\n- Old version of this readme `in\n Chinese `__\n\n|master| |dev| |Analytics|\n\n.. |copyleft| image:: http://unlicense.org/pd-icon.png\n :target: http://unlicense.org\n.. |master| image:: https://travis-ci.org/hupili/snsapi.png?branch=master\n.. |dev| image:: https://travis-ci.org/hupili/snsapi.png?branch=dev\n.. |Analytics| image:: https://ga-beacon.appspot.com/UA-37311363-5/hupili/snsapi\n :target: https://github.com/igrigorik/ga-beacon\n", "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/hupili/snsapi", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "snsapi", "package_url": "https://pypi.org/project/snsapi/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/snsapi/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/hupili/snsapi" }, "release_url": "https://pypi.org/project/snsapi/0.8.1/", "requires_dist": null, "requires_python": null, "summary": "lightweight middleware for multiple social networking services", "version": "0.8.1" }, "last_serial": 1177684, "releases": { "0.5.0": [], "0.6.0": [ { "comment_text": "", "digests": { "md5": "86a4388c285976d331157775ad1802b6", "sha256": "ab0527e045d731cbd02a74b2535746a8cafc92219921fa5b3e8876a994a6b314" }, "downloads": -1, "filename": "snsapi-0.6.0.tar.gz", "has_sig": false, "md5_digest": "86a4388c285976d331157775ad1802b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 156502, "upload_time": "2013-07-18T11:43:44", "url": "https://files.pythonhosted.org/packages/1d/c2/ca09868224a6ee4c31c429294f7a1040e10a164dd9a324b059c7baed6a1b/snsapi-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "1559600852137512556cf442040d1d29", "sha256": "7916d4b51936ccb14b3d95745ccea5a2cd4268ec96013fb07015f08333ae82c9" }, "downloads": -1, "filename": "snsapi-0.6.1.tar.gz", "has_sig": false, "md5_digest": "1559600852137512556cf442040d1d29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 157563, "upload_time": "2013-07-18T12:52:13", "url": "https://files.pythonhosted.org/packages/2f/9d/b13b70790b5cdf58cefd11a552b20e8dd24d47f922035f2e2b56585250e2/snsapi-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "e37be869e400f100aa15b25fa25ec6ac", "sha256": "c19dd4c390b5f9e38c8d347480bcaebde981b55dbb42dad8b2394a2c8a068b55" }, "downloads": -1, "filename": "snsapi-0.6.2.tar.gz", "has_sig": false, "md5_digest": "e37be869e400f100aa15b25fa25ec6ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 157619, "upload_time": "2013-07-18T13:49:46", "url": "https://files.pythonhosted.org/packages/44/3c/873e11b204c7e5c9bff9ac11ec2d2986e5b1ff49c5a0a15a3300cfafe308/snsapi-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "81e7452cf65041cddbf223ec19d4eaaf", "sha256": "60d97492d75695fdfa83df8e216703a59f6b317adef9369a4e2a4b88c54234bc" }, "downloads": -1, "filename": "snsapi-0.6.3.tar.gz", "has_sig": false, "md5_digest": "81e7452cf65041cddbf223ec19d4eaaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 158111, "upload_time": "2013-07-21T08:14:42", "url": "https://files.pythonhosted.org/packages/a0/44/58cfd697a0cf2ad468f9d81d8ec0bf1d605707685cddf9e14e3a16bf1e30/snsapi-0.6.3.tar.gz" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "ec021853a11c32c0084eb1b18fb100b0", "sha256": "5065cbb9a5f34a717d9a58deea085c60f1a4eb1d07cacaba4ea33728d9584c79" }, "downloads": -1, "filename": "snsapi-0.6.4.tar.gz", "has_sig": false, "md5_digest": "ec021853a11c32c0084eb1b18fb100b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 159269, "upload_time": "2013-07-21T08:25:19", "url": "https://files.pythonhosted.org/packages/90/45/7c79c38a17223d09ee5a10727680b350eb1b3b93bcc6b23cb1b540fd26b1/snsapi-0.6.4.tar.gz" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "d60bebc59e89bd33cc2a54d1eb9feee2", "sha256": "1d86bbff642c7352c3d7ee6259cc05f3aaf9eb9c220d46f3842d98d18bfbeffd" }, "downloads": -1, "filename": "snsapi-0.6.5.tar.gz", "has_sig": false, "md5_digest": "d60bebc59e89bd33cc2a54d1eb9feee2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 158262, "upload_time": "2013-07-21T08:32:52", "url": "https://files.pythonhosted.org/packages/73/2c/d8a6f2fd009e4a1f2e4fb3704e22715acd3f228eca3a4c232b174845298f/snsapi-0.6.5.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "561c891c72471228189607df182c8caa", "sha256": "5dc5c05264d3e4e11920872a054ca562ed97d2e34ce47980ef76747f7ac10f89" }, "downloads": -1, "filename": "snsapi-0.7.0.tar.gz", "has_sig": false, "md5_digest": "561c891c72471228189607df182c8caa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 167280, "upload_time": "2013-10-01T09:02:37", "url": "https://files.pythonhosted.org/packages/14/45/a3664ad0a3ec6d9408b09e0d4a595d1a86b28bae0c3fd42a4b0f385f091d/snsapi-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "311b027c792eb175aaf47b596d727f4f", "sha256": "02c28d1011f7b7333555d4370a722358ed8d88953116df75accc2797947a7cea" }, "downloads": -1, "filename": "snsapi-0.7.1.tar.gz", "has_sig": false, "md5_digest": "311b027c792eb175aaf47b596d727f4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 164652, "upload_time": "2014-03-15T05:24:59", "url": "https://files.pythonhosted.org/packages/c6/39/7598d5ab41b19dd77f0c4f3f2cb6667d0085b789735e2e76613b6d1230fe/snsapi-0.7.1.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "44bfcafbac1d6f59542922f68c8de6dc", "sha256": "3a16f0d9bf343df43d8f97939d69494f902b64c5ff36adf66915c93780d12563" }, "downloads": -1, "filename": "snsapi-0.8.0.tar.gz", "has_sig": false, "md5_digest": "44bfcafbac1d6f59542922f68c8de6dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 183338, "upload_time": "2014-08-02T15:36:00", "url": "https://files.pythonhosted.org/packages/fe/98/b6424d0c99c0bf4c245ad796905a1f8edf05b3d398e9c7706a376dc5e7ba/snsapi-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "356054ea03aacf21e09d3585bc9251e8", "sha256": "98d582ba142ec28acb91b157e581f6fdcc795c60e1e949acb855187c4d39e254" }, "downloads": -1, "filename": "snsapi-0.8.1.tar.gz", "has_sig": false, "md5_digest": "356054ea03aacf21e09d3585bc9251e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 183393, "upload_time": "2014-08-02T15:39:54", "url": "https://files.pythonhosted.org/packages/e8/c2/d9c471d44d09cb16c1b11b3682dc07674fddd6f1781566326c80d83c1ad9/snsapi-0.8.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "356054ea03aacf21e09d3585bc9251e8", "sha256": "98d582ba142ec28acb91b157e581f6fdcc795c60e1e949acb855187c4d39e254" }, "downloads": -1, "filename": "snsapi-0.8.1.tar.gz", "has_sig": false, "md5_digest": "356054ea03aacf21e09d3585bc9251e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 183393, "upload_time": "2014-08-02T15:39:54", "url": "https://files.pythonhosted.org/packages/e8/c2/d9c471d44d09cb16c1b11b3682dc07674fddd6f1781566326c80d83c1ad9/snsapi-0.8.1.tar.gz" } ] }