You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
#!/home/naiji/mastodon/udonge-bot/venv/bin/python
|
|
import requests
|
|
import sys
|
|
import random
|
|
import os
|
|
import os.path as op
|
|
|
|
from mastodon import Mastodon
|
|
from datetime import datetime
|
|
|
|
# --------------------------------------------------
|
|
|
|
DIR_SFW = 'sfw/'
|
|
DIR_NSFW = 'nsfw/'
|
|
|
|
def main():
|
|
|
|
mastodon = Mastodon(
|
|
access_token = 'token.dat',
|
|
api_base_url = 'https://udongein.xyz/'
|
|
)
|
|
|
|
sfwcount = len([name for name in os.listdir(DIR_SFW) if os.path.isfile(os.path.join(DIR_SFW, name))])
|
|
nsfwcount = len([name for name in os.listdir(DIR_NSFW) if os.path.isfile(os.path.join(DIR_NSFW, name))])
|
|
|
|
random_choice = random.randint(1, sfwcount + nsfwcount)
|
|
print('\ns:' + str(sfwcount) + ' n:' + str(nsfwcount) + ' r:' + str(random_choice))
|
|
|
|
is_safe = False if random_choice < nsfwcount else True
|
|
art = ""
|
|
|
|
if is_safe:
|
|
files = [f for f in os.listdir(DIR_SFW) if op.isfile(op.join(DIR_SFW, f))]
|
|
art = DIR_SFW + random.choice(files)
|
|
else:
|
|
files = [f for f in os.listdir(DIR_NSFW) if op.isfile(op.join(DIR_NSFW, f))]
|
|
art = DIR_NSFW + random.choice(files)
|
|
|
|
fformat = op.splitext(art)[1][1:]
|
|
if (fformat == 'jpg'):
|
|
fformat = 'jpeg'
|
|
|
|
with open(art, 'rb') as picture:
|
|
data = picture.read()
|
|
|
|
media = mastodon.media_post(data, f'image/{fformat}')
|
|
toot = f':gyate_reisen_love:'
|
|
|
|
mastodon.status_post(toot, media_ids=[media], visibility='unlisted', sensitive=not is_safe)
|
|
print(str(datetime.now()) + ': ' + art)
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|