fix get feed

This commit is contained in:
unknown 2019-11-03 03:24:30 +07:00
parent 861fa49681
commit 0083bfbb32

116
run.py
View File

@ -12,9 +12,6 @@ from xml.dom.minidom import parseString
import urllib as urllib import urllib as urllib
import send_telegram import send_telegram
import time import time
# try:
# import urllib.request as urllib
# except ImportError:
try: try:
from instagram_private_api import ( from instagram_private_api import (
@ -30,8 +27,6 @@ except ImportError:
ClientCookieExpiredError, ClientLoginRequiredError, ClientCookieExpiredError, ClientLoginRequiredError,
__version__ as client_version) __version__ as client_version)
from instagram_private_api import ClientError
from instagram_private_api import Client
import redis import redis
@ -111,69 +106,68 @@ def like_post(post_id):
return like return like
def latest_post(username, user_id): def latest_post(username, user_id):
today = datetime.date.today() try:
# today = "2019-09-13" today = datetime.date.today()
t = time.mktime(datetime.datetime.strptime(str(today), "%Y-%m-%d").timetuple()) t = time.mktime(datetime.datetime.strptime(str(today), "%Y-%m-%d").timetuple())
t = int(t) t = int(t)
feed = ig_client.user_feed(user_id, min_timestamp=str(t)) feed = ig_client.user_feed(user_id, min_timestamp=str(t))
f = open("feeds.json", "w") f = open("feeds.json", "w")
f.write(json.dumps(feed)) f.write(json.dumps(feed))
f.close() f.close()
for post in feed['items']: for post in feed['items']:
list_media = [] list_media = []
# print() post_id = post['id']
post_id = post['id'] pk = post['code']
pk = post['code'] k = '{}:{}:{}'.format("post", username, pk)
k = '{}:{}:{}'.format("post", username, pk) exist = redis_client.exists(k)
exist = redis_client.exists(k) if exist == 1:
if exist == 1: print(pk + " Exist")
print(pk + " Exist") continue
continue media_type = "photo" if post['media_type'] == 1 else "video"
media_type = "photo" if post['media_type'] == 1 else "video" if "carousel_media" in post:
if "carousel_media" in post: carousel = True
carousel = True for i, cs in enumerate(post['carousel_media'], start=1):
for i, cs in enumerate(post['carousel_media'], start=1): carousel_media_type = "photo" if cs['media_type'] == 1 else "video"
carousel_media_type = "photo" if cs['media_type'] == 1 else "video" if carousel_media_type == 'photo':
if carousel_media_type == 'photo': list_media.append({
list_media.append({ "caption":"Photo #{}".format(i),
"caption":"Photo #{}".format(i), "type":"photo",
"type":"photo", "media":cs['image_versions2']['candidates'][0]['url']
"media":cs['image_versions2']['candidates'][0]['url'] })
}) else:
else: list_media.append({
list_media.append({ "caption":"Video #{}".format(i),
"caption":"Video #{}".format(i), "type":"video",
"type":"video", "media":cs['video_versions'][0]['url']
"media":cs['video_versions'][0]['url'] })
})
else:
carousel = False
if media_type == 'photo':
url_media = post['image_versions2']['candidates'][0]['url']
else: else:
url_media = post['video_versions'][0]['url'] carousel = False
post_url = "https://instagram.com/p/{}".format(pk) if media_type == 'photo':
caption = "[POST] from {}\n\n{}\n\nLink: {}".format(username, post['caption']['text'], post_url) url_media = post['image_versions2']['candidates'][0]['url']
if len(caption) > 1000: else:
caption = caption[:1000] + '...' url_media = post['video_versions'][0]['url']
post_url = "https://instagram.com/p/{}".format(pk)
caption = "[POST] from {}\n\n{}\n\nLink: {}".format(username, post['caption']['text'], post_url)
if len(caption) > 1000:
caption = caption[:1000] + '...'
like = like_post(post_id)
like = like_post(post_id) print(pk + " Sending...")
if carousel is True:
print(pk + " Sending...") send_telegram.send_media_group(caption=caption, media=list_media)
if carousel is True: else:
send_telegram.send_media_group(caption=caption, media=list_media) send_telegram.telegram_bot_send_media(fileType=media_type, url=url_media, caption=caption)
else: print(pk + " OK")
send_telegram.telegram_bot_send_media(fileType=media_type, url=url_media, caption=caption) redis_client.setex(k, 86400, "True")
print(pk + " OK") except Exception as e:
redis_client.setex(k, 86400, "True") print(e)
return
def latest_stories(username, user_id): def latest_stories(username, user_id):
feed = ig_client.user_story_feed(user_id) feed = ig_client.user_story_feed(user_id)
if feed['reel'] is None: if feed['reel'] is None:
print('No Update') print('No Update')
# exit(9)
return False return False
taken_at = True taken_at = True
feed_json = feed['reel']['items'] feed_json = feed['reel']['items']
@ -240,8 +234,6 @@ def download_user(user, attempt=0):
if "story" in sys.argv: if "story" in sys.argv:
print("[=] Fetch STORY [=]") print("[=] Fetch STORY [=]")
latest_stories(user, user_id) latest_stories(user, user_id)
# print(user)
return user return user
except Exception as e: except Exception as e:
print(e) print(e)