74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
import os
|
|
import sys
|
|
import requests
|
|
from instabot import Bot
|
|
from mastodon import Mastodon
|
|
|
|
id_filename = "already_posted.txt"
|
|
f = open(id_filename, "a")
|
|
f.close()
|
|
|
|
fetched_user = sys.argv[1]
|
|
username = sys.argv[2]
|
|
passwd = sys.argv[3]
|
|
mastodon_token = sys.argv[4]
|
|
|
|
bot = Bot()
|
|
bot.login(username = username, password = passwd)
|
|
|
|
mastodon = Mastodon(
|
|
access_token = mastodon_token,
|
|
api_base_url = 'https://mastodon.ml'
|
|
)
|
|
|
|
def get_post(media_id, filename):
|
|
media = bot.get_media_info(media_id)[0]
|
|
id = media["id"]
|
|
post_text = media["caption"]["text"]
|
|
link = bot.get_media_id_from_link(id)
|
|
img = []
|
|
if ("image_versions2" in media.keys()):
|
|
url = media["image_versions2"]["candidates"][0]["url"]
|
|
response = requests.get(url)
|
|
response.raw.decode_content = True
|
|
img.append(response.content)
|
|
elif("carousel_media" in media.keys()):
|
|
for e, element in enumerate(media["carousel_media"]):
|
|
url = element['image_versions2']["candidates"][0]["url"]
|
|
response = requests.get(url)
|
|
response.raw.decode_content = True
|
|
img.append(response.content)
|
|
return {
|
|
"id" : id,
|
|
"text": post_text,
|
|
"link": link,
|
|
"img" : img
|
|
}
|
|
|
|
def already_posted(id):
|
|
file = open(id_filename, 'r');
|
|
if id in file:
|
|
file.close()
|
|
return True
|
|
else:
|
|
file.close()
|
|
return False
|
|
|
|
def add_id(id):
|
|
file = open(id_filename, 'a');
|
|
file.write(id + "\n")
|
|
file.close()
|
|
|
|
|
|
|
|
|
|
twony_last_medias = bot.get_user_medias(fetched_user, filtration = None)
|
|
for e,media_id in enumerate(twony_last_medias):
|
|
post = get_post(media_id, "img_"+str(e)) # getting post info
|
|
if(not already_posted(post["id"])):
|
|
media = mastodon.media_post(media_file = post["img"], mime_type = "image/jpeg", description = post["text"]) # sending image to mastodon
|
|
post_text = str(post["text"]) + "\n" + "crosposted from " + str(post["link"]) # creating post text
|
|
mastodon.status_post(post_text, media_ids = [media["id"]]) # attaching image to post and creating a toot
|
|
add_id(post["id"]) # pushing id to "already_posted" file
|
|
|