fix(main.py): 修复少于 4 张图片时同步文案有误的问题

修复少于 4 张图片时同步文案有误的问题

Signed-off-by: Ching <loooching@gmail.com>
This commit is contained in:
Ching 2024-01-24 22:25:59 +08:00
parent f60c1f03a5
commit 7b1b455991

58
main.py
View File

@ -149,46 +149,30 @@ unsynced_titles = set([p.title for p in unsynced_photos])
for title in unsynced_titles:
# get unsynced photos by title
photos = Photo.select().where(Photo.title == title, Photo.synced == False).order_by(Photo.created_at.asc())
if len(photos) > 1:
batches = [photos[i:i+4] for i in range(0, len(photos), 4)]
for i, batch in enumerate(batches):
idx = i + 1
batches = [photos[i:i+4] for i in range(0, len(photos), 4)]
for i, batch in enumerate(batches):
idx = i + 1
if len(photos) > 4:
status = f'{title} ({idx}/{len(batches)})'
media_ids = []
for p in batch:
# upload photo to mastodon
photo_url = get_flickr_photo_url(p)
short_url = get_flickr_photo_page_url(p, short=True)
time.sleep(3)
img_id = upload_photo_to_mastodon(photo_url)
if img_id:
media_ids.append(img_id)
status += f'\n{short_url}'
else:
logger.error('Error: {}'.format(p.title))
# post to mastodon
mastodon_client.status_post(status=status, media_ids=media_ids)
logger.info('Post: {}'.format(status))
# update synced
for p in batch:
p.synced = True
p.synced_at = datetime.datetime.now()
p.save()
else:
p = photos[0]
status = title
else:
status = title
media_ids = []
img_id = upload_photo_to_mastodon(p)
if img_id:
media_ids.append(img_id)
for p in batch:
# upload photo to mastodon
photo_url = get_flickr_photo_url(p)
short_url = get_flickr_photo_page_url(p, short=True)
status += f'\n{short_url}'
# post to mastodon
mastodon_client.status_post(status=status, media_ids=media_ids)
logger.info('Post: {}'.format(status))
# update synced
time.sleep(3)
img_id = upload_photo_to_mastodon(photo_url)
if img_id:
media_ids.append(img_id)
status += f'\n{short_url}'
else:
logger.error('Error: {}'.format(p.title))
# post to mastodon
mastodon_client.status_post(status=status, media_ids=media_ids)
logger.info('Post: {}'.format(status))
# update synced
for p in batch:
p.synced = True
p.synced_at = datetime.datetime.now()
p.save()
else:
logger.error('Error: {}'.format(p.title))