From 9a94cd6bb723a6c04aaf0b80f27ea9cdddf56f58 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org>
Date: Sat, 15 Jul 2023 18:43:51 +0900
Subject: [PATCH] switch to Instagram session instead of logging in each time

---
 README.md                   | 2 +-
 instagram_utils/services.py | 4 ++--
 majak/settings/base.py      | 4 +++-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index 2a0ad7d3..32c96ece 100644
--- a/README.md
+++ b/README.md
@@ -168,7 +168,7 @@ Settings pro appky na weby:
 | `DONATE_PORTAL_REDIRECT_SOURCE` | dary.pirati.cz | identifikátor zdroje pro přesměrování na darovací portál |
 | `DONATE_PORTAL_API_URL` | "" | URL s API darovacího portálu |
 | `INSTAGRAM_USERNAME` | "" | Login username pro Instagram sync |
-| `INSTAGRAM_PASSWORD` | "" | Login heslo pro Instagram sync |
+| `INSTAGRAM_SESSION` | "" | Login session pro Instagram sync |
 
 ### Management commands
 
diff --git a/instagram_utils/services.py b/instagram_utils/services.py
index e37e904e..29b13e34 100644
--- a/instagram_utils/services.py
+++ b/instagram_utils/services.py
@@ -45,8 +45,8 @@ class InstagramDownloadService:
     def parse_media_for_user(self, username: str) -> None:
         loader = instaloader.Instaloader()
 
-        if settings.INSTAGRAM_USERNAME and settings.INSTAGRAM_PASSWORD:
-            loader.login(settings.INSTAGRAM_USERNAME, settings.INSTAGRAM_PASSWORD)
+        if settings.INSTAGRAM_SESSION and settings.INSTAGRAM_USERNAME:
+            loader.load_session(settings.INSTAGRAM_USERNAME, settings.INSTAGRAM_SESSION)
 
         profile = instaloader.Profile.from_username(loader.context, username)
 
diff --git a/majak/settings/base.py b/majak/settings/base.py
index 7f165aa8..036b10ef 100644
--- a/majak/settings/base.py
+++ b/majak/settings/base.py
@@ -1,3 +1,5 @@
+import json
+
 from os.path import join
 from pathlib import Path
 
@@ -309,4 +311,4 @@ MAPS_UTILS_MAPPROXY_URL = env.str(
 TWITTER_BEARER_TOKEN = env.str("TWITTER_BEARER_TOKEN", default="")
 
 INSTAGRAM_USERNAME = env.str("INSTAGRAM_USERNAME", default="")
-INSTAGRAM_PASSWORD = env.str("INSTAGRAM_PASSWORD", default="")
+INSTAGRAM_SESSION = json.loads(env.str("INSTAGRAM_SESSION", default="{{}}"))
-- 
GitLab