Python Twitter API

Overview

Python Twitter Tools

Tests Coverage Status

The Minimalist Twitter API for Python is a Python API for Twitter, everyone's favorite Web 2.0 Facebook-style status updater for people on the go.

Also included is a Twitter command-line tool for getting your friends' tweets and setting your own tweet from the safety and security of your favorite shell and an IRC bot that can announce Twitter updates to an IRC channel.

For more information:

  • install the package pip install twitter
  • import the twitter package and run help() on it
  • run twitter -h for command-line tool help

twitter - The Command-Line Tool

The command-line tool lets you do some awesome things:

  • view your tweets, recent replies, and tweets in lists
  • view the public timeline
  • follow and unfollow (leave) friends
  • various output formats for tweet information

The bottom line: type twitter, receive tweets.

twitterbot - The IRC Bot

The IRC bot is associated with a Twitter account (either your own account or an account you create for the bot). The bot announces all tweets from friends it is following. It can be made to follow or leave friends through IRC /msg commands.

twitter-log

twitter-log is a simple command-line tool that dumps all public tweets from a given user in a simple text format. It is useful to get a complete offsite backup of all your tweets. Run twitter-log and read the instructions.

twitter-archiver and twitter-follow

twitter-archiver will log all the tweets posted by any user since they started posting. twitter-follow will print a list of all of all the followers of a user (or all the users that user follows).

Programming with the Twitter API classes

The Twitter and TwitterStream classes are the key to building your own Twitter-enabled applications.

The Twitter class

The minimalist yet fully featured Twitter API class.

Get RESTful data by accessing members of this class. The result is decoded python objects (lists and dicts).

The Twitter API is documented at:

https://developer.twitter.com/en/docs

The list of most accessible functions is listed at:

https://developer.twitter.com/en/docs/api-reference-index

Examples:

from twitter import *

t = Twitter(
    auth=OAuth(token, token_secret, consumer_key, consumer_secret))

# Get your "home" timeline
t.statuses.home_timeline()

# Get a particular friend's timeline
t.statuses.user_timeline(screen_name="boogheta")

# to pass in GET/POST parameters, such as `count`
t.statuses.home_timeline(count=5)

# to pass in the GET/POST parameter `id` you need to use `_id`
t.statuses.show(_id=1234567890)

# Update your status
t.statuses.update(
    status="Using @boogheta's sweet Python Twitter Tools.")

# Send a direct message
t.direct_messages.events.new(
    _json={
        "event": {
            "type": "message_create",
            "message_create": {
                "target": {
                    "recipient_id": t.users.show(screen_name="boogheta")["id"]},
                "message_data": {
                    "text": "I think yer swell!"}}}})

# Get the members of maxmunnecke's list "network analysis tools" (grab the list_id within the url) https://twitter.com/i/lists/1130857490764091392
t.lists.members(owner_screen_name="maxmunnecke", list_id="1130857490764091392")

# Favorite/like a status
status = t.statuses.home_timeline()[0]
if not status['favorited']:
    t.favorites.create(_id=status['id'])

# An *optional* `_timeout` parameter can also be used for API
# calls which take much more time than normal or twitter stops
# responding for some reason:
t.users.lookup(
    screen_name=','.join(A_LIST_OF_100_SCREEN_NAMES), _timeout=1)

# Overriding Method: GET/POST
# you should not need to use this method as this library properly
# detects whether GET or POST should be used, Nevertheless
# to force a particular method, use `_method`
t.statuses.oembed(_id=1234567890, _method='GET')

# Send images along with your tweets:
# - first just read images from the web or from files the regular way:
with open("example.png", "rb") as imagefile:
    imagedata = imagefile.read()
# - then upload medias one by one on Twitter's dedicated server
#   and collect each one's id:
t_upload = Twitter(domain='upload.twitter.com',
    auth=OAuth(token, token_secret, consumer_key, consumer_secret))
id_img1 = t_upload.media.upload(media=imagedata)["media_id_string"]
id_img2 = t_upload.media.upload(media=imagedata)["media_id_string"]
# - finally send your tweet with the list of media ids:
t.statuses.update(status="PTT ★", media_ids=",".join([id_img1, id_img2]))

# Or send a tweet with an image (or set a logo/banner similarily)
# using the old deprecated method that will probably disappear some day
params = {"media[]": imagedata, "status": "PTT ★"}
# Or for an image encoded as base64:
params = {"media[]": base64_image, "status": "PTT ★", "_base64": True}
t.statuses.update_with_media(**params)

# Attach text metadata to medias sent, using the upload.twitter.com route
# using the _json workaround to send json arguments as POST body
# (warning: to be done before attaching the media to a tweet)
t_upload.media.metadata.create(_json={
  "media_id": id_img1,
  "alt_text": { "text": "metadata generated via PTT!" }
})
# or with the shortcut arguments ("alt_text" and "text" work):
t_upload.media.metadata.create(media_id=id_img1, text="metadata generated via PTT!")

Searching Twitter:

# Search for the latest tweets about #pycon
t.search.tweets(q="#pycon")

# Search for the latest tweets about #pycon, using [extended mode](https://developer.twitter.com/en/docs/tweets/tweet-updates)
t.search.tweets(q="#pycon", tweet_mode='extended')

Retrying after reaching the API rate limit

Simply create the Twitter instance with the argument retry=True, then the HTTP error codes 429, 502, 503, and 504 will cause a retry of the last request.

If retry is an integer, it defines the maximum number of retry attempts.

Using the data returned

Twitter API calls return decoded JSON. This is converted into a bunch of Python lists, dicts, ints, and strings. For example:

x = twitter.statuses.home_timeline()

# The first 'tweet' in the timeline
x[0]

# The screen name of the user who wrote the first 'tweet'
x[0]['user']['screen_name']

Getting raw XML data

If you prefer to get your Twitter data in XML format, pass format="xml" to the Twitter object when you instantiate it:

twitter = Twitter(format="xml")

The output will not be parsed in any way. It will be a raw string of XML.

The TwitterStream class

The TwitterStream object is an interface to the Twitter Stream API. This can be used pretty much the same as the Twitter class, except the result of calling a method will be an iterator that yields objects decoded from the stream. For example::

twitter_stream = TwitterStream(auth=OAuth(...))
iterator = twitter_stream.statuses.sample()

for tweet in iterator:
    ...do something with this tweet...

Per default the TwitterStream object uses public streams. If you want to use one of the other streaming APIs, specify the URL manually.

The iterator will yield until the TCP connection breaks. When the connection breaks, the iterator yields {'hangup': True} (and raises StopIteration if iterated again).

Similarly, if the stream does not produce heartbeats for more than 90 seconds, the iterator yields {'hangup': True, 'heartbeat_timeout': True} (and raises StopIteration if iterated again).

The timeout parameter controls the maximum time between yields. If it is nonzero, then the iterator will yield either stream data or {'timeout': True} within the timeout period. This is useful if you want your program to do other stuff in between waiting for tweets.

The block parameter sets the stream to be fully non-blocking. In this mode, the iterator always yields immediately. It returns stream data, or None.

Note that timeout supercedes this argument, so it should also be set None to use this mode, and non-blocking can potentially lead to 100% CPU usage.

Twitter Response Objects

Response from a Twitter request. Behaves like a list or a string (depending on requested format), but it has a few other interesting attributes.

headers gives you access to the response headers as an httplib.HTTPHeaders instance. Use response.headers.get('h') to retrieve a header.

Authentication

You can authenticate with Twitter in three ways: NoAuth, OAuth, or OAuth2 (app-only). Get help() on these classes to learn how to use them.

OAuth and OAuth2 are probably the most useful.

Working with OAuth

Visit the Twitter developer page and create a new application:

https://dev.twitter.com/apps/new

This will get you a CONSUMER_KEY and CONSUMER_SECRET.

When users run your application they have to authenticate your app with their Twitter account. A few HTTP calls to Twitter are required to do this. Please see the twitter.oauth_dance module to see how this is done. If you are making a command-line app, you can use the oauth_dance() function directly.

Performing the "oauth dance" gets you an oauth token and oauth secret that authenticate the user with Twitter. You should save these for later, so that the user doesn't have to do the oauth dance again.

read_token_file and write_token_file are utility methods to read and write OAuth token and secret key values. The values are stored as strings in the file. Not terribly exciting.

Finally, you can use the OAuth authenticator to connect to Twitter. In code it all goes like this:

from twitter import *

MY_TWITTER_CREDS = os.path.expanduser('~/.my_app_credentials')
if not os.path.exists(MY_TWITTER_CREDS):
    oauth_dance("My App Name", CONSUMER_KEY, CONSUMER_SECRET,
                MY_TWITTER_CREDS)

oauth_token, oauth_secret = read_token_file(MY_TWITTER_CREDS)

twitter = Twitter(auth=OAuth(
    oauth_token, oauth_secret, CONSUMER_KEY, CONSUMER_SECRET))

# Now work with Twitter
twitter.statuses.update(status='Hello, world!')

Working with OAuth2

Twitter only supports the application-only flow of OAuth2 for certain API endpoints. This OAuth2 authenticator only supports the application-only flow right now.

To authenticate with OAuth2, visit the Twitter developer page and create a new application:

https://dev.twitter.com/apps/new

This will get you a CONSUMER_KEY and CONSUMER_SECRET.

Exchange your CONSUMER_KEY and CONSUMER_SECRET for a bearer token using the oauth2_dance function.

Finally, you can use the OAuth2 authenticator and your bearer token to connect to Twitter. In code it goes like this::

twitter = Twitter(auth=OAuth2(bearer_token=BEARER_TOKEN))

# Now work with Twitter
twitter.search.tweets(q='keyword')

License

Python Twitter Tools are released under an MIT License.

Comments
  • TwitterStream.user() fails on production server, works in local development environment

    TwitterStream.user() fails on production server, works in local development environment

    OK, this is a hard one.... when I've gotten this error before, it typically meant I lost the connection to twitter, and a quick restart fixes everything, but not anymore...

    Here is the stack trace:

    auth = twitter.Oauth( ... keys )

    Code:

    from twitter import * stream = twitter.stream.TwitterStream(auth=auth, domain='userstream.twitter.com') stream.user()

    Trace:

    Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python2.7/dist-packages/twitter/api.py", line 308, in call return self._handle_response(req, uri, arg_data, _timeout) File "/usr/local/lib/python2.7/dist-packages/twitter/stream.py", line 284, in _handle_response _timeout or timeout, heartbeat_timeout) File "/usr/local/lib/python2.7/dist-packages/twitter/stream.py", line 209, in handle_stream_response raise TwitterHTTPError(e, uri, 'json', arg_data) File "/usr/local/lib/python2.7/dist-packages/twitter/api.py", line 72, in init data = json.loads(data.decode('utf8')) File "/usr/lib/python2.7/json/init.py", line 338, in loads return _default_decoder.decode(s) File "/usr/lib/python2.7/json/decoder.py", line 366, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode raise ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded

    =========

    This code is from my program, which works just FINE in my local development environment.

    Local Dev =

    Ubuntu 14 Python 2.7 WingIDE VirtualEnvirnment with depenedencies installed.

    However, on my server, hosted on EC2 it fails:

    Ubuntu 14 Python 2.7 Virtual Environment Run from command line with python manage.py shell , then load program with execfile('mybot.py')

    The same code has been working, but stopped suddenly with the above JSON error.

    If I run the same code in DEV on my local system, it works, however running on production server, it fails.

    If compared the environments between both systems, and they SEEM to be the same...

    On the production server I CAN do OTHER streaming functionality like SENDING DM's to my twitter account.... So SENDING works, but listening with stream.user() FAILS with this JSON error.

    I would appreciate ANY suggestions. :)

    Thank you,

    PS: Love this tool, I think it's better than the other Python Twitter options out there.

    opened by lmaloney 23
  • Fix broken userstream and all other streams supposed to break after Jan 13 + add image support + fix diverses issues

    Fix broken userstream and all other streams supposed to break after Jan 13 + add image support + fix diverses issues

    Merry Christmas!... Twitter is moving all of its streaming APIs towards HTTP1.1 chunked encoded transfer and breaking the whole lib for us! https://dev.twitter.com/blog/deprecating-http-1.0-streaming-api

    Userstream passed already mid-november and has been broken since, cf #190 I first didn't pay much more attention to it than reading the issue thread since I only use the public statuses.filter stream. But I just found out about this announce and browsing issues it became clear the userstream issue here was coming from this change, which did happen on November 23rd in fact (https://dev.twitter.com/discussions/23224#comment-53758) just as the issues reported here confirm.

    The thing is the announce also says that on January 13, Twitter will apply it as well for all the other streaming calls, meaning they probably will all be broken as well. So this motivated me to fix the issue for userstream and supposedly for the other ones further on.

    The solution was to stop asking for gzip encoded data for streaming calls since they already answer not zipped with the HTTP1.0 calls (like statuses/filter for now) and should not be zipped when dealing with chunked transfer. This also required to adjust the parsing of the chunks to separate "delimited" length sent by twitter from actual data.

    I've tried it out successfully on a combination of calls on (public stream HTTP1.0 | user stream HTTP1.1chunked) x (not blocking | blocking | with timeout) x (low traffic | high traffic | high traffic with argument 'delimited') with python 2.6 & 2.7 only. I don't believe I've modified anything incompatible but any tryout from py3 users would be great.

    I also took the occasion to fix a couple other issues, including fixing some hanging when using the timeout with low traffic, providing TwitterHTTPErrors on streaming calls errors, fixing the broken follow create/destroy with cmdline and the irc bot, and completing the POST methods list.

    Considering the urge, I will personnally migrate my IRC bot gazouilleur to my branch until this is pulled or handled otherwise.

    git+https://github.com/RouxRC/[email protected]

    Happy tweeting holidays!

    PS: Twitter also announced an SSL change for Jan 6, but since all the calls are already using secure by default, we should't be at risk here.

    edit 28/12: I've completed this with fixing the tilde sending issue for python 2, and I added the support for API calls to send images as discussed in #127 , it now works when feeding the corresponding argument with raw read of a file. For instance:

    twitter.update_with_media(status="Youpi !", 'media[]' = open('img.jpg', 'rb').read())
    opened by RouxRC 21
  • Twitter Stream API + OAuth not working

    Twitter Stream API + OAuth not working

    I've used the code some months ago, with the streaming API and the OAuth method and it worked.

    Today I tried again and I'm getting a

    HTTP Error 401: Unauthorized
    

    passing through

     stream.py", line 52, in handle_stream_response
    

    and originating in

     urllib2.py, line 521, in http_error_default
    

    The same OAuth works fine with other methods: I tried both statuses.home_timeline() and direct_messages.new()

    opened by kuzeko 18
  • Twitter changed Trends API (again) so trends() no longer works

    Twitter changed Trends API (again) so trends() no longer works

    See https://dev.twitter.com/blog/changing-trends-api for an overview of the new API that is no longer compatible with this Python package (AFAICT.)

    In short, the previous Twitter(...).trends() approach no longer works, and a call of the form http://api.twitter.com/1/trends/1.json doesn't seem to be compatible with the design philosophy that's worked so well up till this point. We've previously brainstormed some ideas in https://github.com/sixohsix/twitter/issues/24 that might be worth revisiting here considering that there does seem to be a gravitation towards this particular scheme of encoding parameters as part of the URL itself.

    I'm happy to help work out a patch if we can come to agreement on what should be done here. As it stands, some new errata has been introduced into my book/code for Mining the Social Web, which uses this package extensively, so I'd like to help push though something quickly. Thanks.

    opened by ptwobrussell 17
  • Autodeploy to PyPI

    Autodeploy to PyPI

    As suggested in https://github.com/sixohsix/twitter/issues/356, I'll set up automated deploys:

    • Deploy to TestPyPI on merge to master, to make sure the release mechanism is working smoothly and avoid surprises on release day
    • Deploy to production PyPI for GitHub releases/tags

    I've set up a test twitter project on TestPyPI.

    @RouxRC If you create an account on https://test.pypi.org, I'll give you access too.

    Then, to use https://github.com/pypa/gh-action-pypi-publish, we then need to create API tokens for TestPyPI and PyPI and store them as secrets under https://github.com/sixohsix/twitter/settings.

    TODO:

    1. Add an API token called (say) twitter-ci at https://test.pypi.org/manage/account/token/
    2. Paste the token as TEST_PYPI_PASSWORD at https://github.com/sixohsix/twitter/settings/secrets/actions/new
    3. Repeat for production PyPI https://pypi.org/manage/account/token/, save as PYPI_PASSWORD

    More info on PyPI API tokens: https://pypi.org/help/#apitoken

    I don't have access to https://github.com/sixohsix/twitter/settings. @RouxRC Please could you either give me access to that, or please could you follow the instructions above to add the tokens?

    opened by hugovk 16
  • Fix streams timeout & hangup behavior + ensure python2.6 compat

    Fix streams timeout & hangup behavior + ensure python2.6 compat

    Here are the changes to fix the misbehavior of the timeout in case of low tweets by catching Twitter's keep-alive heartbeat signals thanks to the select.select originally added in #178 and still problematic as pointed out by @ksecrist in #202

    I also generalized the hangup to all cases since there is no reason to stay in infinite loop after a hangup in non-blocking mode.

    And to make things easier and avoid merging issues, I adapted the refacto and fixed python2.6 compatibility from @adonoho's #201

    opened by RouxRC 16
  • Test on GitHub Actions

    Test on GitHub Actions

    This tests with the same as Travis CI, and I replaced nightly with 3.10-dev, the nearest equivalent.

    Example: https://github.com/hugovk/twitter/actions/runs/360319693

    They fail for me because:

    details: {u'errors': [{u'message': u'User is over daily status update limit.', u'code': 185}]}
    

    Will try again tomorrow.

    opened by hugovk 15
  • A Simpler Fix to the Streaming Code due to Changes from Twitter on Jan. 13, 2014.

    A Simpler Fix to the Streaming Code due to Changes from Twitter on Jan. 13, 2014.

    Gentlefolk,

    First allow me to applaud and thank RouxRC on his fine work pushing this little library forward. This pull request would not have been possible without his efforts. That said, RouxRC has dropped a quite large pull request that had problems in my Python3 system. When I rolled back to Python2, the system started working but would not stay connected for very long.

    As a result of the above, I felt I needed to look into RouxRC's pull request in more detail and use just the parts I needed to get my streams running again. Any errors in this pull request are mine and do not reflect negatively on RouxRC or his code.

    RouxRC's streaming patch falls into two main areas. First, it modifies the api.py to respect a new property, gzip. I have largely copied his work here. I did simplify how he set the headers from 3 lines to one. The second fix occurs in stream.py. Once the gzip compression was turned off, I was able to see what Twitter is now sending us. Even though length delimiters are turned off, Twitter nonetheless is inserting a hex encoded number and a \r\n between JSON items. RouxRC and I differ in how we chose to address these changes. My fix is focussed upon handling those extra items if they appear in the stream, removing them and then returning to the existing control flow. The important code block is below and my changes occur with the if statement:

        while True:
            try:
                utf8_buf = self.buf.decode('utf8').lstrip()
                if utf8_buf and utf8_buf[0] != '{':  # Remove the hex delimiter length and extra whitespace.
                    utf8_buf = utf8_buf.lstrip('0123456789abcdefABCDEF')
                    utf8_buf = utf8_buf.lstrip()
                res, ptr = self.decoder.raw_decode(utf8_buf)
                self.buf = utf8_buf[ptr:].encode('utf8')
                yield wrap_response(res, self.handle.headers)
    

    RouxRC's code does this in a different way. I believe my solution is both shorter and more robust. But you, gentle reader, are the ultimate arbiter. RouxRC did identify in his code some opportunities to raise TwitterHTTPErrors. I've tried to duplicate those.

    I've run this set of fixes under Python 3.3.3 and Python 2.7.6 both on OS X 10.8.5 (Mountain Lion).

    In addition to the changes to the library, I modernized a test script, stream-example to take the OAuth parameters needed by modern Twitter. As I also use PyCharm, I've added .idea to the .gitignore file.

    Again, this simpler fix would not have been possible without the fine work of RouxRC. Thank you RouxRC.

    Anon, Andrew

    opened by adonoho 14
  • Userstream not working anymore.

    Userstream not working anymore.

    I'm having problems with user streams since a few days back. I can use the example in the README file and it seems to connect fine.

    But I don't get any messages what so ever.. And the stream connection seems to still be alive. I seems to be alive because even if I set the socket timeout to be about 1 min it never times out.

    It doesn't seem to raise any errors either so I don't really know what to do now.

    "Normal" streams IE just TwitterStream without specifying domain works so I have no Idea what the problem could be.

    opened by DarkDefender 14
  • Fix for broken PUT methods #414

    Fix for broken PUT methods #414

    Pass _method directly to urllib_request to enable PUT requests and also ensure consistency between signature and actual request,.

    Pass id parameter into auth.encode_params() for PUT requests, as required by two existing API methods using PUT.

    opened by snail-coupe 13
  • NameError: name 'Twitter' is not defined

    NameError: name 'Twitter' is not defined

    I'm using Python3.5 on ubuntu 16

    from twitter import *
    
    t = Twitter(auth=OAuth(access_token, access_secret, 
    	consumer_key, consumer_secret))
    print(t)
    

    when i run the code I get the error "NameError: name 'Twitter' is not defined"

    opened by prateekkrjain 13
  • Media uploading

    Media uploading

    I've been testing media uploading following the examples provided in the README. The method is based on creating a new instance of the Twitter class:

     t_upload = Twitter(domain='upload.twitter.com', auth=OAuth(token, token_secret, consumer_key, consumer_secret))
    

    And later using the old instance to add the uploaded media to a tweet:

      t.statuses.update(status="PTT ★", media_ids=",".join([id_img1, id_img2]))
    

    I've been testing a different approach, that could be like:

    1. Changing the domain in the instance of the Twitter class:

      t.domain = 'upload.twitter.com'

    2. Uploading the images with the original instance of the Twitter class (but with different domain).

    3. Changing the domain to the original one:

      t.domain = 'api.twitter.com'

    4. Publishing the tweet containing the images.

    I was wondering if this approach is ok (and, I believe, more simple than creating a secondary instance to upload images). If this is true, maybe it would be nice to modify de upload methods to change internally the domain and so on. Or, at least, maybe providing the adequate methods for changing the domains when needed.

    opened by fernand0 1
  • Test CI on Windows and macOS

    Test CI on Windows and macOS

    Follow on from https://github.com/python-twitter-tools/twitter/pull/451#issuecomment-1246747905.

    ~Drop support for Python 3.6, end-of-life on 2021-12-23.~ Moved to #454.

    On the CI, test Ubuntu with:

    • Python 2.7 (CPython and PyPy)
    • the lowest and highest 3.x versions
    • Any dev versions

    And also test Windows on 3.8 and macOS 3.9.

    opened by hugovk 4
  • twitter-archiver only works with recent tweets

    twitter-archiver only works with recent tweets

    hello, as said in the title i would like to archive all the tweets of an user even if they've been active for years and, then, have posted thousands of tweets. however, twitter-archiver allows me to collect only a couple of tweets throughout the current year - or sometimes end of last year.

    why is there a limit? and how can i bypass it, please?

    opened by msw9 1
  • twitter-archiver not working

    twitter-archiver not working

    i use this line of command (ms-dos) twitter-archiver <user> but here are the error messages that i get: Fail: Twitter sent status 400 for URL: 1.1/statuses/user_timeline.json using parameters (count=200&include_rts=1&screen_name=osezlefeminisme&tweet_mode=extended) details: {'errors': [{'code': 215, 'message': 'Bad Authentication data.'}]}

    CLI 
    opened by msw9 1
  • Roadmap Twitter v2

    Roadmap Twitter v2

    • [X] ensure code compatibility
    • [x] add helper class Twitter2
    • [x] add helper class TwitterStream2
    • [ ] update tests
    • [x] handle :id argument in middle of urls (i.e. /2/tweets/id/retweeted_by)
    • [x] better document middle arguments use and _id
    • [ ] complete internal help doc
    • [ ] improve expansions, fields arguments use
    • [ ] cleanup _json / params mess
    • [ ] Test all open v2 routes https://developer.twitter.com/en/docs/api-reference-index#Twitter
    • [ ] complete documentation
    • [ ] cleanup shell tools & irc bot ?

    example calls

    feature Documentation 
    opened by boogheta 2
Releases(twitter-1.19.6)
Example app to be deployed to AWS as an API Gateway / Lambda Stack

Disclaimer I won't answer issues or emails regarding the project anymore. The project is old and not maintained anymore. I'm not sure if it still work

Ben 123 Jan 01, 2023
Simple base for a telethon bot!

Telethon Bot Simple base used to make a Telegram Bot in telethon. Join @BotzHub! Note: The client, here, is named BotzHub. Fork and add your plugins t

Aditya 54 Oct 21, 2022
A python api to get info on covid-19

A python api to get info on covid-19

roof 2 Sep 18, 2022
rewise is an unofficial wrapper for google search's auto-complete feature

rewise is an unofficial wrapper for google search's auto-complete feature

Somdev Sangwan 71 Jul 19, 2022
Social Framework

Social Int Framework Social Int Framework its a Selenium script that scrape the IG photos and do a Reverse search on google and yandex for finding ano

29 Dec 06, 2022
Status-embed - Cool open source profile embed for Discord

Current Status : Incomplete Status Embed Status Embed is an awesome open source

Ritabrata Das 2 Feb 17, 2022
Emo-Fun is a bot which emojifies the text you send it

About Emo-Fun is a bot which emojifies the text you send it. It is easier to understand by an example Input : Hey this is to show my working!! Output

Suvodeep Sinha 3 Sep 30, 2022
A pdisk uploader bot written in Python

Pdisk Uploader Bot 🔥 Upload on Pdisk by Url, File and also by direct forward post from other channel... Features Post to Post Conversion Url Upload D

Paritosh Kumar 33 Oct 21, 2022
Stock Market Insights is a Dashboard that gives the 360 degree view of the particular company stock

fedora-easyfix A collection of self-contained and well-documented issues for newcomers to start contributing with How to setup the local development e

Ganesh N 3 Sep 10, 2021
PunkScape Discord bot to lookup rarities, create diptychs and more.

PunkScape Discord Bot A Discord bot created for the Discord server of PunkScapes, a banner NFT project. It was intially created to lookup rarities of

Akuti 4 Jun 24, 2022
This is a simple Python bot to identify sentiments in tweets

Twitter-Sentiment 👋 Hi There! 📱 This is a simple Python bot to identify sentiments in tweets 👨‍💻 This project was made for study, and pratice. You

Guilherme Silva 1 Oct 28, 2021
The Most advanced and User-Friendly Google Collab NoteBook to download Torrent directly to Google Drive with File or Magnet Link support and with added protection of Timeout Preventer.

Torrent To Google Drive (UI Added! 😊 ) A Simple and User-Friendly Google Collab Notebook with UI to download Torrent to Google Drive using (.Torrent)

Dr.Caduceus 33 Aug 16, 2022
A Pancakeswap and Uniswap trading client (and bot) with limit orders, marker orders, stop-loss, custom gas strategies, a GUI and much more.

Pancakeswap and Uniswap trading client Adam A A Pancakeswap and Uniswap trading client (and bot) with market orders, limit orders, stop-loss, custom g

570 Mar 09, 2022
C Y B Ξ R UserBot is a project that simplifies the use of Telegram. All rights reserved.

C Y B Ξ R USΞRBOT 🇦🇿 C Y B Ξ R UserBot is a project that simplifies the use of Telegram. All rights reserved. Automatic Setup Android: open Termux p

C Y B Ξ R 0 Sep 20, 2022
All in one Search Engine Scrapper for used by API or Python Module. It's Free!

All in one Search Engine Scrapper for used by API or Python Module. How to use: Video Documentation Senginta is All in one Search Engine Scrapper. Wit

33 Nov 21, 2022
A discord token nuker With loads of options that will screw an account up real bad, also has inbuilt massreport, GroupChat Spammer and Token/Password/Creditcard grabber and so much more!

Installation | Important | Changelogs | Discord NOTE: Hazard is not finished! You can expect bugs, crashes, and non-working functions. Please make an

Rdimo 470 Aug 09, 2022
通过GitHub的actions 自动采集节点 生成订阅信息

VmessActions 通过GitHub的actions 自动采集节点 自动生成订阅信息 订阅内容自动更新再仓库的 clash.yml 和 v2ray.txt 中 然后PC端/手机端根据自己的软件支持的格式,订阅对应的链接即可

skywolf627 372 Jan 04, 2023
go-cqhttp API typing annoations, return data models and utils for nonebot

go-cqhttp API typing annoations, return data models and utils for nonebot

风屿 6 Jan 04, 2023
A tool for creating credentials for accessing S3 buckets

s3-credentials A tool for creating credentials for accessing S3 buckets For project background, see s3-credentials: a tool for creating credentials fo

Simon Willison 138 Jan 06, 2023
A Serverless Application Model stack that persists the $XRP price to the XRPL every minute as a TrustLine. There are no servers, it is effectively a "smart contract" in Python for the XRPL.

xrpl-price-persist-oracle-sam This is a XRPL Oracle that publishes external data into the XRPL. This Oracle was inspired by XRPL-Labs/XRPL-Persist-Pri

Joseph Chiocchi 11 Dec 17, 2022