jsonscraper
الأسواق
العودة إلى المجلة

كيفية تحويل ملفات IG الشخصية إلى سجل يومي للتغييرات

اجمع مؤشرات الملفات الشخصية العامة وفق جدول زمني، واحفظ لقطات مؤرخة، وارصد التغييرات من دون اختلاق مقاييس.

السياسة التحريرية الإبلاغ عن خطأ

إذا كان المسوّق يتحقق يدويًا من عشرات ملفات IG الشخصية العامة، فليست المشكلة الأساسية في الوقت اللازم لفتح الصفحات، بل في غياب سجل تاريخي قابل للمقارنة. تُظهر لقطة واحدة عدد المتابعين اليوم؛ أما لقطتان فتتيحان حساب الفرق خلال فترة محددة. ويمكن أتمتة طلب بسيط لمراقبة الملفات الشخصية، وحفظ الحقول المطلوبة فقط، وإنشاء جدول بالتغييرات.

فيما يلي مثال عملي موجز بلغة Python: يحصل على معلومات الملف الشخصي بواسطة اسم المستخدم عبر IG Scraper API، ويسجل سطرًا بصيغة JSONL مرفقًا بطابع زمني. والنتيجة مصدر تاريخي صغير يمكن ربطه بـ cron أو n8n أو بمخزن بيانات خاص. يرد الوصف الرسمي للمسار ومعاملاته في مرجع IG API.

ما السؤال الذي تجيب عنه اللقطة اليومية؟

لنفترض أن فريقًا يتابع حسابات عامة لعلامات تجارية أو شركاء، ويريد رصد التغير في عدد المتابعين أو المنشورات أو حالة التحقق. تعرض صفحة الحساب القيم الحالية، لكنها لا تحفظ بذاتها حالة الأسبوع الماضي. لذلك ينبغي أولًا تحديد الحقول المهمة، ثم حفظها مع تاريخ الرصد.

المقال: كيفية تحويل ملفات IG الشخصية إلى سجل يومي للتغييرات
الملخص: دليل عملي لمراقبة ملفات IG الشخصية العامة: إرسال طلب إلى API، وتخزين المفتاح بأمان، وحفظ لقطات تاريخية، وحساب التغييرات بين مرات التشغيل.
دور الصورة: الغلاف — الفكرة المحورية
القسم: ما السؤال الذي تجيب عنه اللقطة اليومية؟
الموضوع البصري: صورة تحريرية لبطاقات مطبوعة لملفات IG تمثلها مربعات مجردة ملوّنة لوسائل التواصل الاجتماعي، بجوار لقطات بيانات ورقية مؤرخة وملخص قصير
يعرض الملف الشخصي لقطة حالية؛ أما السجلات المؤرخة المتكررة فتنشئ تاريخًا للمقارنة.© jsonscraper · أُنشئت بالذكاء الاصطناعي

يقبل المسار /v1/user/by/username المعامل الإلزامي username. ويتضمن الرد، ضمن حقول أخرى، follower_count وfollowing_count وmedia_count وis_verified وis_private وbiography. تناسب هذه الحقول لقطةً للملف الشخصي؛ لكنها لا تتضمن سجلًا للمنشورات، ولا تفسر بذاتها أسباب تغير المؤشرات.

الغرض من النص البرمجي محدد عمدًا: جلب مجموعة من الحقول المرصودة في وقت معين ومقارنتها بالسجلات السابقة. وبهذا يستطيع المحلل أن يرى، مثلًا، أن عدد المتابعين تغير بين تاريخي حفظ، ثم ينتقل إلى التحقق اللاحق بصورة منفصلة عن الجمع الآلي.

جهّز المفتاح وقائمة الحسابات

ثبّت مكتبة الطلبات، وضع مفتاح API في متغير بيئة. لا تضع السر في ملف المصدر أو المستودع أو مخرجات البرنامج. يستخدم API معامل الطلب license_key؛ وتتولى المكتبة أدناه إنشاء سلسلة معاملات الطلب تلقائيًا.

python -m pip install requests
export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="مفتاحك"

يمكن حفظ قائمة الملفات الشخصية في ملف إعدادات أو في متغيرات المشروع. ويكفي في أول تشغيل استخدام اسم مستخدم واحد للتحقق من الاستجابة وإمكانية الوصول وحفظ البيانات. في المثال، يُمرر الحقل username بوصفه معاملًا إلى API، ولا يُقرأ المفتاح إلا من بيئة التشغيل.

إرسال الطلب وحفظ لقطة باستخدام Python

يتحقق النص البرمجي من استجابة HTTP، وحالة API الخارجية، ووجود الكائن ig. ثم يحفظ القيم الموجودة صراحةً فقط. وإذا غاب حقل ما، تُسجَّل قيمته null؛ إذ إن وضع الصفر بدلًا منها يخلط بين قيمة مجهولة وصفر حقيقي.

المقال: كيفية تحويل ملفات IG الشخصية إلى سجل يومي للتغييرات
الملخص: دليل عملي لمراقبة ملفات IG الشخصية العامة: إرسال طلب إلى API، وتخزين المفتاح بأمان، وحفظ لقطات تاريخية، وحساب التغييرات بين مرات التشغيل.
دور الصورة: رسم توضيحي داعم 2 — جانب محدد مختلف
القسم: إرسال الطلب وحفظ لقطة باستخدام Python
الموضوع البصري: مخطط معلوماتي واضح باللغة الروسية يوضح تدفق البيانات: طلب Python مجدول إلى مسار ملف IG الشخصي، وملف JSON
يوضح المخطط المسار من طلب بيانات الملف الشخصي إلى مقارنة رصدين محفوظين.© jsonscraper · أُنشئت بالذكاء الاصطناعي
import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

API_URL = "https://ig.jsonscraper.com/v1/user/by/username"
LICENSE_KEY = os.environ["JSONSCRAPER_INSTAGRAM_LICENSE_KEY"]
USERNAME = "apple"  # استبدله بملف من قائمتك
OUTPUT = Path("instagram-profile-snapshots.jsonl")

response = requests.get(
    API_URL,
    params={"username": USERNAME, "license_key": LICENSE_KEY},
    timeout=30,
)
response.raise_for_status()
payload = response.json()

if payload.get("status") != "ok" or not isinstance(payload.get("ig"), dict):
    raise RuntimeError("أعاد API حالة أو بنية غير متوقعة")

profile = payload["ig"]
record = {
    "observed_at": datetime.now(timezone.utc).isoformat(),
    "username": profile.get("username", USERNAME),
    "pk": profile.get("pk"),
    "follower_count": profile.get("follower_count"),
    "following_count": profile.get("following_count"),
    "media_count": profile.get("media_count"),
    "is_verified": profile.get("is_verified"),
    "is_private": profile.get("is_private"),
}

with OUTPUT.open("a", encoding="utf-8") as file:
    file.write(json.dumps(record, ensure_ascii=False) + "\n")

print("حُفظت اللقطة:", record["username"], record["observed_at"])

تتوافق حقول المثال وبنيته مع معلومات الملف الشخصي الموضحة لهذا المسار. يعيد الطلب الناجح رصدًا عند لحظة إرساله؛ ولتحليل التغيرات، ينبغي تشغيل النص البرمجي مرارًا وحفظ كل لقطة. تعرض صفحة IG Scraper API الطلب الأساسي واستجابة تجريبية بصيغة JSON.

احسب التغير بين اللقطات

يخزن JSONL سجلًا واحدًا في كل سطر، لذا يمكن قراءته باستخدام وحدة Python القياسية. يختار المقطع التالي أحدث سجلين لملف شخصي ويحسب الفرق في عدد المتابعين. ولا يعرض النتيجة إلا إذا احتوى السجلان على قيمة رقمية.

import json
from pathlib import Path

rows = [
    json.loads(line)
    for line in Path("instagram-profile-snapshots.jsonl").read_text(encoding="utf-8").splitlines()
]

username = "apple"
profile_rows = [row for row in rows if row.get("username") == username]
profile_rows.sort(key=lambda row: row["observed_at"])

if len(profile_rows) >= 2:
    previous, current = profile_rows[-2:]
    old = previous.get("follower_count")
    new = current.get("follower_count")
    if isinstance(old, int) and isinstance(new, int):
        print({
            "username": username,
            "from": previous["observed_at"],
            "to": current["observed_at"],
            "follower_delta": new - old,
        })

يقتصر الفرق على الرصدين المختارين. وإذا فاتت بعض مرات التشغيل، طالت الفترة بينهما؛ لذلك ينبغي أن يعرض التقرير التاريخين، لا أن يصف التغير تلقائيًا بأنه «خلال يوم». وللعمل المنتظم، اضبط التشغيل وفق جدول زمني باستخدام cron أو مجدول على منصة سحابية. وفي n8n يمكن تنفيذ الخطوات نفسها باستخدام عقدة جدولة وطلب HTTP وحفظ النتيجة في قاعدة بيانات أو جدول؛ وتختلف أسماء العقد وطريقة ربط مخزن البيانات بحسب إعدادك.

التوسع ليشمل عدة ملفات شخصية

للتعامل مع قائمة حسابات، ضع أسماء المستخدمين في ملف منفصل ومرّ عليها بحلقة تكرار. واحفظ حالة كل طلب على حدة، كي لا يؤدي تعطل أحد الملفات إلى محو البيانات التي جُمعت بنجاح عن سواه. أضف مهلة للطلب وسجلًا للأخطاء، وأعد المحاولة فقط للحسابات التي أخفق طلبها.

يمكن استخدام pk مفتاحًا للسجل إذا أعاده API، مع حفظ اسم المستخدم أيضًا لتسهيل القراءة. ويساعد المعرّف على تمييز الملف الشخصي من تسمية نصية في التقرير؛ وإذا لم تتوفر قيمة، فلا ينبغي اختلاقها أو استبدالها بحقل آخر. ومن المفيد للتحليل حفظ وقت الجمع الأصلي بتوقيت UTC وتحديد فترة المقارنة بوضوح.

إذا كانت المهمة تقتصر على جلب المعلومات بوتيرة محددة، فيتيح المعامل الموثق cache_timeout تحديد مدة التخزين المؤقت بالثواني؛ ويكون التخزين المؤقت معطلًا افتراضيًا في IG. اختر مدة تتناسب مع فترة المراقبة، واحفظها مع إعدادات الجمع لكي تُراعى معاملات الطلب عند تفسير النتائج.

ما الذي ستحصل عليه؟

بعد عدة مرات تشغيل، سيكون لديك ملف يضم لقطات زمنية للمؤشرات العامة، إلى جانب فرق بسيط يمكن حسابه بين تاريخين تختارهما. ويمكن تحميل الملف إلى Google Sheets أو PostgreSQL أو نظام تحليلات؛ كما يمكن لطبقة معالجة منفصلة إنشاء تنبيه عندما يتجاوز التغير حدًا تحدده المجموعة. فالحد قاعدة عمل تضعونها، وليس ميزة مدمجة في API.

يوفر مسار الملف الشخصي حقولًا عن الحساب؛ لذا يتطلب تدقيق المنشورات الجديدة جمع الوسائط المناسبة، لا استنتاجها من media_count. ويسرد مرجع IG API مسارًا منفصلًا لجلب المنشورات مع تحميل الصفحات باستخدام user_id والمعامل end_cursor؛ استخدمه إذا كانت المهمة تتطلب دراسة المنشورات نفسها. أما النتيجة الموضحة هنا — جدولًا تاريخيًا لمؤشرات الملف الشخصي — فيكفيها طلب واحد لكل مستخدم وحفظ متكرر للقطات.

ابدأ بملف شخصي واحد ومرتي تشغيل: تحقق من صحة حالة الاستجابة، وحفظ التواريخ، وبقاء البيانات الغائبة مجهولة بوضوح. ثم أضف قائمة الحسابات والجدول الزمني. بهذه الطريقة ستحصل على رصد قابل لإعادة الإنتاج، بفترة وقيم أصلية واضحتين، ويمكن التحقق منه وتمريره إلى عملية التحليل لاحقًا.

الناس

لم يتم إدراج أي أشخاص لهذه المقالة حتى الآن.

استمر في القراءةكيفية تقييم صنّاع المحتوى على IG من خلال وتيرة النشر: مسار عملي باستخدام Python
إقرأ المقال التالي

حوّل ما تقرأه إلى تكامل عملي

استكشف واجهات API للبيانات الاجتماعية من jsonscraper واختبر الطلبات وأنشئ سير عملك التالي.

استكشف واجهات API