Skip to content

Commit

Permalink
Instaloader fork from git
Browse files Browse the repository at this point in the history
  • Loading branch information
amadejkastelic committed Oct 16, 2024
1 parent f870def commit d36c7e0
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 22 deletions.
2 changes: 1 addition & 1 deletion Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ name = "pypi"
tiktokapipy = "==0.2.4.post2"
playwright = "==1.46.0"
"discord.py" = "==2.4.0"
instaloader = "==4.13"
instaloader = { git = "https://github.com/malicious/instaloader.git", ref = "2384"}
facebook-scraper = "==0.2.59"
python-magic = "0.4.27"
redvid = "==2.0.5"
Expand Down
9 changes: 3 additions & 6 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 21 additions & 15 deletions downloader/instagram.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,10 @@ def get_instance(cls) -> typing.Optional[instaloader.Instaloader]:
cls.INSTANCE = instaloader.Instaloader(
user_agent='Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0'
)
if os.path.exists('instagram.sess') and os.getenv('INSTAGRAM_USERNAME') is not None:
cls.INSTANCE.load_session_from_file(username=os.getenv('INSTAGRAM_USERNAME'), filename='instagram.sess')

username = os.getenv('INSTAGRAM_USERNAME')
if os.path.exists('instagram.sess') and username:
cls.INSTANCE.load_session_from_file(username=username, filename='instagram.sess')

return cls.INSTANCE

Expand Down Expand Up @@ -68,28 +70,32 @@ async def get_post(self) -> models.Post:
def _get_post(self) -> models.Post:
p = instaloader.Post.from_shortcode(context=self.client.context, shortcode=self.id)

download_url = None
match p.typename:
case 'GraphImage':
case 'GraphImage' | 'XDTGraphImage':
download_url = p.url
case 'GraphVideo':
case 'GraphVideo' | 'XDTGraphVideo':
download_url = p.video_url
case 'GraphSidecar':
case 'GraphSidecar' | 'XDTGraphSidecar':
node = next(p.get_sidecar_nodes(start=self.index, end=self.index))
if node.is_video:
download_url = node.video_url
else:
download_url = node.display_url

with requests.get(url=download_url) as resp:
return models.Post(
url=self.url,
author=p.owner_profile.username,
description=p.title or p.caption,
likes=p.likes,
views=p.video_view_count,
buffer=io.BytesIO(resp.content),
created=p.date_local,
)
res = models.Post(
url=self.url,
author=p.owner_profile.username,
description=p.title or p.caption,
likes=p.likes,
views=p.video_view_count,
created=p.date_local,
)
if download_url:
with requests.get(url=download_url) as resp:
res.buffer = io.BytesIO(resp.content)

return res

def _get_story(self) -> models.Post:
story = instaloader.StoryItem.from_mediaid(context=self.client.context, mediaid=int(self.id))
Expand Down

0 comments on commit d36c7e0

Please sign in to comment.