Skip to main content

A Twitter plugin for Sopel

Project description

sopel-twitter

A Twitter plugin for Sopel.

Installation

Releases are hosted on PyPI, so after installing Sopel, all you need is pip:

$ pip install sopel-twitter

If you want to use the development version, simply clone the repository and use pip install path/to/sopel-twitter

Newer library versions

sopel-twitter relies on a third-party library to access data, which does not always publish its latest code to PyPI. If you run into problems with this plugin, install the latest library code and see if that solves your issue.

Please also feel free to submit pull requests updating this plugin's version constraints if you have tested a newer library release than what is currently allowed. Thanks for your help!

Configuring

Twitter account required to use this plugin as of 1 July 2023. You probably want to minimize the potential impact of adverse action by using a throwaway login instead of your real profile. New accounts can (as of 19 July 2023) be verified using only an email address.

The easiest way to configure sopel-twitter is via Sopel's configuration wizard – simply run sopel-plugins configure twitter and enter the values for which it prompts you.

Otherwise, you can edit your bot's configuration file:

[twitter]
username = mybotaccount
password = s3cretb0tp@ss
# Both Required

show_quoted_tweets = True
# Optional: For quote-tweets, send a second message showing the quoted tweet?
# Default: True

alternate_domains =
    fxtwitter.com
    vxtwitter.com
    nitter.net
# Optional: What other domains should we treat like twitter domains?
# Default: fxtwitter.com, vxtwitter.com, nitter.net

Important housekeeping notes

The library this plugin uses for Twitter data access previously stored its login session data in the current working directory. For Sopel, that was the directory from which the sopel command was run.

As of sopel-twitter 1.3.1, a newer library version became available with support for storing session data in Sopel's homedir instead. You can clean up the old session files left behind by sopel-twitter 1.3.0 by running e.g. find / -type f -name 'sopel-twitter*.json' 2>/dev/null. (Running find on / tends to output numerous "Permission denied" errors, so suppressing stderr is recommended.)

Prior to the release of sopel-twitter 1.3.2, the session data filename changed upstream from .json to .tw_session. This plugin will attempt to rename the old session file if it exists, but if that fails you might want to clean up the leftover config_name.sopel-twitter.json file.

Usage

Just send a link to a tweet or profile!

You can also retrieve a user's info with the .twitinfo command:

< Wiz> .twitinfo NASA
< Sopel> [Twitter] NASA (@NASA) ✔️ | Pale Blue Dot | http://www.nasa.gov/
         | 204 friends, 46,602,251 followers | 65,377 tweets, 13,040 ♥s
         | Joined: 2007-12-19 - 20:20:32UTC | There's space for everybody. ✨

Changes between 1.3.7 and 1.3.8

Added:

  • Handle more exception types when fetching tweets (#66)

Changed:

  • Upgrade minimum tweety-ns version to 1.1.4 (#65)
  • Check public session state property instead of internal value (#65)

Changes between 1.3.6 and 1.3.7

Added:

  • Gracefully truncate long tweet text (#61)

Changed:

  • Upgrade to newer tweety-ns library: 1.1.* >= 1.1.2 (#63)

Meta:

  • Add automatic package publishing
  • Clean up unused source files

Changes between 1.3.5 and 1.3.6

Added:

  • Handle fixvx.com links by default (#60)
  • Better documentation about keeping the upstream library updated

Changes between 1.3.4 and 1.3.5

Changed:

  • Upgrade to newer tweety-ns library: any 1.0.* version (#59)

Changes between 1.3.3 and 1.3.4

Fixed:

  • Handle int fields of User that can be None, again (#57)

Changes between 1.3.2 and 1.3.3

Added:

  • Handle x.com links (#55)

Fixed:

  • Handle int fields of User that can be None (#54)
  • Correctly escape extra domains when lazily building URL patterns (#56)

Changes between 1.3.1 and 1.3.2

Changed:

  • Use updated tweety-ns 0.9.9 with updated session storage filename (#53)
    • .json has become .tw_session
    • sopel-twitter will automatically rename the old .json file(s) if present, unless the corresponding tw_session file already exists (i.e. tweety-ns was updated prior to installing sopel-twitter 1.3.2)

Fixed:

  • Handle new ActionRequired exception type (#53)
    • Just a graceful failure message, for now; open an issue if you actually run into this, to help gauge how important more comprehensive handling might be.

Changes between 1.3.0 and 1.3.1

Changed:

  • Use updated tweety-ns with option to specify session JSON storage location (#51)
    • Now stored in Sopel's homedir
    • See README for shell commands suggested for cleaning up the old ones

Fixed:

  • Handle new DeniedLogin exception (#52)

Changes between 1.2.0 and 1.3.0

Breaking:

  • Login with username/password is now required
    • Creating a throwaway Twitter account is recommended

Changed:

  • Updated to tweety-ns 0.9 (#50)

Changes between 1.1.0 and 1.2.0

Breaking:

  • Twitter cookies are now required

Changed:

  • Updated to tweety-ns 0.8 (#48)

Changes between 1.0.1 and 1.1.0

Changed:

  • Updated to tweety-ns 0.7, including revamped exceptions (#46)

Changes between 1.0.0 and 1.0.1

Fixed:

  • Don't cache Tweety object; it stops working after some hours (#43)

Changes between 0.4.1 and 1.0.0

Important: Package name is now sopel-twitter

Added:

  • Option to specify additional domains that can be treated as Twitter links (#34, #37)

Changed:

  • Use BooleanAttribute setting type where appropriate (#27)
  • Use future-proof plugin decorators (#30)
  • Migrate from namespace package to entry point (#41)
  • Migrate to Tweety library for data access; no more API keys (#42)
  • Minimum Sopel version raised to 7.1 (#27)

Fixed:

  • /i/web/status links (#33)
  • Collapse consecutive newlines (#36)
  • Properly set up logger (#38)

Changes between 0.4.0 and 0.4.1

Fixed:

  • Detecting user profile links with trailing slash or query params (#28)
  • Error when quoted tweet has been deleted (#31)

Changes between 0.3.2 and 0.4.0

Added:

  • .twitinfo command for user lookup (#20)
  • Support for mobile links (#21)

Changed:

  • Updated documentation for configuration (#25) and setup of Twitter API account

Fixed:

  • Media link output when quoted tweets are involved (#24)

Changes between 0.3.1 and 0.3.2

Fixed:

  • Regression in profile link handling (#16)

Changes between 0.3.0 and 0.3.1

Fixed:

  • Stricter /i/ URL matching (#15)

Changes between 0.2.1 and 0.3.0

Changed:

  • Tweet output includes a timestamp now (#13)
  • Improved media link handling (#5, #12)

Added:

  • Handling for profile/user links (#7)
  • Handling for less common /i/web/status style links (#11)

Fixed:

  • Decode HTML entities before output (#14)

Changes between 0.2.0 and 0.2.1

Fixed:

  • Some quoted tweets would cause KeyError: 'text' (#9)

Changes between 0.1.2 and 0.2.0

Changed:

  • Now requires Sopel 7.x (#8)
  • Newlines in tweet text will be replaced with a carriage return symbol, to indicate author intention (#4)

Added:

  • Handling of 280-character tweets (#4)
  • More graceful handling of API errors (#6)

Meta:

  • Package metadata updated (new maintainer, HTTPS links)

Changes between 0.1.1 and 0.1.2

Added:

  • Tweet link handling

Changes between 0.1.0 and 0.1.1

Fixed:

  • Unicode on Python 3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sopel_twitter-1.3.8.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

sopel_twitter-1.3.8-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file sopel_twitter-1.3.8.tar.gz.

File metadata

  • Download URL: sopel_twitter-1.3.8.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for sopel_twitter-1.3.8.tar.gz
Algorithm Hash digest
SHA256 65a0df4f33b2acc1bc1e6c5783ef0b2892ecf1841ca49ccdbccd0bd9581f7c3c
MD5 6d21b56ac07767556b2ec073050a98d5
BLAKE2b-256 f38fa8ad6afe6768c5e7d0541ac41bf7fa67735328e7cd60e58c9331588084e0

See more details on using hashes here.

File details

Details for the file sopel_twitter-1.3.8-py3-none-any.whl.

File metadata

File hashes

Hashes for sopel_twitter-1.3.8-py3-none-any.whl
Algorithm Hash digest
SHA256 bec1715dc9a8f3ffd8a2cf1bbe09ca9d00973fc6739d458a6920ba475b2fd1bd
MD5 98c5448070312d903c371aeaee70e289
BLAKE2b-256 9b47657b406ecd85d57603cdcf869305342968f3eee45727ce3b592bf86b2166

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page