Keşfedin, Öğrenin ve Paylaşın
Evrim Ağacı'nda Aradığın Her Şeye Ulaşabilirsin!
Yeni Soru Sor
Paylaşım Yap
Sorulara Dön
Taha Basmacı
Üye 5 gün önce
2

Sosyal medyadan veri çekecek otomasyon nasıl yapabilirim?

Merhabalar, takip ettiğim veya etmediğim bir instagram sayfası bir post hikaye attığında bunu otomatik olarak telegram veya mail üzerinden medya ve text olarak gönderecek bir sistem yapmak istiyorum. Bunu nasıl yapabilirm?
292 görüntülenme
0
  • Paylaş
  • Alıntıla
  • Alıntıları Göster
  • Dış Sitelerde Paylaş
  • Soruyu Takip Et
  • Raporla
  • Mantık Hatası Bildir
Tüm Reklamları Kapat
1 Cevap
Sena Küçükkıvanç
Bilgisayar Mühendisi 4 gün önce

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ı:

Tüm Reklamları Kapat

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:

Tüm Reklamları Kapat

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.

Tüm Reklamları Kapat

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.

Tüm Reklamları Kapat

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.

14
0
  • Paylaş
  • Alıntıla
  • Alıntıları Göster
  • Dış Sitelerde Paylaş
  • Raporla
  • Mantık Hatası Bildir
Daha Fazla Cevap Göster
Cevap Ver
Evrim Ağacı Soru & Cevap Platformu, Türkiye'deki bilimseverler tarafından kolektif ve öz denetime dayalı bir şekilde sürdürülen, özgür bir ortamdır. Evrim Ağacı tarafından yayınlanan makalelerin aksine, bu platforma girilen soru ve cevapların içeriği veya gerçek/doğru olup olmadıkları Evrim Ağacı yönetimi tarafından denetlenmemektedir. Evrim Ağacı, bu platformda yayınlanan cevapları herhangi bir şekilde desteklememekte veya doğruluğunu garanti etmemektedir. Doğru olmadığını düşündüğünüz cevapları, size sunulan denetim araçlarıyla işaretleyebilir, daha doğru olan cevapları kaynaklarıyla girebilir ve oylama araçlarıyla platformun daha güvenilir bir ortama evrimleşmesine katkı sağlayabilirsiniz.
Popüler Yazılar
30 gün
90 gün
1 yıl
Evrim Ağacı'na Destek Ol

Evrim Ağacı'nın %100 okur destekli bir bilim platformu olduğunu biliyor muydunuz? Evrim Ağacı'nın maddi destekçileri arasına katılarak Türkiye'de bilimin yayılmasına güç katın.

Evrim Ağacı'nı Takip Et!
Aklımdan Geçen
Komünite Seç
Aklımdan Geçen
Fark Ettim ki...
Bugün Öğrendim ki...
İşe Yarar İpucu
Bilim Haberleri
Hikaye Fikri
Video Konu Önerisi
Başlık
Kafana takılan neler var?
Gündem
Bağlantı
Ekle
Soru Sor
Stiller
Kurallar
Komünite Kuralları
Bu komünite, aklınızdan geçen düşünceleri Evrim Ağacı ailesiyle paylaşabilmeniz içindir. Yapacağınız paylaşımlar Evrim Ağacı'nın kurallarına tabidir. Ayrıca bu komünitenin ek kurallarına da uymanız gerekmektedir.
1
Bilim kimliğinizi önceleyin.
Evrim Ağacı bir bilim platformudur. Dolayısıyla aklınızdan geçen her şeyden ziyade, bilim veya yaşamla ilgili olabilecek düşüncelerinizle ilgileniyoruz.
2
Propaganda ve baskı amaçlı kullanmayın.
Herkesin aklından her şey geçebilir; fakat bu platformun amacı, insanların belli ideolojiler için propaganda yapmaları veya başkaları üzerinde baskı kurma amacıyla geliştirilmemiştir. Paylaştığınız fikirlerin değer kattığından emin olun.
3
Gerilim yaratmayın.
Gerilim, tersleme, tahrik, taciz, alay, dedikodu, trollük, vurdumduymazlık, duyarsızlık, ırkçılık, bağnazlık, nefret söylemi, azınlıklara saldırı, fanatizm, holiganlık, sloganlar yasaktır.
4
Değer katın; hassas konulardan ve öznel yoruma açık alanlardan uzak durun.
Bu komünitenin amacı okurlara hayatla ilgili keyifli farkındalıklar yaşatabilmektir. Din, politika, spor, aktüel konular gibi anlık tepkilere neden olabilecek konulardaki tespitlerden kaçının. Ayrıca aklınızdan geçenlerin Türkiye’deki bilim komünitesine değer katması beklenmektedir.
5
Cevap hakkı doğurmayın.
Aklınızdan geçenlerin bu platformda bulunmuyor olabilecek kişilere cevap hakkı doğurmadığından emin olun.
ve seni takip ediyor

Göster

Şifremi unuttum Üyelik Aktivasyonu

Göster

Şifrenizi mi unuttunuz? Lütfen e-posta adresinizi giriniz. E-posta adresinize şifrenizi sıfırlamak için bir bağlantı gönderilecektir.

Geri dön

Eğer aktivasyon kodunu almadıysanız lütfen e-posta adresinizi giriniz. Üyeliğinizi aktive etmek için e-posta adresinize bir bağlantı gönderilecektir.

Geri dön

Close