mirror of
https://gitlab.com/octtspacc/staticoso
synced 2025-06-05 22:09:23 +02:00
Support for sharing new posts on Mastodon
This commit is contained in:
@ -7,6 +7,7 @@
|
||||
| Copyright (C) 2022, OctoSpacc |
|
||||
| ================================= """
|
||||
|
||||
from Libs.bs4 import BeautifulSoup
|
||||
from Libs.mastodon import Mastodon
|
||||
from Modules.Utils import *
|
||||
|
||||
@ -23,5 +24,60 @@ def MastodonGetPostsFromUserID(Session, UserID):
|
||||
UserID,
|
||||
exclude_replies=True)
|
||||
|
||||
def MastodonDoPost(Session):
|
||||
pass # mastodon.toot('Tooting from python using #mastodonpy !')
|
||||
def MastodonDoPost(Session, Text, Lang=None, Visibility='public'):
|
||||
if Text:
|
||||
Session.status_post(
|
||||
Text,
|
||||
language=Lang,
|
||||
visibility=Visibility)
|
||||
|
||||
# TODO: Set a limit/cooldown on how many new posts at a time can be posted, or ignore posts older than date X.. otherwise if someone starts using this after having written 100 blog posts, bad things will happen
|
||||
def MastodonShare(MastodonURL, MastodonToken, Pages, SiteDomain, SiteLang, Locale):
|
||||
#return None
|
||||
Session = MastodonGetSession(MastodonURL, MastodonToken)
|
||||
Posts = MastodonGetPostsFromUserID(
|
||||
Session,
|
||||
MastodonGetMyID(Session))
|
||||
for i,e in enumerate(Posts):
|
||||
Parse = BeautifulSoup(e['content'], 'html.parser')
|
||||
Posts[i] = {
|
||||
'URL': e['uri'],
|
||||
#e['content'],
|
||||
'LastLink': Parse.find_all('a')[-1]['href'] if Parse.a else None}
|
||||
#print(i['uri'], i['content'])
|
||||
#print(Posts)
|
||||
Pages.sort()
|
||||
for File, Content, Titles, Meta, HTMLContent, Description, Image in Pages:
|
||||
if Meta['Type'] == 'Post':
|
||||
Desc = ''
|
||||
Parse = BeautifulSoup(HTMLContent, 'html.parser')
|
||||
Paragraphs = Parse.p.get_text().split('\n')
|
||||
Read = '...' + Locale['ReadFullPost'] + ':\n'
|
||||
URL = '{}/{}.html'.format(SiteDomain, StripExt(File))
|
||||
#Desc = '...' + Read + ':\n' + URL
|
||||
#DescLen = len(Read) + 30
|
||||
#if not Paragraphs[0]:
|
||||
# Paragraphs.pop(0)
|
||||
for p in Paragraphs:
|
||||
#while len(Description) <= 450:
|
||||
#if p and len(Description+p)+2 <= 450:
|
||||
if p and len(Read+Desc+p)+25 < 500:
|
||||
Desc += p + '\n\n'
|
||||
else:
|
||||
if Desc:
|
||||
break
|
||||
else:
|
||||
Desc = p[:500-25-5-len(Read)] + '...'
|
||||
#if len(Description) > 450:
|
||||
# Description = Description[:450] + '...'
|
||||
DoPost = True
|
||||
for p in Posts:
|
||||
if p['LastLink'] == URL:
|
||||
DoPost = False
|
||||
break
|
||||
if DoPost:
|
||||
MastodonDoPost(
|
||||
Session,
|
||||
Desc + Read + URL,
|
||||
SiteLang)
|
||||
#BodyDescription = Parse.p.get_text()[:150].replace('\n', ' ').replace('"', "'") + '...'
|
||||
|
Reference in New Issue
Block a user