Changed caption system to comments + rate limiting issues (fixed i think)
This commit is contained in:
parent
228267524a
commit
01d4a8539f
57
igmirror.py
57
igmirror.py
|
@ -157,15 +157,13 @@ def pixelfed_dlposts(acc_id, data):
|
||||||
print('I| skipping IG post {}:{}. Already added'.format(acc_id, item['shortcode']))
|
print('I| skipping IG post {}:{}. Already added'.format(acc_id, item['shortcode']))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
print('I| processing IG post {}:{}'.format(acc_id, item['shortcode']))
|
print('I| >>>> {}:{}'.format(acc_id, item['shortcode']))
|
||||||
ig_url = 'https://www.instagram.com/p/{}/'.format(item['shortcode'])
|
ig_url = 'https://www.instagram.com/p/{}/'.format(item['shortcode'])
|
||||||
title = item['title'] if 'title' in item else None
|
title = item['title'] if 'title' in item else None
|
||||||
|
|
||||||
caption = item['edge_media_to_caption']['edges'][0]['node']['text'] \
|
caption = item['edge_media_to_caption']['edges'][0]['node']['text'] \
|
||||||
if len(item['edge_media_to_caption']['edges']) > 0 else ''
|
if len(item['edge_media_to_caption']['edges']) > 0 else ''
|
||||||
altcaption = item['accessibility_caption'] if 'accessibility_caption' in item else None
|
altcaption = item['accessibility_caption'] if 'accessibility_caption' in item else None
|
||||||
full_caption = caption
|
|
||||||
full_altcaption = altcaption
|
|
||||||
|
|
||||||
# add support for posts with multiple images
|
# add support for posts with multiple images
|
||||||
# get the data from the post URL. (we need all images, as IG can have not only 1 image in the post)
|
# get the data from the post URL. (we need all images, as IG can have not only 1 image in the post)
|
||||||
|
@ -183,6 +181,7 @@ def pixelfed_dlposts(acc_id, data):
|
||||||
failed = False
|
failed = False
|
||||||
|
|
||||||
# we add support to multiple media here
|
# we add support to multiple media here
|
||||||
|
print('I| uploading media for {}:{}... '.format(acc_id, item['shortcode']), end='')
|
||||||
media2iterate = [a['node']['display_url'] for a in multmedia] if multiple else [item['display_url']]
|
media2iterate = [a['node']['display_url'] for a in multmedia] if multiple else [item['display_url']]
|
||||||
for media in media2iterate:
|
for media in media2iterate:
|
||||||
_token, jsdata = pixelfed_postimage(acc_id, media, accdata)
|
_token, jsdata = pixelfed_postimage(acc_id, media, accdata)
|
||||||
|
@ -193,9 +192,9 @@ def pixelfed_dlposts(acc_id, data):
|
||||||
jsdata_items.append(jsdata)
|
jsdata_items.append(jsdata)
|
||||||
if failed:
|
if failed:
|
||||||
continue
|
continue
|
||||||
|
print('done')
|
||||||
|
|
||||||
# add the accesibility captions
|
# add the accesibility captions
|
||||||
caption = caption[0:136]+'...' if len(caption) > 140 else caption
|
|
||||||
i = 0
|
i = 0
|
||||||
for jsdata in jsdata_items:
|
for jsdata in jsdata_items:
|
||||||
jsdata['description'] = ig_url
|
jsdata['description'] = ig_url
|
||||||
|
@ -210,22 +209,50 @@ def pixelfed_dlposts(acc_id, data):
|
||||||
jsdata['alt'] = altcaption[0:136]+'...' if len(altcaption) > 140 else altcaption
|
jsdata['alt'] = altcaption[0:136]+'...' if len(altcaption) > 140 else altcaption
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
|
_headers = {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'X-CSRF-TOKEN': _token,
|
||||||
|
'X-Requested-With': 'XMLHttpRequest',
|
||||||
|
'X-XSRF-TOKEN': accdata['cookie']['XSRF-TOKEN']
|
||||||
|
}
|
||||||
# publish the post using Pixelfed API
|
# publish the post using Pixelfed API
|
||||||
|
# the caption will be the original instagram URL
|
||||||
|
print('I| publishing post for {}:{}... '.format(acc_id, item['shortcode']), end='')
|
||||||
r = requests.post('https://'+config()['instance']+'/api/compose/v0/publish',\
|
r = requests.post('https://'+config()['instance']+'/api/compose/v0/publish',\
|
||||||
json={"media": jsdata_items, "caption": caption, "visibility": "public", "cw": False,\
|
json={"media": jsdata_items, "caption": ig_url, "visibility": "public", "cw": False,\
|
||||||
"comments_disabled": False, "place": False, "tagged": [],"optimize_media": True},\
|
"comments_disabled": False, "place": False, "tagged": [],"optimize_media": True},\
|
||||||
cookies=accdata['cookie'],\
|
cookies=accdata['cookie'], headers=_headers
|
||||||
headers={
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'X-CSRF-TOKEN': _token,
|
|
||||||
'X-Requested-With': 'XMLHttpRequest',
|
|
||||||
'X-XSRF-TOKEN': accdata['cookie']['XSRF-TOKEN']
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
accposts.append(item['shortcode'])
|
|
||||||
print('I| uploaded media for {}:{} : {}'.format(acc_id, item['shortcode'], r.status_code))
|
|
||||||
|
|
||||||
print('I| done uploading media for {}'.format(acc_id))
|
# do a comment as it supports larger descriptions
|
||||||
|
if len(r.text) > 5:
|
||||||
|
ps = r.text.strip('/').split('/')
|
||||||
|
status_id = ps[len(ps)-1]
|
||||||
|
print('done | StatusID -> {}'.format(status_id))
|
||||||
|
|
||||||
|
print('I| publishing comments containing caption for {}:{}... '.format(acc_id, item['shortcode']), end='')
|
||||||
|
i = 1
|
||||||
|
failed = False
|
||||||
|
for comment in [caption[i:i+495] for i in range(0, len(caption), 495)]:
|
||||||
|
r2 = requests.post('https://'+config()['instance']+'/i/comment',\
|
||||||
|
json={'comment': '('+str(i)+') '+comment, 'item': status_id, 'sensitive': False},\
|
||||||
|
cookies=accdata['cookie'], headers=_headers
|
||||||
|
)
|
||||||
|
if not r2.status_code == 200:
|
||||||
|
failed = True
|
||||||
|
print('err. CODE -> {}'.format(r2.status_code))
|
||||||
|
print(r2.text)
|
||||||
|
break
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
if not failed:
|
||||||
|
print('done')
|
||||||
|
accposts.append(item['shortcode'])
|
||||||
|
print('I| uploaded post {}:{} : OK'.format(acc_id, item['shortcode']))
|
||||||
|
|
||||||
|
# to avoid Pixelfed rate-limiting
|
||||||
|
time.sleep(10)
|
||||||
|
|
||||||
db_set('posts', acc_id, accposts)
|
db_set('posts', acc_id, accposts)
|
||||||
|
|
||||||
# upload media and return data
|
# upload media and return data
|
||||||
|
|
Loading…
Reference in New Issue