چطوری اطلاعات Insight اینستاگرامم رو روی اکسل داشته باشم؟ (بخش اول: Facebook Graph API)
سلام :)
جواب این سوال، یه پروژه شخصی شد که انجامش تجربهی خوبی برام بود و تصمیم گرفتم اینجا، توی ویرگول، منتشرش کنم.
توی این مطلب قراره اول یه مقدمه درباره اهمیت و جذابیت این پروژه بگم، بعدش بگم چطوری با api فیسبوک میشه به دادههای اینستاگرام خودم دسترسی پیدا کنم و بعد هم کد پایتونی که با استفاده از این api این اطلاعات رو استخراج میکنه قرار میدم. احتمال زیاد این مطالب رو توی دو تا پست منتشر میکنم
خب به عنوان مقدمه اول میخوام بگم انگیزم چی بود و چطوری به سمت جواب این سوال حرکت کردم. انگیزه اصلی من دیتا بود، یعنی میخواستم دیتا جمعآوری کنم و یه مدل یادگیری ماشین باهاش آموزش بدم. اما باید بگم که این پروژه فقط به همون قسمت جمع آوری دیتا ختم شد. اما پتانسیل همچین کاری رو هم داره.
اما حل این مسئله اولین کاری که به ذهنم رسید، scrap کردن این دیتاها از Facebook Creator Studio بود (که اگه براتون سواله چیه، حتما توی کامنت بپرسین ازم) اما به دلایل فنی نشد و یا بهتره بگم من راهی پیدا نکردم. و بعد از یکمی سرچ فهمیدم که فیسبوک یه api در اختیار Developer ها میزاره که میتونن با اون به یک سری از دیتا های دسترسی پیدا کنن و این شد شروع کار.
اما چالش اصلی که خیلی از من وقت گرفت نحوه استفاده از این api بود که بعد از کلی سرچ توی داک های فیسبوک و Stack Overflow تونستم راهشو پیدا کنم و توی این بخش میخوام این کارو توضیح بدم.
0: در مرحله صفر باید با یکی از ابزارهای تغییر آی پی، آی پی رو تغییر داد!
1: اول از همه باید یه اکانت فیسبوک داشت و وارد Facebook For Developers شد. بعد از اینکه لاگین کردیم، توی صفحهای که میاره Get Started رو میزنیم و بعد از چند تا Next ازمون میخواد اسم اولین برنامهای که میخوایم بسازیم رو بنویسیم و فرقی نداره که چی باشه.
حالا یه App ساختیم و میتونیم از قابلیت هایی که فیسبوک در اختیارمون میذاره استفاده کنیم. واقعیتش اینه که از این قابلیت ها میشه برای نوشتن یه محصول درست و حسابی استفاده کرد ولی من فقط در حد انجام همین پروژه ازش استفاده کردم و چیزایی هم که ازش یاد گرفتم اینجا مینویسم.
2: حالا باید اینستاگرام رو با فیسبوک لینک کنیم. برای این کار توی اپ اینستاگرام و از بخش Edit Profile، به قسمت Pages میریم و با گزینهی Create Facebook Page یک پیج به اسم صفحهی خودمون روی اکانت فیسبوک میسازیم. بعد از اینکه مراحلش کامل شد، باید توی مرحله دومِ عکسی که این پایین آوردم، اسم اکانت اینستاگرامتون (که در واقع اسم پیج فیسبوکی هست که ساختین) رو جلوی Page به جای Connect or Create نوشته باشه.
3: دوباره برمیگردیم سراغ Facebook For Developers و با کلیک روی My Apps (بالا سمت راست صفحه) وارد برنامه ای که توی مرحله 1 ساختیم میشیم. و با همچین صفحهای باید روبرو بشیم. من اسم برنامه رو Insight_Bot گذاشتم و فرقی نمیکنه که چه اسمی باشه. این جا همون محیطیه که فیسبوک محیا کرده تا بشه برای فیسبوک و اینستاگرام اپ های مختلف نوشت ولی استفاده ما ازش در حد اینه که اطلاعات اکانت خودمون رو دریافت کنیم.
4: (نمیدونم چقدر انجام این مرحله ضروریه ولی بهتره انجام بدیم) صفحه رو اسکرول میکنیم و پایین صفحه بین باکس های مختلف یکی هست با این عنوان Instagram Graph API و روی Set Up کلیک میکنیم (که در واقع همون API هست که فیسبوک در اختیار ما قرار میده برای کار با اینستاگرام).
5: الان از نوار بالای صفحه از گزینهی Tools وارد Graph API Explorer میشیم. اینجا همون محیطی هست که درخواست اطلاعات مختلف رو میکنیم. (Documentation کامل این قسمت رو برای اینستاگرام میتونین از اینجا ببینین)
6: الان توی همین صفحه زیرِ گزینهی User or Page روی نوار میزنیم و از اونجا Page Access Token رو انتخاب میکنیم. بعد مراحل زیر رو جلو میریم.
7: الان توی قسمت Permissions این سه تا Permissions رو با تایپ کردن قسمتی ازشون، پیدا میکنیم و اضافشون میکنیم: pages_show_list, instagram_basic, instagram_manage_insights بعد از اینکه این سه تا رو اضافه کردیم، اون بالا روی Generate Access Token میزنیم و مراحل زیر رو جلو میریم. Access Token در واقع یه کد اختصاصی برای شماست که به وسیلهی اون میتونین به اطلاعات درخواستیتون دسترسی پیدا کنین. پس خیلی خوب ازش مراقبت کنین و به هیچ وجه در اختیار کسی قرارش ندین.
8: الان باید ID پیج اینستاگرام خودمون رو بدست بیاریم. برای این کار مراحل 4 و 5 این آموزش رو جلو میریم. خروجی این مرحله Instagram User ID هست که در آینده به کارمون میاد، پس یادداشتش کنین. در ضمن کدها رو توی قسمتی که مشخص کردم وارد کنین و برای دریافت جواب Enter رو بزنین.
9: برای بدست آوردن اطلاعات پایه اکانت ( تعداد فالوور، تعداد فالووینگ، تعداد پستها و تعداد استوری های همون روز) کد زیر رو وارد میکنیم.
{Instagram User ID}?fields=followers_count,follows_count,media_count,stories
برای اینکه یک لینک داشته باشیم که با هر بار Request دادن بهش این اطلاعات رو بروز بهمون بده از اون قسمت پایین Get Code رو میزنیم و توی پنجرهی باز شده از تب cURL لینک رو برمیداریم.
10: برای بدست آوردن اطلاعات Insight اکانت (Reach,Impression, Profile Visit, Website Clicks Email Click) کد زیر رو وارد میکنیم. البته خیلی اطلاعات بیشتری رو میشه بدست آورد (مثل رنج سنی و مکانی مخاطبان و ...) که لیست کاملشون اینجا هست و با اضافه کردن اون ها به این پارامتر ها ( بعد از metric= اضافه کنین) میشه اون اطلاعات هم دریافت کرد.
{Instagram User ID}/insights?metric=impressions,reach,profile_views,website_clicks, email_contacts&period=day
11: برای رسیدن به اطلاعات معمولی یک پست (تعداد لایک، کامنت، زمان، متن و ID) کد زیر رو وارد میکنیم.
{Instagram User ID}/media?fields=like_count,comments_count,media_type,id,timestamp ,caption
12: برای اطلاعات Insight یک پست باید ID اون پست را داشته باشیم. ولی برای بدست آوردن Insight همهی پست ها لازم نیست تک به تک براشون کد وارد کنیم و با پایتون توی قسمت دوم خیلی راحت این کار رو مدیریت میکنیم. اما برای بدست آوردن Insight یک پست (Engagement ,Impressions ,Reach ,Saved) کد زیر رو وارد میکنیم. لیست کامل اطلاعاتی که میشه از پست دریافت کرد اینجا هست.
13: حالا کارمون با دریافت اطلاعات تموم شد و برای دریافت هر اطلاعاتی که بخوایم یک لینک در اختیار داریم و میتونیم بریم سراغ پایتون. اما یه مشکلی وجود داره اونم اینکه Access Token بعد از حدود نیم ساعت غیر فعال میشه. حالا مراحل زیر رو طی میکنیم و این مدت زمان رو به 3 ماه افزایش میدیم. 1- Access Token که الان داریم رو کپی میکنیم. (سمت راست صفحه هستش). 2- از نوار بالای صفحه از بخش Tools وارد بخش Access Token Debugger میشیم. 3- Access Token رو اونجا Paste میکنیم و گزینهی Debug رو میزنیم. 4- وقتی که صفحه لود شد، از اخر صفحه گزینه Extend Access Token رو میزنیم و بعد از وارد کردن پسورد اکانت فیسبوک برامون مینویشه Access Token شما تا تاریخ فلان قابل استفاده است.
تا اینجا کارمون با نحوهی دریافت اطلاعات تموم شد و توی بخش بعدی میریم سراغ پایتون و پاندا برای دسته بندی و مرتب کردن اطلاعات.
هر سوالی بود و اگه جایی رو گنگ توضیح داده بودم حتما بپرسید و اگه پیشنهادی هم برای بهتر شدن پروژه داشتین حتما بگین.
در ضمن اگه دوست دارین کد پایتون رو زودتر از بقیه ببینین. میتونین به گیت هاب من مراجعه کنین و اینجا کد رو ببینین اما توی قسمت بعدی کامل توضیحش میدم. ممنون که همراهم بودین توی این پست :)
قسمت دوم این پست با عنوان چطوری اطلاعات Insight اینستاگرامم رو روی اکسل داشته باشم؟ (بخش دوم: پایتون) رو میتونین اینجا بخونین.