diff --git a/README.md b/README.md index 6350a07..0532e38 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,6 @@ The Bluesky Crossposter is a python script that when running will automatically To get started, get the necessary keys and passwords and enter them in auth.py. Then fill in your paths in path.py. Finally set up a way for the code to be run periodically, for example a cronjob running every five or ten minutes. +In the file toggle.py you can disable posting to twitter or mastodon if you only want to post to one of them. You can also disable logging if you have limited space where the program will run. + Bluesky Crossposter™©® developed by denvitadrogen diff --git a/crosspost.py b/crosspost.py index 1d135d2..a81ceb1 100644 --- a/crosspost.py +++ b/crosspost.py @@ -4,6 +4,7 @@ from mastodon import Mastodon from datetime import datetime, timedelta from auth import * from paths import * +import toggle import json, os, urllib.request, random, string, shutil date_in_format = '%Y-%m-%dT%H:%M:%S' @@ -16,18 +17,20 @@ bsky.login(bsky_handle, bsky_password) # After changes in twitters API we need to use tweepy.Client to make posts as it uses version 2.0 of the API. # However, uploading images is still not included in 2.0, so for that we need to use tweepy.API, which uses # the previous version. -twitter = tweepy.Client(consumer_key=TWITTER_APP_KEY, - consumer_secret=TWITTER_APP_SECRET, - access_token=TWITTER_ACCESS_TOKEN, - access_token_secret=TWITTER_ACCESS_TOKEN_SECRET) +if toggle.Twitter: + twitter = tweepy.Client(consumer_key=TWITTER_APP_KEY, + consumer_secret=TWITTER_APP_SECRET, + access_token=TWITTER_ACCESS_TOKEN, + access_token_secret=TWITTER_ACCESS_TOKEN_SECRET) -tweepy_auth = tweepy.OAuth1UserHandler(TWITTER_APP_KEY, TWITTER_APP_SECRET, TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_TOKEN_SECRET) -twitter_images = tweepy.API(tweepy_auth) + tweepy_auth = tweepy.OAuth1UserHandler(TWITTER_APP_KEY, TWITTER_APP_SECRET, TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_TOKEN_SECRET) + twitter_images = tweepy.API(tweepy_auth) -mastodon = Mastodon( - access_token = MASTODON_TOKEN, - api_base_url = MASTODON_INSTANCE -) +if toggle.Mastodon: + mastodon = Mastodon( + access_token = MASTODON_TOKEN, + api_base_url = MASTODON_INSTANCE + ) # Getting posts from bluesky @@ -147,6 +150,8 @@ def post(posts): # Function for posting tweets def tweet(post, replyTo, images, postType): + if not toggle.Twitter: + return; mediaIds = [] # If post includes images, images are uploaded so that they can be included in the tweet if images: @@ -183,6 +188,8 @@ def tweet(post, replyTo, images, postType): # More or less the exact same function as for tweeting, but for tooting. def toot(post, replyTo, images): + if not toggle.Mastodon: + return; mediaIds = [] # If post includes images, images are uploaded so that they can be included in the toot if images: @@ -264,6 +271,9 @@ def writeLog(message): now = datetime.now().strftime("%d/%m/%Y %H:%M:%S") date = datetime.now().strftime("%y%m%d") message = str(now) + ": " + message + "\n" + print(message) + if not toggle.Logging: + return; log = logPath + date + ".log" if os.path.exists(log): append_write = 'a' @@ -271,7 +281,6 @@ def writeLog(message): append_write = 'w' dst = open(log, append_write) dst.write(message) - print(message) dst.close() # Cleaning up downloaded images diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..575edba --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +atproto==0.0.24 +Mastodon.py==1.8.0 +tweepy==4.14.0 diff --git a/toggle.py b/toggle.py new file mode 100644 index 0000000..f91c6c0 --- /dev/null +++ b/toggle.py @@ -0,0 +1,3 @@ +Twitter = True +Mastodon = True +Logging = True \ No newline at end of file