@danhachuel/thunderbolt 0.6.25 → 0.6.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -42,6 +42,12 @@ def _metric_input(value: Any) -> int | None:
|
|
|
42
42
|
return normalize_instagram_metric(value)
|
|
43
43
|
|
|
44
44
|
|
|
45
|
+
def _render_instagram_bio(value: Any) -> None:
|
|
46
|
+
bio = normalize_instagram_bio(value)
|
|
47
|
+
if bio:
|
|
48
|
+
st.markdown(bio.replace("\n", " \n"))
|
|
49
|
+
|
|
50
|
+
|
|
45
51
|
def _language_index(value: Any) -> int:
|
|
46
52
|
code = language_code(value)
|
|
47
53
|
return list(LANGUAGE_CODES).index(code) if code in LANGUAGE_CODES else list(LANGUAGE_CODES).index("pt")
|
|
@@ -326,9 +332,7 @@ def _render_instagram_card(profile: dict[str, Any], characters: list[dict[str, A
|
|
|
326
332
|
with header_cols[1]:
|
|
327
333
|
st.write(f"**{_clean(profile.get('name')) or 'Sem nome'}**")
|
|
328
334
|
st.caption(f"{_clean(profile.get('handle')) or _clean(profile.get('url')) or 'sem handler'}")
|
|
329
|
-
|
|
330
|
-
if bio:
|
|
331
|
-
st.caption(f"Bio: {bio}")
|
|
335
|
+
_render_instagram_bio(profile.get("bio"))
|
|
332
336
|
st.caption(f"{_clean(profile.get('country')) or 'País não definido'} · {_clean(profile.get('language')) or 'Idioma não definido'}")
|
|
333
337
|
with header_cols[2]:
|
|
334
338
|
st.metric("posts", _metric(profile.get("post_count")))
|
|
@@ -447,9 +451,7 @@ def render_social_networks(settings: dict[str, Any]) -> None:
|
|
|
447
451
|
with preview_cols[1]:
|
|
448
452
|
st.write(f"**{_clean(data.get('name')) or _clean(data.get('username'))}**")
|
|
449
453
|
st.caption(_clean(data.get("handle")))
|
|
450
|
-
|
|
451
|
-
if bio:
|
|
452
|
-
st.caption(f"Bio: {bio}")
|
|
454
|
+
_render_instagram_bio(data.get("bio"))
|
|
453
455
|
with preview_cols[2]:
|
|
454
456
|
st.metric("posts", _metric(data.get("post_count")))
|
|
455
457
|
with preview_cols[3]:
|
|
@@ -156,6 +156,7 @@ def _profile_data_from_api(user: Mapping[str, Any], reference: Mapping[str, str]
|
|
|
156
156
|
'subscriber_count': followers,
|
|
157
157
|
'following_count': following,
|
|
158
158
|
'post_count': media,
|
|
159
|
+
'is_private': bool(user.get('is_private')),
|
|
159
160
|
'public_lookup': True,
|
|
160
161
|
'metrics_source': 'instagram_web_profile_info',
|
|
161
162
|
'last_public_lookup_at': datetime.now(timezone.utc).isoformat(),
|
|
@@ -289,6 +290,8 @@ def fetch_public_instagram_posts(source: str, limit: int = 10) -> IntegrationRes
|
|
|
289
290
|
api_posts.append(post)
|
|
290
291
|
if api_posts:
|
|
291
292
|
return IntegrationResult(True, 'Posts públicos encontrados.', reference | {'posts': api_posts[:max(1, int(limit))]})
|
|
293
|
+
if api_user.get('is_private'):
|
|
294
|
+
return IntegrationResult(False, 'Esta conta é privada. O Instagram não disponibiliza posts sem uma sessão autenticada.', reference | {'posts': [], 'is_private': True})
|
|
292
295
|
try:
|
|
293
296
|
response = requests.get(reference['url'], headers={'User-Agent': 'Mozilla/5.0', 'Accept-Language': 'pt-BR,pt;q=0.9,en;q=0.8'}, timeout=15)
|
|
294
297
|
except requests.RequestException as exc:
|
package/package.json
CHANGED