Skip to main content

A cross-platform middleware for Social Networking Services (SNS):

Lightning Demo 1 – Read Twitter Timeline

Step 1.

Register user and developer on Twitter. Apply for application keys and access tokens.

Step 2.

Save the following codes to mytest.py in the root dir of this project:

from snscli import *
nc = new_channel('TwitterStatus')
nc['app_key'] = 'Your Consumer Key from dev.twitter.com'
nc['app_secret'] = 'Your Consumer Secret from dev.twitter.com'
nc['access_key'] = 'Your Access Token from dev.twitter.com'
nc['access_secret'] = 'Your Access Token Secret from dev.twitter.com'
add_channel(nc)
print home_timeline()

Filling your app credentials in the above script: app_key, app_secret, access_key, access_key.

Step 3.

Try it by python mytest.py. You will see your home timeline from twitter.

Remarks

SNSApi unifies the interfaces of all SNS such that retrieving new messages from all other platforms are the same:

  • Create a new channel configuration and add_channel it.

  • Invoke a single home_timeline() to obtain an aggregated timeline from all channels in a batch.

Lightning Demo 2 – Backup Your Data

Step 1.

Configure a channel.json file with two channels:

  • One is called “myrenren” and it interfaces with Renren (an OSN in China).

  • The other is called “mysqlite” and it interfaces with a SQLite3 DB.

See one example channel.json configuration.

Step 2.

Save the following codes to backup.py in the root dir of this project:

from snsapi.snspocket import SNSPocket
sp = SNSPocket()
sp.load_config()
sp.auth()

ml = sp['myrenren'].home_timeline()
for m in ml:
    sp['mysqlite'].update(m)

Step 3.

Try it by python backup.py. Now your timeline of Renren (latest 20 messages by default) is backed up to the SQLite DB. You can run this script on a regular basis to backup data from all kinds of SNS.

Remarks

SNSApi unifies the data structures of all SNS so as to enable flexible/ programmable inter-operation between those services:

  • Backup one message in SQLite is just “update a status” there.

  • In order to read those messages, just invoke home_timeline of your SQLite channel.

  • The data in SQLite DB are ready for further analysis. For example, I remember someone said that “snsapi is awesome”. Who posted it? I can not recall. Now, enter sqlite and use one line of command to get the answer: select * from message where text like '%snsapi%';.

  • You can also use EMail or RSS to distribute your statuses and follow the updates of your friends.

  • When there are new platforms, it’s just one configuration away to use them. The intervention from app developer is not needed.

Lightning Demo 3 – An Ad-Hoc DSN

Decentralized Social Network (DSN) is the next paradigm of social networking. Current centralized services have a lot of problems, e.g. Spying for free.

SNSApi is just a middleware to offload your burden in interfacing with different platforms. Now, try to build something without worrying about the interfacing detials.

See RSoc Community Page if you are interested.

Supported Platforms

Enther the interactive shell by python -i snscli.py. Get the supported platforms as follows:

Supported platforms:
   * DoubanFeed
   * Email
   * FacebookFeed
   * InstagramFeed
   * RSS
   * RSS2RW
   * RSSSummary
   * RenrenBlog
   * RenrenFeed
   * RenrenPhoto
   * RenrenShare
   * RenrenStatus
   * RenrenStatusDirect
   * SQLite
   * SinaWeiboBase
   * SinaWeiboStatus
   * SinaWeiboWapStatus
   * TencentWeiboStatus
   * TwitterStatus
   * ...

More platforms are coming! Please join us!

Get Started

  • Clone and install dependencies via pip. Then you are ready to go. See installation guide if you need more detailed information. See troubleshooting page if you encounter problems in your initial tests.

  • We have several demo apps in this repo. You can start with them and see how to use those classes of SNSAPI.

  • Users who don’t want to write Python or other non-Python programmers can start with our command-line-interface (snscli.py). The official SNSAPI website should get your started quickly along this line. This CLI can allow interfacing with other languages using STDIN/ STDOUT.

  • Users who are not comfortable with CLI can use the graphical-user-interface (snsgui.py). See more user interfaces.

Resources

License

copyleft

All materials of this project are released to public domain, except for the followings:

  • snsapi/third/*: The third party modules. Please refer to their original LICENSE. We have pointers in snsapi/third/README.md for those third party modules.

Other

master dev Analytics

Metadata

Release files for snsapi 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for snsapi 0.8.1
File Size Uploaded Provenance
snsapi-0.8.1.tar.gz 183.4 kB Without provenance Details

Release files / snsapi-0.8.1.tar.gz

Download URL snsapi-0.8.1.tar.gz
Size 183.4 kB
Tags Source
SHA-256 checksum
How to use checksums
98d582ba142ec28acb91b157e581f6fdcc795c60e1e949acb855187c4d39e254
BLAKE2b-256 checksum
How to use checksums
e8c2d9c471d44d09cb16c1b11b3682dc07674fddd6f1781566326c80d83c1ad9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for snsapi 0.8.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page