jsonscraper
Piyasalar
Dergiye dön

IG Profillerini Kampanya Brifiyle Önceden API Üzerinden Karşılaştırın

Python betiği kullanıcı adını, gizlilik ve doğrulama durumlarını, profil sayaçlarını kontrol eder; ardından farklılıkları elle inceleme için işaretler.

Yayın Politikası Hata bildirin

Kampanya başlamadan önce IG hesap listesini brifle otomatik olarak karşılaştırıp yalnızca dikkat gerektiren kayıtları içeren bir CSV oluşturabilirsiniz. Betik her satır için profil bilgilerini ister, kullanıcı adını, gizlilik ve doğrulama durumlarını beklenen değerlerle karşılaştırır ve mevcut sayaçları da kaydeder. Böylece tekrarlanan manuel kontrol, kampanya işleme alınmadan önce uygulanabilir bir kontrol adımına dönüşür.

Görev: yayın öncesinde farklılıkları bulmak

Kampanya tablosunda genellikle hesap adı ve birkaç beklenti yer alır: profil herkese açık olmalı, kullanıcı adı onaylananla eşleşmeli ve doğrulama işareti brifteki kayıtla tutarlı olmalıdır. Listenin hazırlanması ile kampanyanın başlatılması arasında hesap adını değiştirebilir, gizliye alınabilir ya da benzer isimli başka bir profil olabilir. Satırları tek tek elle kontrol etmek, süreci tekrarlanabilir kılmayı ve istisnaları hızla belirlemeyi zorlaştırır.

Makale: IG profillerini kampanya brifiyle önceden API üzerinden karşılaştırın
Özet: Kampanya başlamadan önce brifteki IG profillerini otomatik olarak kontrol edin: jsonscraper’ın belgelenmiş endpoint’i üzerinden verileri alın, beklenen değerlerle karşılaştırın ve inceleme gerektiren kayıtları anlaşılır bir listede toplayın.
Görsel rolü: kapak — ana fikir
Bölüm: Görev: yayın öncesinde farklılıkları bulmak
Görsel konusu: Editoryal natürmort: üzerinde birbirinden farklı birkaç IG profili bulunan kampanya planlama sayfası
Ön kontrol, profili brifteki beklenen parametrelerle karşılaştırır ve elle değerlendirilmesi gereken satırları belirler.© jsonscraper · yapay zekâyla oluşturuldu

Bu tür bir ön tanılama için profilin kullanıcı adıyla alınması yeterlidir. jsonscraper’ın yayımlanmış IG endpoint belgelerinde GET /v1/user/by/username rotası ve username parametresi belirtilir; isteğe bağlı olarak cache_timeout da kullanılabilir. Yanıtta kullanıcı adı, tam ad, private ve verified göstergeleri, gönderi, takipçi ve takip edilen sayıları ile biyografi bulunabilir. Kullanılabilir alanları gerçek yanıttan okuyun: şema görüntüsü, bunların gözlemlenen yanıtta yer aldığını doğrular; ancak değerler farklı olabilir veya hiç bulunmayabilir.

Tabloyu ve kontrol kurallarını hazırlayın

username, expected_private ve expected_verified sütunlarını içeren profiles.csv adlı bir CSV oluşturun. Bu iki beklenti sütununa true veya false değerlerini yazın; kullanıcı adını ise @ işareti olmadan girin. Bir profil için beklenti bilinmiyorsa hücreyi boş bırakın: betik, beklenti yokluğunu hataya dönüştürmemelidir.

username,expected_private,expected_verified
examplebrand,false,true
anotheraccount,false,false

Bu kontrol iki dar kapsamlı görevi yerine getirir: alınan kullanıcı adının istenenle eşleşip eşleşmediğini belirler ve kaydedilmiş gizlilik ve doğrulama beklentilerinden sapmaları bulur. Sayaçlar ve biyografi bağlam için, insan tarafından değerlendirilmek üzere kaydedilir; bunlar kitlenin kalitesinin veya içerik üreticisinin kampanyaya uygunluğunun kanıtı olarak yorumlanmaz.

IG Scraper API’ye bağlanın

Erişim anahtarını JSONSCRAPER_INSTAGRAM_LICENSE_KEY ortam değişkeninde saklayın. Gizli anahtarı CSV’ye, kaynak koda veya çalışma günlüklerine yazmayın. Resmî IG endpoint rehberi, rotayı ve parametre adlarını açıklar; API’nin temel adresi https://ig.jsonscraper.com, anahtar parametresinin adı ise license_key’dir.

Tam listeyi işlemeden önce deneme satırı için bir istek gönderin, JSON yapısını kontrol edin ve hesabınızın erişimi olduğundan emin olun. Endpoint kullanıcı adı kabul ettiğinden, bu basit senaryoda bilinen bir profil kimliğine veya ek rotalara gerek yoktur.

Örnek: istekler, karşılaştırma ve istisnalar CSV’si

Aşağıdaki betik Python 3.8 ve üzeri sürümlerle uyumludur. CSV’yi okur, her profil için bir GET isteği gönderir, HTTP yanıt durumunu denetler ve karşılaştırma sonucuyla birlikte önemli kaynak alanları kaydeder. python -m pip install requests komutuyla bağımlılığı yükleyin, ardından çalıştırmadan önce anahtarı dışa aktarın.

Makale: IG profillerini kampanya brifiyle önceden API üzerinden karşılaştırın
Özet: Kampanya başlamadan önce brifteki IG profillerini otomatik olarak kontrol edin: jsonscraper’ın belgelenmiş endpoint’i üzerinden verileri alın, beklenen değerlerle karşılaştırın ve inceleme gerektiren kayıtları anlaşılır bir listede toplayın.
Görsel rolü: destekleyici görsel 2 — farklı ve belirli bir yön
Bölüm: Örnek: istekler, karşılaştırma ve istisnalar CSV’si
Görsel konusu: Rusça infografik: doğrulanmış veriler için bir akış
Şema, CSV’den profil endpoint’ine ve karşılaştırma sonuçlarına giden yolu gösterir: eşleşme, elle inceleme veya hata.© jsonscraper · yapay zekâ tarafından oluşturulmuş görsel
import csv
import os
import time
from pathlib import Path

import requests

BASE_URL = "https://ig.jsonscraper.com/v1/user/by/username"
API_KEY = os.environ["JSONSCRAPER_INSTAGRAM_LICENSE_KEY"]
INPUT_FILE = Path("profiles.csv")
OUTPUT_FILE = Path("preflight_results.csv")


def parse_expected(value):
    value = (value or "").strip().lower()
    if value == "true":
        return True
    if value == "false":
        return False
    return None


def profile_from_response(payload):
    # Belgelenmiş gözlemlenen yanıtta profil alanları "ig" içinde yer alır.
    if payload.get("status") != "ok":
        raise ValueError("API yanıtının durumu ok değil")
    profile = payload.get("ig")
    if not isinstance(profile, dict):
        raise ValueError("Yanıtta 'ig' altında profil nesnesi bulunmuyor")
    return profile


with INPUT_FILE.open(newline="", encoding="utf-8") as source:
    rows = list(csv.DictReader(source))

results = []
for row in rows:
    requested = (row.get("username") or "").strip().lstrip("@")
    if not requested:
        results.append({
            "requested_username": "",
            "result": "missing_username",
            "error": "username boş",
        })
        continue

    try:
        response = requests.get(
            BASE_URL,
            params={"username": requested, "license_key": API_KEY},
            timeout=30,
        )
        response.raise_for_status()
        profile = profile_from_response(response.json())

        actual_username = profile.get("username")
        actual_private = profile.get("is_private")
        actual_verified = profile.get("is_verified")
        expected_private = parse_expected(row.get("expected_private"))
        expected_verified = parse_expected(row.get("expected_verified"))

        checks = []
        if actual_username and actual_username.casefold() != requested.casefold():
            checks.append("username_mismatch")
        if expected_private is not None and actual_private != expected_private:
            checks.append("privacy_mismatch")
        if expected_verified is not None and actual_verified != expected_verified:
            checks.append("verification_mismatch")

        results.append({
            "requested_username": requested,
            "username": actual_username,
            "full_name": profile.get("full_name"),
            "is_private": actual_private,
            "is_verified": actual_verified,
            "media_count": profile.get("media_count"),
            "follower_count": profile.get("follower_count"),
            "following_count": profile.get("following_count"),
            "result": "review" if checks else "matched",
            "checks": ";".join(checks),
            "error": "",
        })
    except (requests.RequestException, ValueError, KeyError) as exc:
        results.append({
            "requested_username": requested,
            "result": "request_or_response_error",
            "error": str(exc),
        })

    # Kısa bir gecikme istekler arasında süre bırakır; belgelenmiş bir kota garantisi değildir.
    time.sleep(0.5)

fieldnames = sorted({key for item in results for key in item})
with OUTPUT_FILE.open("w", newline="", encoding="utf-8") as destination:
    writer = csv.DictWriter(destination, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(results)

print("Kaydedilen satır sayısı:", len(results), "Dosya:", OUTPUT_FILE)

Kod, gözlemlenen yanıt sarmalayıcısını, yani dıştaki status alanını ve ig profil nesnesini kontrol eder. Sağlayıcı biçimi değiştirirse yapı denetimi ilgili kaydın işlenmesini durdurur ve sessizce hatalı bir eşleşme üretmek yerine hatayı kaydeder. Betik anahtarı yazdırmaz ve sonuç dosyasına eklemez.

Sonuçları nasıl okuyabilirsiniz?

preflight_results.csv dosyasındaki matched durumlu satırlar, tanımlanan karşılaştırmalardan geçmiştir. review değeri, bir veya daha fazla parametrenin briften farklı olduğu anlamına gelir; checks sütunu hangi parametrelerin farklı olduğunu gösterir. İstek veya yanıt hataları ayrı olarak belirtilir; böylece veriye erişilememesi doğrulanmış bir eşleşme gibi görünmez.

Takipçi ve gönderi sayıları, bir kişinin mevcut profil anlık görüntüsünü başvurunun yanında görmesine yardımcı olur. Bunlar istek yanıtındaki o ana ait değerlerdir. Zaman içindeki değişimleri değerlendirmek için farklı tarihlerdeki çalıştırmaları ayrı ayrı saklayın; tek bir kontrol geçmiş içermez. Alanlar boş olabilir. Böyle bir kayıt, kimliği ve mevcut diğer göstergeleri kontrol etmek için kullanılabilir; ancak bulunmayan bir sayacı karşılaştırmak için kullanılamaz.

Kampanya başlamadan önce otomasyon

Deneme CSV’sini elle kontrol ettikten sonra betiği bir zamanlamaya veya kampanya hazırlık adımına ekleyin. Kontrolün tekrarlanabilir olması için kaynak listeyi ayrı tutun, çalıştırma tarihini kaydedin ve sonuç CSV’sini erişimi kısıtlı bir çalışma deposunda saklayın. Kullanıcı adı değişebiliyorsa yeniden işleme için sisteminizdeki kalıcı bir satır kimliğini kullanmak faydalı olur.

Liste büyüdükçe eşzamanlılık sınırı, yalnızca geçici ağ hataları için yeniden deneme ve gizli bilgiler içermeyen ayrı bir hata kodu günlüğü ekleyin. Hatalı anahtar veya geçersiz kullanıcı adı için sonsuz yeniden deneme yapmayın. cache_timeout değerini yalnızca gereken güncellik politikasına uygun şekilde ekleyin: belgelere göre IG’da önbellekleme varsayılan olarak kapalıdır; sıfırdan büyük bir değer, belirtilen süre boyunca önbelleği etkinleştirir.

Profil kontrolü, manuel karşılaştırmayı somut bir istisna listesine indirger: kampanya başlamadan önce kullanıcı adı, herkese açıklık durumu, doğrulama ve mevcut sayaçlar tek tabloda yer alır. API parametreleri ve güncel entegrasyon seçenekleri için IG Scraper API sayfasına ve rota belgelerine başvurun.

İnsanlar

Bu makale için henüz kimse listelenmedi.

Okumaya devam etIG: профillerdeki sorunları kampanya öncesinde nasıl tespit edebilirsiniz?
Sonraki makaleyi okuyun

Okuduklarınızı çalışan bir entegrasyona dönüştürün

jsonscraper sosyal veri API'lerini keşfedin, istekleri test edin ve sonraki iş akışınızı oluşturun.

API'leri Keşfet