Description
Coo is an easy to use Python library for scheduling Twitter updates.
coo alternatives and similar packages
Based on the "RESTful API" category.
Alternatively, view coo alternatives based on common mentions on social networks and blogs.
-
falcon
The no-magic web API and microservices framework for Python developers, with an emphasis on reliability and performance at scale. -
hug
Embrace the APIs of the future. Hug aims to make developing APIs as simple as possible, but no simpler. -
connexion
Connexion is a modern Python web framework that makes spec-first and api-first development easy. -
Django REST Swagger
DISCONTINUED. Swagger Documentation Generator for Django REST Framework: deprecated -
pycord
Pycord is a modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python -
django-sql-explorer
SQL reporting that Just Works. Fast, simple, and confusion-free. Write and share queries in a delightful SQL editor, with AI assistance. -
django-admin-interface
:superhero: :zap: django's default admin interface with superpowers - customizable themes, popup windows replaced by modals and many other features. -
flask-restless
NO LONGER MAINTAINED - A Flask extension for creating simple ReSTful JSON APIs from SQLAlchemy models. -
apispec
A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification).. -
django-maintenance-mode
:construction: :hammer_and_wrench: shows a 503 error page when maintenance-mode is on. -
pyswagger
An OpenAPI (fka Swagger) client & converter in python, which is type-safe, dynamic, spec-compliant. -
Flask-Muck
🧹 Flask REST framework for generating CRUD APIs and OpenAPI specs in the SQLAlchemy, Marshmallow/Pydantic application stack. -
Changelog CI
Changelog CI is a GitHub Action that enables a project to automatically generate changelogs
SaaSHub - Software Alternatives and Reviews
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of coo or a related project?
Popular Comparisons
README
coo: schedule Twitter updates with easy
Coo is an easy to use Python library for scheduling Twitter updates. To use it, you need to first apply for a developer account in the Twitter Developers Platform and generate the Keys and Access Tokens.
pip install coo
Initializing
from coo import Coo
at = Coo(
"consumer_key",
"consumer_secret",
"access_token",
"access_token_secret",
preview=False
)
Alternatively, you can set preview=True
and print your tweets in the terminal instead to post them on Twitter.
Scheduling Twitter updates:
from coo import Coo
at = Coo(
"consumer_key",
"consumer_secret",
"access_token",
"access_token_secret"
)
tweets = [
("2030-10-28 18:50", template, "My Twitter update with a template."),
("2030-10-29 18:15", template2, "Update with a different template."),
("2030-11-01 13:45", None, "Awesome Twitter update without a template."),
]
at.schedule(tweets, time_zone="America/Santiago")
Or you can use a list of strings and add a delay
, interval
and a template
:
tweets = [
"My first awesome Twitter Update",
"My second awesome Twitter Update",
"My third awesome Twitter Update",
"My fourth awesome Twitter Update",
"My fifth awesome Twitter Update",
"My sixth awesome Twitter Update",
]
at.tweet(tweets, delay="13:45", interval="four_hours", template=my_template)
For more detailed options and usage, keep reading or check the documentation :blue_book:.
Scheduling Twitter Updates
Schedule updates with datetime
strings or integers and use custom templates if needed.
Coo.schedule(updates, time_zone, media)
Full example:
from coo import Coo
at = Coo(
"consumer_key",
"consumer_secret",
"access_token",
"access_token_secret"
)
tweets = [
# datetime with and without templates
("2030-10-28 18:50", template, "My Twitter update with a template."),
("2030-10-29 18:15", template2, "Update with a different template."),
("2030-11-01 13:45", None, "Awesome Twitter update without a template."),
# date with and without templates
("2030-12-25", template3, "Merry christmas!"),
("2031-01-01", None, "And a happy new year!"),
# time with and without templates
("18:46", template2, "Will be post today at 18:46."),
("23:00", None, "A tweet for today at 23:00."),
# integer (seconds) with and without templates
(3600, template, "This tweet will be posted in an hour."),
(86400, None, "This one, tomorrow at the same hour."),
]
at.schedule(tweets, time_zone="America/Santiago")
Notes for parsing DateTime strings
- If a time zone is not specified, it will set to
local
. - The time will be set to 00:00:00 if it's not specified.
- When passing only time information the date will default to today.
- A future date is needed, otherwise a
ScheduleError
is raised.
Here you can find all the Time Zones available.
Media files
There are two ways to add media files to your tweets. The first and easiest is to use one global file for all the updates:
at.schedule(tweets, time_zone="America/Santiago", media="path/to/file.png")
Also, an individual file can be set for each one of the updates:
tweets = [
("2030-10-28 18:50", template, "Update with an image.", "pics/owl.png"),
("2030-10-29 18:15", template, "Update with other media.", "videos/funny_video.mp4"),
("2030-11-01 13:45", template, "Tweet without media."),
]
Finally, it is possible to combine these to ways. For example, if most of the tweets are gonna use the same media and just a few will have a different or none:
tweets = [
("2030-11-01 13:45", template, "Tweet with global media."),
("2030-11-02 13:45", template, "Tweet with global media."),
("2030-11-03 13:45", template, "Tweet with global media."),
("2030-11-04 13:45", template, "Tweet with global media."),
("2030-11-05 13:45", template, "Tweet with global media."),
("2030-11-06 13:45", template, "Tweet with global media."),
("2030-11-07 13:45", template, "Tweet with global media."),
("2030-11-08 13:45", template, "Tweet without media.", None),
("2030-11-09 13:45", template, "Tweet without media.", None),
("2030-12-10 18:50", template, "Update with an image.", "pics/owl.png"),
("2030-12-11 18:15", template, "Update with other media.", "videos/funny_video.mp4"),
]
at.schedule(tweets, time_zone="America/Santiago", media="path/to/global_media.png")
Tweet a list of strings
Post ordered updates with delay
, interval
, and a template if needed.
Coo.tweet(updates, delay, interval, template, media, time_zone, aleatory)
from coo import Coo
at = Coo(
"consumer_key",
"consumer_secret",
"access_token",
"access_token_secret"
)
tweets = [
"My first awesome Twitter Update",
"My second awesome Twitter Update",
"My third awesome Twitter Update",
"My fourth awesome Twitter Update",
"My fifth awesome Twitter Update",
"My sixth awesome Twitter Update",
]
# post the twitter updates
at.tweet(tweets)
Delay
You can use datetime
, date
and time
strings, integers as seconds and some strings as keywords: half_hour
, one_hour
, one_day
and one_week
between others to delay the post of your first update.
# datetime, date and time strings
at.tweet(tweets, delay="2030-11-24 13:45", time_zone="America/Santiago")
at.tweet(tweets, delay="2030-11-24", time_zone="Australia/Sydney")
at.tweet(tweets, delay="13:45", time_zone="America/New_York")
# "keywords"
at.tweet(tweets, delay="one_week")
# integer
at.tweet(tweets, delay=604800)
Remember to read the Notes for parsing DateTime strings.
Interval
Use integers as seconds or some strings as keywords: half_hour
, one_hour
, one_day
and one_week
between others.
# "keywords"
at.tweet(tweets, interval="four_hours")
# integers
at.tweet(tweets, interval=14400)
Template
And of course, you can also set one template for each one of the updates.
at.tweet(tweets, template=template)
Media files
Use one media file for all of your updates:
at.tweet(tweets, media="path/to/media.jpeg")
Random updates
To tweet your updates randomly:
at.tweet(tweets, aleatory=True)
Delay and Interval Keywords
Keyword | Seconds |
---|---|
now | 0 |
half_hour | 1800 |
one_hour | 3600 |
two_hours | 7200 |
four_hours | 14400 |
six_hours | 21600 |
eight_hours | 28800 |
ten_hours | 36000 |
twelve_hours | 43200 |
fourteen_hours | 50400 |
sixteen_hours | 57600 |
eighteen_hours | 64800 |
twenty_hours | 72000 |
twenty_two_hours | 79200 |
one_day | 86400 |
two_days | 172800 |
three_days | 259200 |
four_days | 345600 |
five_days | 432000 |
six_days | 518400 |
one_week | 604800 |
Templates
Templates are very simple, just use a multiline string and add a $message
where you want your message to appear.
template = """My awesome header
$message
#python #coding #coo
"""
The Twitter API
Coo is written using the Python Twitter wrapper, and through Coo.api
you gain access to all of his models:
# get your followers
followers = at.api.GetFollowers()
# get your direct messages
d_messages = at.api.GetDirectMessages()
# favorited tweets
favorites = at.api.GetFavorites()
# mentions
mentions = at.api.GetMentions()
# retweets
retweets = at.api.GetRetweets()
And a lot more. If you are interested, check their documentation.
TODO's
- [x] Add support for random updates.
- [x] Add support for media files.
- [x] Add support for multiple media files.
- [ ] Add support for a history of tweets.
- [ ] Add support for media files from URLs.
- [ ] Add support for one template for all updates on
Coo.schedule
. - [ ] Support
.toml
files for configuration and tweets. - [ ] Support resume after a process restart (see apscheduler).
- [ ] Add a CLI.
Documentation
Documentation available at coo.readthedocs.io.
*Note that all licence references and agreements mentioned in the coo README section above
are relevant to that project's source code only.