Instagram'da görevleri otomatikleştirmek, çevrimiçi varlığınızı nasıl yönettiğinizi önemli ölçüde kolaylaştırabilir. instagrapi
tam olarak bunu yapmanıza yardımcı olmak için tasarlanmış bir Python kütüphanesidir. Doğrudan Instagram'ın kendi arka uç sistemleriyle etkileşime girer; tıpkı resmi mobil uygulamanın kullandığı sistemler gibi. Bu doğrudan iletişim, instagrapi
'yi hızlı ve verimli hale getirir ve çalışması için bir web tarayıcısı gerektirmez.
Bu rehber, instagrapi
'ye başlamak için net bir yol sağlamayı amaçlamaktadır. Onu nasıl kuracağımızı, Instagram hesabınıza güvenli bir şekilde nasıl giriş yapacağımızı, gönderiler ve kullanıcılarla etkileşim kurmak gibi yaygın eylemleri nasıl gerçekleştireceğimizi, içerik yüklemeyi ve otomasyonunuzun güvenli ve etkili olmasını sağlamak için temel uygulamalara değineceğiz.
Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?
Apidog tüm taleplerinizi karşılar ve Postman'in yerini çok daha uygun bir fiyata alır!
Instagrapi'yi Sisteminize Alma
instagrapi
'yi kullanabilmeniz için önce onu yüklemeniz gerekir. İlk olarak, bilgisayarınızda Python'un yüklü olduğundan emin olun; instagrapi
en iyi Python sürümü 3.9 veya daha yenisiyle çalışır. Bir terminal (Komut İstemi, PowerShell veya macOS/Linux'ta Terminal) açıp python --version
veya python3 --version
yazarak Python sürümünüzü kontrol edebilirsiniz.
Python hazır olduğunda, instagrapi
'yi Python'un paket yükleyicisi olan pip
'i kullanarak yüklemek basittir. Terminalinizde aşağıdaki komutu çalıştırın:
pip install instagrapi
Python 3 kurulumunuz için özellikle python3
kullanıyorsanız, şunlara ihtiyacınız olabilir:
python3 -m pip install instagrapi
Bu komut, instagrapi
'yi ve bağlı olduğu diğer tüm kütüphaneleri indirecek ve yükleyecektir. Daha temiz proje yönetimi için, proje bağımlılıklarını izole eden Python sanal ortamlarını kullanmanız genellikle önerilir. python3 -m venv your_project_name
ile bir tane oluşturabilir, etkinleştirebilir ve ardından içinde pip install instagrapi
komutunu çalıştırabilirsiniz.
Instagram Hesabınıza Bağlanma
Instagram'da eylemler gerçekleştirmek için, komut dosyanızın oturum açması gerekir. instagrapi
bu süreci yönetir. Python komut dosyanızdaki ilk adım, Client
sınıfını içe aktarmak ve bir örneğini oluşturmak olacaktır. Bu Client
nesnesi, tüm etkileşimleriniz için ana aracınız olacaktır.
from instagrapi import Client
import os
import time
import random
cl = Client()
Şimdi, oturum açalım. Kullanıcı adınızı ve şifrenizi doğrudan komut dosyanıza kodlamamanız şiddetle tavsiye edilir. Ortam değişkenlerini kullanmak daha güvenli bir yöntemdir.
INSTAGRAM_USERNAME = os.getenv("INSTA_USERNAME", "your_insta_username")
INSTAGRAM_PASSWORD = os.getenv("INSTA_PASSWORD", "your_insta_password")
try:
cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
print(f"Login successful as @{INSTAGRAM_USERNAME}!")
except Exception as e:
print(f"Login failed for @{INSTAGRAM_USERNAME}. Error: {e}")
Hesabınızda Güvenlik için harika olan İki Faktörlü Kimlik Doğrulama (2FA) etkinse, login
yöntemi ek bir verification_code
parametresi gerektirecektir. Bu kodu genellikle kimlik doğrulama uygulamanızdan veya bir SMS'ten alırsınız ve oturum açma çağrısı sırasında geçirirsiniz: cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD, verification_code="YOUR_2FA_CODE")
.
Sürekli olarak bir kullanıcı adı ve şifre ile oturum açmak verimsiz olabilir ve Instagram'dan istenmeyen dikkat çekebilir. Daha akıllı bir yaklaşım, ilk başarılı kimlik doğrulamasından sonra oturumunuzu kaydetmek ve daha sonraki komut dosyası çalıştırmaları için bu oturumu yeniden yüklemektir.
Oturumları şu şekilde yönetebilirsiniz:
from instagrapi.exceptions import LoginRequired
SESSION_FILE_PATH = "my_active_session.json"
if os.path.exists(SESSION_FILE_PATH):
cl.load_settings(SESSION_FILE_PATH)
print(f"Loaded session from {SESSION_FILE_PATH}.")
try:
cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
cl.get_timeline_feed()
print("Session is valid and login successful using saved session.")
except LoginRequired:
print("Saved session was invalid. Need to perform a fresh login.")
try:
cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
cl.dump_settings(SESSION_FILE_PATH)
print("Fresh login successful, new session saved.")
except Exception as e_relogin:
print(f"Fresh login failed after invalid session: {e_relogin}")
except Exception as e_session_use:
print(f"Error while using saved session: {e_session_use}. Trying fresh login.")
try:
cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
cl.dump_settings(SESSION_FILE_PATH)
print("Fresh login successful after session error, new session saved.")
except Exception as e_fresh_fallback:
print(f"Fresh login fallback also failed: {e_fresh_fallback}")
else:
print("No session file found. Performing fresh login...")
try:
cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
cl.dump_settings(SESSION_FILE_PATH)
print(f"Fresh login successful, session saved to {SESSION_FILE_PATH}.")
except Exception as e_initial_login:
print(f"Initial fresh login failed: {e_initial_login}")
if cl.user_id:
print(f"Successfully authenticated. User ID: {cl.user_id}")
else:
print("Authentication failed. Check credentials and previous error messages.")
Bu birleşik yaklaşım, önce kaydedilmiş bir oturumu kullanmayı dener ve gerekirse yeni oturumu bir sonraki sefer için kaydederek yeni bir oturum açmaya geri döner.
Instagrapi ile Temel Instagram Etkileşimleri
Oturum açtıktan sonra, Instagram ile etkileşim kurmaya başlayabilirsiniz. Aşağıdaki örnekler için cl
'nin başarılı bir şekilde oturum açmış Client
nesneniz olduğunu varsayalım.
Kullanıcı Bilgisi Alma
Kullanıcı adını biliyorsanız, herhangi bir Instagram kullanıcısı hakkında genel bilgileri getirebilirsiniz. Bu, benzersiz Kullanıcı Kimliklerini (PK), tam adlarını, biyografilerini, takipçi sayılarını vb. içerir.
target_user = "instagram"
try:
user_id_num = cl.user_id_from_username(target_user)
print(f"The unique User ID for @{target_user} is {user_id_num}.")
user_details = cl.user_info_by_username(target_user)
print(f"\nDetails for @{user_details.username}:")
print(f" Followers: {user_details.follower_count}")
print(f" Bio: {user_details.biography[:50]}...")
except Exception as e:
print(f"Could not fetch info for @{target_user}. Error: {e}")
Gönderilerle (Medya) Etkileşim Kurma
Instagram gönderilerine instagrapi
'de "medya" denir. Bir gönderiyle etkileşim kurmak için genellikle media_pk
'sine (gönderi için benzersiz bir sayısal kimlik) ihtiyacınız vardır. Bu media_pk
'yi gönderinin URL'sinden alabilirsiniz. Aşağıdaki örnek, gönderi ayrıntılarını nasıl alacağınızı gösterir. Beğenme veya yorum yapma gibi etkileşimler otomasyona karşı çok hassastır; bu tür özellikleri az kullanın ve her zaman etik olarak kullanın.
example_post_url = "https://www.instagram.com/p/C_q9Jg1NAn1/"
try:
media_pk_val = cl.media_pk_from_url(example_post_url)
print(f"The media_pk for the post is: {media_pk_val}")
media_details = cl.media_info(media_pk_val)
print(f"\nPost by @{media_details.user.username} has {media_details.like_count} likes.")
print(f"Caption snippet: {media_details.caption_text[:60]}...")
string_media_id_for_action = cl.media_id(media_pk_val)
print(f"String media_id for actions (like liking/commenting): {string_media_id_for_action}")
except Exception as e:
print(f"Error interacting with post {example_post_url}. Error: {e}")
Bir gönderiyi beğenmek için cl.media_like(string_media_id_for_action)
kullanırsınız. Yorum yapmak için cl.media_comment(string_media_id_for_action, text="Your comment")
kullanırsınız. Bu tür eylemlerden sonra her zaman gecikmeler (time.sleep()
) ekleyin.
İçerik Yüklemeinstagrapi
, fotoğraf, video, albüm ve hikaye yüklemenize olanak tanır.
Fotoğraf Yükleme:
Bir JPG resim dosyasının yoluna ihtiyacınız olacak. Aşağıdaki örnek yapıyı özetlemektedir; bir resme geçerli bir yol sağlamanız gerekecektir.
from pathlib import Path
image_path_to_upload = Path("your_image.jpg")
photo_caption = "My first photo upload with Instagrapi! #Python #Automation"
if image_path_to_upload.exists() and image_path_to_upload.suffix.lower() == ".jpg":
try:
uploaded_photo = cl.photo_upload(image_path_to_upload, photo_caption)
print(f"Photo uploaded! View it at: https://www.instagram.com/p/{uploaded_photo.code}/")
except Exception as e:
print(f"Photo upload failed for {image_path_to_upload}. Error: {e}")
else:
print(f"Replace 'your_image.jpg' with a valid path to a JPG file.")
Hikaye Yükleme:
Hikayeler genellikle 9:16 en boy oranını kullanır. Fotoğraf veya video yükleyebilirsiniz. Bir fotoğraf hikayesi yükleme kodu, normal bir fotoğraf gönderisine benzer, ancak photo_upload_to_story
kullanır.
from instagrapi.types import StoryMention, StoryLink
story_image_path = Path("your_story_image.jpg")
if story_image_path.exists() and story_image_path.suffix.lower() == ".jpg":
try:
uploaded_story = cl.photo_upload_to_story(
story_image_path,
caption="My Instagrapi Story!"
)
print(f"Story uploaded successfully! PK: {uploaded_story.pk}")
except Exception as e:
print(f"Story upload failed for {story_image_path}. Error: {e}")
else:
print(f"Replace 'your_story_image.jpg' with a valid path to a 9:16 JPG file for stories.")
mentions
ve links
gibi etkileşimli öğeler ekleyebilir, StoryMention
veya StoryLink
nesneleri hazırlayabilir ve bunları photo_upload_to_story
'ye parametre olarak geçirebilirsiniz.
Sorunsuz Otomasyon İçin Temel Hususlar
Instagram eylemlerini otomatikleştirirken, birkaç uygulama güvenilirlik için ve hesabınızla ilgili sorunlardan kaçınmak için çok önemlidir.
Gecikmeler Tanıtın: İnsan kullanıcılar eylemleri anında, art arda gerçekleştirmezler. Komut dosyanız da yapmamalıdır. Doğal etkileşim kalıplarını taklit etmek için eylemler arasında time.sleep(random.uniform(min_seconds, max_seconds))
kullanın. instagrapi
'nin kendisi, belirli işlemler için bazı otomatik gecikmeler ekleyen bir cl.delay_range = [min, max]
ayarına sahiptir.
Yoğun Kullanım İçin Proxy'leri Düşünün: Komut dosyanız çok sayıda istekte bulunuyorsa veya aynı IP adresinden birden fazla hesap yönetiyorsanız, Instagram etkinliğinizi sınırlayabilir. Bir proxy sunucusu kullanmak (cl.set_proxy("your_proxy_string")
) isteklerinizi dağıtmaya ve farklı konumlardan geliyormuş gibi görünmeye yardımcı olabilir.
Olası Hataları İşleyin: Ağ sorunları oluşabilir, Instagram'ın API'si değişebilir veya bir hız sınırına takılabilirsiniz. Bu hataları zarif bir şekilde yakalamak için instagrapi
çağrılarınızı try...except
bloklarına sarın. instagrapi
, daha hedeflenmiş hata işleme için yakalayabileceğiniz RateLimitError
, UserNotFound
, MediaNotFound
vb. gibi özel istisnalara sahiptir.
Sorumlu ve Etik Kullanın: Otomasyon güçlüdür. Spam yapmaktan kaçının, kullanıcı gizliliğine saygı gösterin ve Instagram'ın Hizmet Şartlarını veya Topluluk Kurallarını ihlal eden faaliyetlerde bulunmayın. Otomasyonun amacı, gerçek etkileşimi geliştirmek veya varlığınızı verimli bir şekilde yönetmek olmalı, manipüle etmek veya rahatsız etmek değil.
Basit Bir Otomasyon Örneği: Bir Hashtag İçin Son Gönderileri Beğenme
Belirli bir hashtag için son gönderileri bulan ve birkaçını beğenen küçük bir komut dosyası oluşturalım. Bu, çeşitli instagrapi
özelliklerinin birleştirilmesini gösterir. Bu örneği son derece dikkatli kullanın ve yalnızca sorumlu kullanıma uygun hashtag'ler ve miktarlarda kullanın. Bu kod açıklayıcıdır ve agresif kullanım hesabınıza zarar verebilir.
target_hashtag_for_liking = "pythonprogramming"
number_of_posts_to_like = 1
try:
print(f"Fetching recent media for #{target_hashtag_for_liking}...")
recent_hashtag_media = cl.hashtag_medias_recent(target_hashtag_for_liking, amount=number_of_posts_to_like * 2)
liked_count = 0
if recent_hashtag_media:
for media_item in recent_hashtag_media:
if liked_count >= number_of_posts_to_like:
break
if not media_item.has_liked:
print(f" Attempting to like post PK {media_item.pk} by @{media_item.user.username}...")
try:
media_id_str_to_like = cl.media_id(media_item.pk)
cl.media_like(media_id_str_to_like)
liked_count += 1
print(f" Successfully liked. Liked {liked_count}/{number_of_posts_to_like} posts so far.")
time.sleep(random.uniform(15, 25))
except Exception as e_like:
print(f" Could not like post PK {media_item.pk}. Error: {e_like}")
else:
print(f" Skipping already liked post PK {media_item.pk} by @{media_item.user.username}.")
print(f"\nFinished liking script for #{target_hashtag_for_liking}. Total liked in this run: {liked_count}")
else:
print(f"No recent media found for #{target_hashtag_for_liking}.")
except Exception as e_hashtag_script:
print(f"An error occurred in the hashtag liking script: {e_hashtag_script}")
Bu örnek gösteri içindir. Özellikle çok sayıda beğeni otomatikleştirmek, Instagram tarafından kolayca işaretlenebilir. Her zaman toplu otomatik eylemler yerine gerçek etkileşime öncelik verin.
Instagrapi ile İlerlemek
instagrapi
, Instagram ile etkileşim kurmak için derin bir araç seti sunar. Bu rehber, nasıl kurulacağını, oturum açılacağını ve en yaygın eylemlerden bazılarını nasıl gerçekleştireceğinizi göstererek yüzeyi çizdi.
instagrapi
'de gerçekten ustalaşmak için, resmi belgelerini keşfedin. Instagrapi GitHub deposundaki README.md
dosyası en iyi başlangıç noktasıdır ve genellikle docs
klasöründeki daha ayrıntılı kılavuzlara ve API referanslarına bağlantı verir. Bu kaynaklar, çeşitli Instagram nesneleri için çok daha fazla özelliği, gelişmiş ayarları ve belirli türleri kapsar.
Instagram platformunun ve API'sinin değişebileceğini unutmayın, bu nedenle bugün işe yarayan şey yarın ayarlamalara ihtiyaç duyabilir. instagrapi
kütüphanesi ve topluluk tartışmalarıyla güncel kalmak, uyum sağlamanıza yardımcı olabilir. Mutlu otomasyonlar ve bunu sorumlu bir şekilde yapın!
Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?
Apidog tüm taleplerinizi karşılar ve Postman'in yerini çok daha uygun bir fiyata alır!