Twitter UFME

Twitter listenizde takibe-takip yapmayanları veya takip etmediğiniz takipçilerinizi gösteren uygulama yapımı.

İlgili özellikler değişti. Aşağıdaki kodlarım çalışmıyor. Güncelleyene kadar yazının yeri arşiv 🙁

Yine nasıl yaparım diye uğraşıp kendime göre oldu bu dediğim ve kullandığım, betik yazımına başlayalım.

Önden özet geçmek istiyorum. Çünkü profesyonel çalışacaksındır, farklı bir yol izlemeyi tercih edebilirsin. Şartlandırmayayım yani.

Olay kendi api anahtarlarımız ile takipçilerimizin idlerini https://api.twitter.com/1.1/followers/ids.json ile bizi takip edenlerin idlerini ise https://api.twitter.com/1.1/friends/ids.json ile alıp aralarındaki farklı idleri ayıklamaktan ibaret.

Bu uygulamalar gizli Twitter hesaplarında işe yaramayacaktır.

Bu json dosyalarını kullanıcıya göre almak için token oluşturup API anahtarı almalıyız. Zaten varsa iyi, yoksa başvuru yapıp onaylanmasını beklemek gerek. Bu işlemlerin nasıl yapılacağını Burak Garcı burada güzel anlatmış. Ben fi tarihinde almıştım.

Bunlar tamamsa işlerimi yapacağım twitterUFME adında bir klasör açıyorum. Bu klasörün içine de v11 adlı bir klasör açıyorum. v11 içine ayarlar.php dosyası oluşturup içine token , key vs gibi özel bilgilerimi yazıyorum.

Şimdi buraya gidip TwitterAPIExchange.php dosyasını v11 içine indiriyorum.

Artık gereken json dosyalarını okuyup işlem yapabilirim. İşlemlerde devamlı veri çekmemek için twitterUFME içinde cache klasörü açıyorum.

Not: json dosyalarını okuyup kayıt ederek işlem yapacağım.

Şimdi index.php oluşturup yazmaya başlıyorum.

Dosyalarımı include ettim. Verisine bakacağım twitter adımı da uname değişkenine atadım. Görüldüğü gibi benimki @ibrahimay

Daha sonra cache klasörümü kontrol ediyorum, yoksa oluşturuyorum. İçinde veri var mı varsa ne kadar yeni kontrol ediyorum ki sık aralıklarla Twitter da sorgulama yapmayayım.

Apilerde belli limitler vardır. Kodlarda deneme yapıyorum vs derken aşırı sorgulama yaparsam kısa süre hız limiti aşıldı gibisinden uyarılar alırım. Başka uyarılara da denk gelebilirim. Aşağıdaki kodla takip ettiklerim ile beni takip edenleri cache klasörüne kayıt ediyorum ki tekrar tekrar sorgulamayayım.

friends ve followers için aynı kodları kullandığım için veri alımını döngü içinde yazdım. Yani $friends yazacağıma foreach içinde $$degisken yazarak hem $friends hem de $followers değişkenlerine bilgi girebiliyorum.

Bilgi: $Ncursor değerini -1 ile başladım. Bir json dosyasında en fazla 5000 id veriyor. Verinin hepsinin tek dosyada alamıyorum, kısıtlı yani. Onun için çektiğim dosyada next_cursor 0 değilse dosyanın devamı var demektir. Bu durumda Ncursor değerimi burada yazanla değiştirip devam ediyorum. Benim 3bin 5bin takipçim var, kodlar işe yarıyor da 50bin 100bin veride ne kadar çalışır emin değilim. Çalışır herhalde 🙂 1 milyon takipçin mi var? Gel hele gel gel.

Artık takip ettiklerim ile beni takip edenlerin bilgilerini json formatında cache klasörüne kayıt ettim. Bu örneğimde 10 saatlik cache süresi koydum. Zaten hafta da bir ya bakarım ya bakmam.

Kayıt ettiğim bu bilgileri işleyebilirim.

friends lerin idleri ile followers ların idlerini ayrı ayrı aldım.

Takip ettiğim idlerden beni takip eden idleri çıkardığımda, takip ettiğim ama beni takip etmeyenlerin idlerini almış oldum ve takiptenat değişkenine atadım. Tersi işlem yaparak da GT yapacağım idleri takipet değişkenine atadım. Kodlarda include ettiğim harictut adında bir dosya görüyorsunuz. Bu dosya GT olayına bakmadığım karşılıksız takip ettiğim ünlüler, güzeller 🙂 vs hesapları ayıklamak içindir. O dosyayı şöyle yaptım:

Bendeki daha kalabalık tabi 🙂 Bu dosyada 10228272 idsi ile Youtube hesabı var. Beni takip etmiyor, Youtube hesabını takipten çıkayım demem gibisine ayıklama yapıyorum.

Şu anda takiptenat idlerimin keyleri orijinal sırasında duruyor, karışık yani. sort ile hem yeniden sıralıyor hem de farklı farklı olan keyleri 0 dan başlayarak sıralı yapmış olayım. Bu noktadan sonrası hep takiptenat üzerine. Siz karşılıksız takip edenlere GT yapmak isterseniz aynı işlemleri takipet ile de ayrıca yaparsınız.

Verilerin tamamı kalabalık olabilir. Atıyorum 100 kişi var, bir kerede ekrana basmaya çalışırsam ki her birinde api.twitter a bakıyorum, problem olabilir. Bu nedenle verileri 5 er 5 er veya 20 şer 20 şer  ekrana basayım ki api.twitter a aşırı sorgu yapmamış olayım. Bunun için sayfalama da yapıyorum.

Hatırlarsak verilerimi sort ile yeniden sıralamıştım. Şimdi hesap bilgilerini alıp ekrana basmak için sayfalamama uygun döngü kuruyorum.

Bu kod kullanıcının resmini adresini vs vs ekrana basmakta. Ayrıca id bilgilerini de ekrana basıyorum ki harictut için lazım oluyor. Bir de etkin olmayan eski kullanıcıları es geçiyorum. $yıl>=2021 dediğim kısım bunun için. Son olarak sayfalama için linklerimi ekliyorum. Sizde benim gibi sayfalamayı hazır bulup copy/paste yapacaksınız buyurun 🙂 Muhammed Yaman

Bitti. Artık index php’ye girdiğimde GT yapmayanların linkleri yani kara listem ekranda. Tıklayıp profiline gidip takipten çıkıyorum artı sessize alıyorum. Twitter apileri ile unfollow yapma vs linkleri oluşturulabilir gibi görünüyor ama bana lazım değil, bu işimi görüyor. Böyle daha sağlıklı çünkü kişinin hesabı kısıtlanmış ise kara listemde görünebiliyor. Hesabına gidince durumu görüp ilişmiyorum. Ve bazen takip ettiğim halde kara listeme düşen de olabiliyor. id numaraları büyükte ondan mı, json dosyaları birebir güncel olmayabiliyor da ondan mı emin değilim. Dikkat ettikten sonra sıkıntı yok.

Fazla takip/takipçiniz yoksa (demom kısıtlı) ve örnek uygulamayı denemek isterseniz ilk 20 kişiye kadar bakabilirsiniz.  Benim harictut dosyamdaki hesaplar görünmeyecektir, bilginiz olsun.

Değişik örnekler için demolar sayfama bakabilirsiniz.
Hazır dosyaları indirmek isterseniz :
Dosyalar üyelere özeldir: Giriş Yap
Yeni misin? Kayıt ol

You may also like...

Bir yanıt yazın