Bilal Saim

Facebook'ta Gönderiyi Paylaşanların Listesini Alma

Facebook'ta bir gönderiyi herkese açık olan paylaşanların isimlerini ve facebook profil linklerini alma. Böylece facebook sayfanızın çekilişinde kullanabilirsin

Facebook'ta sayfanızda bir çekiliş yaptınız. Çekiliş içinse gönderiyi herkese paylaşmayı şart koştunuz. Gönderiyi 300 kişi paylaştı ve şimdi o isimleri ve profil linklerini nasıl alıpta çekilişe vereceğinizi kara kara düşüyorsunuz :) Dert etmeyin size bugün bir kaç farklı yöntem göstereceğim. Bunun için aklıma gelen 3 yöntem var. Brinici yöntemi bilgi maksadıyla veriyorum. Bizi ilgilendiren 2. ve 3. yöntemler olacak.

1-) Facebook API yöntemi

1A-Hazır Uygulamalar: İnternette bir Facebook uygulaması bulmak mümkün olabilir. Fakat bunun için uygulamaya facebook profil izinleri vermelisiniz. Bende güvenmediğim uygulamalara izin vermek istemediğimden bu seçeneği eledim. 

2A-Kendi Uygulamanız: Facebook API kütüphanesi sayesinde bir çok farklı programlama dili platformunda uygulama yazmanız mümkün. Böylece basit bir gönderiyi paylaşanların isimlerini ve facebook linklerini çeken bir uygulama yapabilirsiniz. Hatta bunun için 2. yöntemde vereceğim kodlardan yararlanabilirsiniz. Eğer Facebook API'yi incelerseniz sorgulama yapısının 2. yöntemle aynı olduğunu görürsünüz. Eğer istek olması halinde Facebook API ile uygulma geliştirmek adlı bir eğitimde yayınlayabilirim.

2-) Facebook Graph API Explorer

Bu yöntemde Facebook'un yine geliştiricilere sunduğu bir araç. Böylece istediğiniz sorguları gerçekleştirerek verileri JSON formatında döndürebiliyorsunuz. Bununla ilgili kodu ve açıklamayı en kısa sürede vereceğim

3-) Javascript Kodu

Geldik en zahmetsiz ve kolay yönteme. Ben çok fazla uğraşmak istemiyorum kaba kuvvette işimi görür diyorsanız yapmanız gereken :

Aşağıda yer alan kod üzerinde 14. satırdaki f(c[0].innerHTML != "Yazılım Geliştiricileri") yazılı yerdeki Yazılım Geliştiricileri yazısını kendi sayfa adınızla değiştirmeniz. Önce tarayıcınızdan paylaşanların isimlerini almak istediğiniz gönderiye geliyoruz ve paylaşanlar kısmına basıyoruz. Pencere açıldıktan sonra tarayıcınızdan konsol kısmını açmalısınız. Chrome tarayıcı için F12 tuşuna bastıktan sonra gelen kısımdan Konsol sekmesini seçin. Ortaki yere alttaki kodu yapıştırın ver enter tuşuna basın. Kodu çalıştırdığınızda ilk önce gönderiyi paylaşan tüm profilleri çekebilmek için sayfanın en altına iner. Tüm profilleri çekene kadar devam eder. Tüm profilleri çekdiğini anladıktan sonra belirli süre (bizim geçerli kodda 10 saniye) bekleyerek tüm isimleri ve linkleri ekranda listeler. Artık tüm isimler ve linkleri elinizde :)

Örnek Liste (Ekranda göstereceği biçim)

İsimler

1-) Bilal Saim

2-) Ahmet Başlat

3-) Ayşe Dur

Linkler

1-) https://www.facebook.com/bilaaaalsaim

2-) https://www.facebook.com/ahmetbaslatbakalim

3-) https://www.facebook.com/aysedurbakalim

 

Yapmanız gerekenler için ekran görüntüsü:

 

Kod kısmı:

var isimler = [];
var linkler = [];
var repost = document.getElementById("repost_view_dialog");

function islem(){
	var a = repost.getElementsByClassName("fwb")

	for(var i=0;i<a.length;i++)
	{
		c = a[i].getElementsByTagName("a");
		var disim = c[0].innerHTML;
		var dlink = c[0].href;
		//Sayfanızın görünen adını Yazılım Geliştiricileri yazan yerle değiştirmelisiniz
		if( disim != "Yazılım Geliştiricileri")
		{	
			//Birden fazla paylaşanları listeye birden fazla eklememek için facebook linki listeye eklenmişmi diye kontrol ediliyor
			if(diziKontrol(dlink))
			{
				isimler.push(disim);
				linkler.push(dlink);
			}
		}
	}
	
	//İsim yazdırma kısmı +"<br>" kısmı alt satıra geçmesi için
	document.write("İsimler<br>");
	for(var i=0;i<isimler.length;i++)
	{
		var sira = (i+1).toString();
		document.write(sira+"-) "+ isimler[i] +"<br>");
		//console.log(sira+"-) "+ isimler[i] +"<br>");
	}
	//Link yazdırma kısmı
	document.write("<br><br>Linkler<br>");
	for(var i=0;i<isimler.length;i++)
	{
		var sira = (i+1).toString();
		document.write(sira+"-) "+ linkler[i] +"<br>");
		//console.log(sira+"-) "+ linkler[i] +"<br>");
	}
}

function diziKontrol(deger){
	for(var i=0;i<linkler.length;i++)
	{
		if(deger === linkler[i])
		{
			//console.log("true");
			return false;
		}
	}
	return true;
}

var say = 0;
var bekleme = 0;
var enAltaIn= function(){
	var a = repost.getElementsByClassName("fwb");
	var yeni = a.length;
	console.log(a.lenght);
	if(yeni == say)
	{
		bekleme += 1;
		//Bekleme süresi 10 saniye 
		if(bekleme == 10)
		{
			clearInterval(yenile);
			islem();
		}
	}
	else
	{
		bekleme = 0;
		say = yeni;
	}

	window.scrollTo(0,document.body.scrollHeight);
}

var yenile = setInterval(enAltaIn,1000);
Daha detaylı ayarlar:

Burada bahsedecekelerime isteğe bağlı bakabilirsiniz. 31.satırda document.write("İsimler
");
  kodu ekanda bastırılacağı anlamına geliyor ekranda gösterilecek şeyleri düzenlemek istiyorsanız buraları düzenleyebilirsiniz. Örneğin document.write(sira+"-) "+ isimler[i] +"
"); bu kodda 1-) İsim şeklinde bir çıktı elde edilir bunu document.write(isimler[i] +"
"); 
bu kodla değiştirerek artık sadece İsim çıktısını elde edebilirsiniz başında sıra numarası olmadan. 68.satırda var yenile = setInterval(enAltaIn,1000); bu koddaki 1000 rakamı bir saniye anlamına gelir. Burada her bir saniyede bir enAltaIn fonksiyonu çağrılır ve fonksiyonda sayfanın en altına inme kodu çalıştırılır. Saniyeyi arttırmak veya azaltmak isterseniz 1000 sayısını değiştirebilirsiniz saniye*1000 formülüne göre değiştirebilirsiniz böylece alta inme denemelerini daha yavaş veya daha hızlı hale getirebilirsiniz. Örneğin 5 saniye için 5*1000 = 5000 yazılması gerekir. 53.satırda if(bekleme == 10)  buradaki 10 sayısı ne kadar denemede daha fazla profil bulamazsa artık dursun ve bulduğu listeleri göstersini belirler. Eğer alta inme fonksiyonunu 1 saniyede bir çalıştırıyorsanız 10 saniye içinde yeni profiller elde edemezse artık alta inmeye çalışmaz. Buradaki 10 rakamını isteğe bağlı değiştirebilirsiniz.

Bu makaleyi paylaş

Bilal Saim

Bilal Saim kişisel blog sitesi. Yazılımcı, gençlik çalışanı, gezgin.

Related posts

  1. oğuzhan yılmaz
    2017-05-24 23:18:40 Yanıtla

    kod için teşekkürler ama normal profilde liste oluşturuyor ama sayfada tepki vermiyor bendemi bir hata var

  2. oğuzhan yılmaz
    2017-05-24 23:52:44 Yanıtla

    yazılımınız 8-10 paylaşımda çalışıyor ancak 300-500 paylaşımda tarama işlemi bittikden sonra listeyi açmıyor yardımcı olurmusunuz telden yada yorum üzerinden cevaplarsanız sevinirim irt 05079582811

    • Bilal Saim
      2017-05-26 21:01:44 Yanıtla

      https://www.facebook.com/Bilal-Saim-1700692230198168/ sayfasına resimle birlikte hatanızı yollarsanız yardımcı olmaya çalışırım.

  3. Bilal Saim
    2017-05-26 21:01:44 Yanıtla

    https://www.facebook.com/Bilal-Saim-1700692230198168/ sayfasına resimle birlikte hatanızı yollarsanız yardımcı olmaya çalışırım.

Yorum yap


Bu sayfa 0,2605 sn de hazırlandı