Tabii şöyle düşünelim: Instagram'da bir hesabı takip ediyorsunuz veya belki de hiç takip bile etmiyorsunuz, ama o sayfa bir hikâye (story) paylaşır paylaşmaz sizin sisteminiz gizli bir dedektif gibi arka planda bekleyip hemen bu içeriği yakalasın ve size Telegram üzerinden veya e-posta yoluyla göndersin istiyorsunuz umarım yanlış anlamadım. Yani bir kargo dağıtım merkezinde bekleyen robotların, yeni bir paket geldiğinde onu anında tanıyarak, doğru şubeye sevk etmesine benzer bir şey herhalde istediğiniz. Bizim paketimiz "hikâye", şubemiz ise sizin Telegram botunuz ya da mail sunucunuz.
Burada iki ana yolunuz var:
Resmi Instagram Graph API Kullanımı:
Bu yöntemle saaakiiinnn bir şekilde belediyeden resmi izin alarak bir arazide kazı yapmaya benzer. 😂😂😂 Biraz bürokrasi, biraz izin alma, biraz token elde etme işi var. Eğer söz konusu Instagram hesabı size aitse veya erişimi varsa, Facebook Geliştirici Platformu üzerinden bir uygulama oluşturup `instagram_basic`, `instagram_manage_insights`, `pages_read_engagement`, `pages_show_list` gibi izinleri talep edeceksiniz.
Daha sonra `/{ig-user-id}/stories` endpoint'ini kullanarak hikâyeleri çekebilirsiniz. Örneğin Python'da `requests` ile bir GET isteği attığınızı varsayalım:
python
import requests
access_token = "YOUR_LONG_LIVED_ACCESS_TOKEN"
ig_user_id = "YOUR_IG_USER_ID"
endpoint = f"https://graph.instagram.com/{ig_user_id}/stories?fields=id,media_url,caption&access_token={access_token}"
response = requests.get(endpoint)
data = response.json()
# Buradan data'daki stories bilgilerine ulaşabilirsiniz.
Bu yöntemin avantajı: Resmi kanal, düşük risk. Dezavantajı: Kısıtlı, sadece kendi hesaplarınızla ilgili verileri çekme imkânı var.
Üçüncü Parti Kütüphaneler ve Private API'ler:
Bu da biraz gece gizlice tarlaya girip hazine aramaya benzer. 😂 Yasallık sınırında gezinmek demek. `instagrapi` gibi kütüphanelerle istediğiniz hesabın hikâyelerini çekebilirsiniz fakat Instagram'ın hizmet koşullarını ihlal edebilirsiniz. Bu da ileride sorun çıkarabilir, ben söyleyeyim de baştan. 😅
`instagrapi` ile örneğin:
from instagrapi import Client
cl = Client()
cl.login("username", "password")
user_id = cl.user_id_from_username("target_username")
stories = cl.user_stories(user_id)
for story in stories:
media_url = story.media_url
# medyayı indir, sonra telegram'a veya mail'e yolla yani
Fakat dikkat: Bu, Instagram hesabınızın ban yeme riskini beraberinde getiriyor. 😂😂 İzini gizlersen başka tabii de... O başka bir sorunun konusu.
Telegram'a Forward Etme:
Bir kere elinizde hikâyenin medyası varsa, bunu Telegram'a göndermek çocuk oyuncağına dönüşüyor. Telegram'da bir bot oluşturmak için @BotFather'a gidip bir bot token alın. Bu token tıpkı gizli bir anahtar gibi sizin adınıza kapıları açacak yani açılımı bu.
Örnek Python kodu (python-telegram-bot kullanarak):
from telegram import Bot
bot = Bot(token='YOUR_TELEGRAM_BOT_TOKEN')
chat_id = 'YOUR_CHAT_ID'
# Diyelim hikâyeyi story.jpg olarak indirdiniz
with open('story.jpg', 'rb') as f:
bot.send_photo(chat_id=chat_id, photo=f, caption='Yeni hikâye!')
Eğer video ise:
Bu işlem da elinizdeki fotoğrafı bir zarfa koyup, telegram postacısına vermek gibi.
with open('story.mp4', 'rb') as v:
bot.send_video(chat_id=chat_id, video=v, caption='Yeni video hikâye!')
E-Posta ile Forward Etme:
Burada SMTP kullanacağız. Bu da internetin klasik posta dağıtım sistemi. `smtplib` ile bir sunucuya bağlanır, kimliğinizi doğrular, ardından e-postayı gönderirsiniz. Postanın ekine hikâyenin medyasını yerleştirirsiniz. Tam bir paketleme işi yani.
import os
import smtplib
import logging
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s: %(message)s')
def create_email_message(from_addr, to_addr, subject, attachment_path):
logging.debug("E-posta mesajı oluşturma işlemi başlatılıyor.")
msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject
if attachment_path and os.path.isfile(attachment_path):
logging.debug(f"{attachment_path} dosyası ekleniyor.")
try:
part = MIMEBase('application', 'octet-stream')
with open(attachment_path, 'rb') as f:
file_content = f.read()
part.set_payload(file_content)
encoders.encode_base64(part)
part.add_header('Content-Disposition', f'attachment; filename="{os.path.basename(attachment_path)}"')
msg.attach(part)
logging.debug("Ek dosya başarıyla eklendi.")
except Exception as e:
logging.error(f"Ek dosya eklenirken hata oluştu: {e}")
raise
else:
logging.warning("Geçerli bir ek dosya bulunamadı, ek eklenmeyecek.")
return msg
def send_email_message(smtp_server, smtp_port, username, password, msg):
logging.debug("E-posta gönderme işlemi başlatılıyor.")
server = None
try:
server = smtplib.SMTP(smtp_server, smtp_port)
logging.debug("SMTP sunucusuna bağlanıldı, TLS başlatılıyor.")
server.starttls()
logging.debug("SMTP kimlik doğrulaması yapılıyor.")
server.login(username, password)
server.sendmail(msg['From'], msg['To'], msg.as_string())
logging.info(f"E-posta {msg['To']} adresine başarıyla gönderildi.")
except Exception as e:
logging.error(f"E-posta gönderimi sırasında hata oluştu: {e}")
raise
finally:
if server is not None:
server.quit()
logging.debug("SMTP bağlantısı kapatıldı.")
if __name__ == "__main__":
FROM_ADDRESS = '[email protected]'
TO_ADDRESS = '[email protected]'
SUBJECT = 'Instagram Hikâye'
ATTACHMENT_PATH = 'story.jpg'
SMTP_SERVER = 'smtp.example.com'
SMTP_PORT = 587
USERNAME = '[email protected]'
PASSWORD = 'YOUR_EMAIL_PASSWORD'
mesaj = create_email_message(FROM_ADDRESS, TO_ADDRESS, SUBJECT, ATTACHMENT_PATH)
send_email_message(SMTP_SERVER, SMTP_PORT, USERNAME, PASSWORD, mesaj)
Burası da mektubun içine fotoğraf koyup, zarfa yapıştırıp, posta ofisine vermek gibi bir işlem 😅 denemedim ama hata yoktur umarım az karmaşık yazmış olabilirim.
Otomasyon Mantığı:
Belirli aralıklarla (ör. her 5 dakikada bir) bir cron job veya bir arka plan servisi çalışır.
Instagram API'sine veya private kütüphaneye istek atıp yeni hikâyeler var mı diye bakar.
Yeni hikâyeler tespit edilirse bu hikâyeler indirilir.
İndirdikten sonra Telegram ya da E-posta fonksiyonunu tetikler.
Her zaman içeriği paylaşmaya hakkınız olduğundan emin olun... Instagram'ın kullanım koşullarını çiğnememeye dikkat edin. Instagram, Telegram gibi platformların rate limitleri var. Çok sık istek atmayın, yoksa sistem sizi geçici olarak engelleyebilir. Bu durum tıpkı bir kapıyı dakikada 1000 defa çalmak gibi, bir süre sonra içeridekiler kapıyı açmayı reddeder ya da içeriden bi pompalı tüfekle çıkabilirler hoş olmaz. Dosya indirme, işleme, gönderme… Bunlar kaynak tüketir. Sunucunuzun hızına, bant genişliğine, disk alanına dikkat edin.