Schedule Twitter Updates with Easy
Project description
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-12-05 16:30", template, "Awesome Twitter update."),
("2030-10-28 18:50", template, "Another awesome Twitter update."),
("2030-10-29 18:15", template2, "One more update."),
("2030-11-01 13:45", None, "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)
Schedule Twitter Updates
Schedule updates with datetime strings or integers and use custom a Template if needed.
Coo.schedule(updates, time_zone)
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, "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")
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.
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 an ordered list of strings
Post ordered updates with Delay, Interval, and a Template if needed.
Coo.tweet(updates, delay, interval, template, time_zone)
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 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)
When 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.
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)
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)
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 |
Template
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.
Documentation
Documentation available at readthedocs.org.
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
Built Distribution
File details
Details for the file coo-0.1.3.tar.gz
.
File metadata
- Download URL: coo-0.1.3.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63f7196307ec708f204bbf696ed032310b7cf15069dfcf2df239526fd64a7235 |
|
MD5 | 81f658be37fe37db698225740a3c44d1 |
|
BLAKE2b-256 | a59ea6bc262c9832b3df14c3803d4be9bd29187eff87c7823b92e3e51c0d2542 |
File details
Details for the file coo-0.1.3-py3-none-any.whl
.
File metadata
- Download URL: coo-0.1.3-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a651838166f6c72d5e4482746b420a2bdb38c8266b24c8a5147e9ce17c4bdbcb |
|
MD5 | 89d3fed05183726f79a851be46bba196 |
|
BLAKE2b-256 | 9272f370bf72150eac135449cd58034c8abd7ba51bbc02023251d95762dda1fe |