• 19-09-2010, 21:08:22
    #1
    Aşağıdaki kod WP için hazırlanmış bir Film çekme botu. Bu aynı zamanda plug-in olarak hazırlanmış. Sadece aşağıdaki kodlardan oluşuyor.

    Soru: bunu her defasında 1 film çekecek ve çektiği filmi taslaklara atacak şekilde nasıl ayarlayabilirim.

    <?php
    /*
    Plugin Name: sinemadafilmizle.com Botu
    Plugin URI: http://www.ebuyukkaya.net
    Description: sinemadafilmizle.com'dan videoları çeker.
    Author:  Ekrem BÜYÜKKAYA
    Version: 1.0
    Author URI: http://www.ebuyukkaya.net
    */
    function eb_s9botmenu() {
    	add_options_page('sinemadafilmizle.com Botu', 'sinemadafilmizle.com Botu', 10, __FILE__, 'eb_s9bot_form');
    }
    add_action('admin_menu', 'eb_s9botmenu');
    
    function eb_s9bot_cevir($url)
    {
    $url = trim($url);
    $url = strtolower($url);
    $find = array('', '');
    $url = str_replace ($find, '', $url);
    $url = preg_replace('/<(\/{0,1})img(.*?)(\/{0,1})\>/', 'image', $url);
    $find = array(' ', '"', '&', '&', '\r\n', '\n', '/', '\\', '+', '<', '>');
    $url = str_replace ($find, '-', $url);
    $find = array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê');
    $url = str_replace ($find, 'e', $url);
    $find = array('í', 'ı', 'ì', 'î', 'ï', 'I', 'İ', 'Í', 'Ì', 'Î', 'Ï');
    $url = str_replace ($find, 'i', $url);
    $find = array('ó', 'ö', 'Ö', 'ò', 'ô', 'Ó', 'Ò', 'Ô');
    $url = str_replace ($find, 'o', $url);
    $find = array('á', 'ä', 'â', 'à', 'â', 'Ä', 'Â', 'Á', 'À', 'Â');
    $url = str_replace ($find, 'a', $url);
    $find = array('ú', 'ü', 'Ü', 'ù', 'û', 'Ú', 'Ù', 'Û');
    $url = str_replace ($find, 'u', $url);
    $find = array('ç', 'Ç');
    $url = str_replace ($find, 'c', $url);
    $find = array('ş', 'Ş');
    $url = str_replace ($find, 's', $url);
    $find = array('ğ', 'Ğ');
    $url = str_replace ($find, 'g', $url);
    $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
    $repl = array('', '-', '');
    $url = preg_replace ($find, $repl, $url);
    $url = str_replace ('--', '-', $url);
    return $url;
    }
    function eb_s9bot_kaynak($url)
    {
    	$ch = curl_init();
    	curl_setopt($ch, CURLOPT_URL, $url);
    	curl_setopt($ch, CURLOPT_REFERER, "http://www.sinemadafilmizle.com/");
    	curl_setopt($ch, CURLOPT_HEADER, 0);
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    	$data = curl_exec($ch);
    	curl_close($ch);
    	return $data;
    }
    function eb_s9bot_form()
    {
    		echo '<div class="wrap">
    		 <h2>sinemadafilmizle.com Botu</h2>';
    			if($_POST['gonder'])
    			{	
    				$bas = $_POST['baslangic'];
    				$bitis = $_POST['bitis'];
    				
    				$blog_url = get_bloginfo('wpurl');
    				if($bitis<$bas OR $bas<1)
    				{
    					die('Gecersiz Sayfa Girisi. <a href="javascript: history.back()">geri dön</a>');
    				}
    				for($i=$bas;$i<=$bitis;$i++)
    				{					
    					$kaynak = eb_s9bot_kaynak('http://www.sinemadafilmizle.com/page/'.$i);
    					$pattern = '/href="(.*)\.html" rel="bookmark" title="(.*)">/iU';
    					preg_match_all($pattern, $kaynak, $cikti_as);
    					
    					$a = 0;
    					foreach($cikti_as[1] as $f_link)
    					{	
    						$link = $f_link.".html";
    						$bilgi['baslik'] = $cikti_as[2][$a]; /////////////////////////////////////
    						$bilgi['baslik'] .= " film izle";
    						
    						$kaynak = eb_s9bot_kaynak($link);	
    						//echo $kaynak;					
    						
    						$cikti = explode('class="descr">',$kaynak);
    						$cikti = preg_split('/<\/div><\/div>[\s]*<div class="tanim">/',$cikti[1]);
    						$bilgi['aciklama'] = $cikti[0]; ///////////////////////////////////////
    						
    						$cikti = explode('"ikinci" style="display:none">',$kaynak);
    						$cikti = preg_split('/<\/div>[\s]*<\/div>/',$cikti[1]);
    						$bilgi['embed'] = $cikti[0]; ///////////////////////////////////////
    						$bilgi['embed'] = preg_replace('/[\s]{1,999}/',' ',$bilgi['embed']);
    						
    						preg_match_all('/<a href="http:\/\/www\.sinemadafilmizle\.com\/tag\/(.*)" rel="tag">(.*)<\/a>/iU',$kaynak,$tag_cikti);
    						$bilgi['tag'] = implode(',',$tag_cikti[2]);
    						
    						$pattern = '/src="(.*)" alt="/iU';
    						preg_match($pattern, $bilgi['aciklama'], $cikti);
    						if(empty($cikti[1]))
    						{
    							$pattern = '/src="(.*)" title="/iU';
    							preg_match($pattern, $bilgi['aciklama'], $cikti);
    						}
    						$bilgi['thumb'] = $cikti[1];
    						
    						$yazi = $bilgi['aciklama']."<!--more-->".$bilgi['embed'];
    						$yazi = str_replace(array("
    						","\n")," ", $yazi);
    						$yazi = str_replace("href=\"http://www.sinemadafilmizle.com/\"","href='".$blog_url."'", $yazi);
    						$yazi = str_replace("href=\'http://www.sinemadafilmizle.com/\'","href='".$blog_url."'", $yazi);
    						$yazi = str_replace("href=\"http://www.sinemadafilmizle.com\"","href='".$blog_url."'", $yazi);
    						$yazi = str_replace("href=\'http://www.sinemadafilmizle.com/\'","href='".$blog_url."'", $yazi);
    						$file_extension = pathinfo( $bilgi['thumb'] , PATHINFO_EXTENSION );  
    						$file_name = pathinfo( $bilgi['thumb'] , PATHINFO_FILENAME );
    						$yazi = str_replace($bilgi['thumb'],"".$blog_url."/wp-content/uploads/".$file_name.".".$file_extension, $yazi);
    						
    						$pattern = '/category\/(.*)" title="(.*) kategorisindeki tüm yazıları göster" rel="category tag"/iU';
    						preg_match_all($pattern, $kaynak, $cikti);
    						
    						$kat_slug = $cikti[1];
    						$kat_isim = $cikti[2];
    						
    						$kontrol = mysql_num_rows(mysql_query("SELECT post_title FROM wp_posts WHERE post_title='".addslashes($bilgi['baslik'])."'"));
    						if($kontrol===0)
    						{	 
    							$fh = fopen("../wp-content/uploads/".$file_name.".".$file_extension, "w+");
    							if(file_put_contents("../wp-content/uploads/".$file_name.".".$file_extension, file_get_contents($bilgi['thumb'])))
    							{						
    								$id = array();
    								
    								$k = 0;
    								foreach($kat_slug as $slug)
    								{
    								$idObj = get_category_by_slug($slug); 
    								$id[$k] = $idObj->cat_ID;
    								if($id[$k]=="" or $id[$k]==0)
    								{
    									$id[$k] = wp_create_category($kat_isim[$k]);
    								}
    								$k++;
    								}
    								//echo $id;
    								  $my_post = array();
    								  $my_post['post_title'] = $bilgi['baslik'];
    								  $my_post['post_content'] = $yazi;
    								  $my_post['post_status'] = 'publish';
    								  $my_post['post_author'] = 1;
    								  $my_post['post_category'] = $id;
    								  $my_post['tags_input'] = $bilgi['tag'];
    
    								// Insert the post into the database
    								  $kayit_id = wp_insert_post( $my_post );
    								if($kayit_id!=0)
    								{
    									$ozel_alan_ismi = "resim";
    									add_post_meta($kayit_id ,$ozel_alan_ismi, $blog_url."/wp-content/uploads/".$file_name.".".$file_extension);									
    									echo '<div class="updated fade"><p>'.$bilgi['baslik'].' başarıyla eklendi</p></div>';
    								}
    								else
    								{
    									echo '<div class="error fade"><p>'.$bilgi['baslik'].' eklenirken hata oluştu. <strong>Başarısız</strong></p></div>';
    								}
    							}
    							else
    							{
    								echo '<div class="error fade"><p>'.$bilgi['baslik'].' eklenirken resim alımında problem oldu. <strong>Başarısız</strong></p></div>';
    							}
    						}
    						else
    						{
    							echo '<div class="error fade"><p>'.$bilgi['baslik'].' daha önceden eklenmiş.</p></div>';
    						}
    						$a++;
    					}
    				}
    			}
    			else
    			{
    			?>
    			<form method="post">
    				<div style="background-color: rgb(255, 251, 204);" id="message" class="updated fade"><p>Aşağıdan istediğiniz sayfa aralığını seçip <strong>seçilenleri ekle</strong>'ye basın.</p></div>
    				Sinemadafilmizle'den şu sayfadan (
    				<input name="baslangic" value="1" size="3" type="text" /> ) şu sayfaya kadar 	( <input name="bitis" value="1" size="3" type="text" /> ) eklensin. 
    				
    			<br><br>
    			<input type="submit" value="Seçilenleri Ekle" onclick="if(!confirm('Eklemek İstediğinize Emin Misiniz?')){return false;}" name="gonder"  class="button-primary" />
    			</div>
    			<?php
    	}
    	echo "</div>";
    }
    
    	 register_activation_hook(__FILE__,'eb_s9bot_install');
    	 register_deactivation_hook(__FILE__,'eb_s9bot_uninstall');
    
    	// Install plugin
    	function eb_s9bot_install() {
    	}
    
    	// Uninstall plugin
    	function eb_s9bot_uninstall() {
    	}
    ?>
    Şimdiden yardım edenlere teşekkürler..
  • 21-09-2010, 22:47:23
    #2
    for($i=$bas;$i<=$bitis;$i++)
    {

    bu satır parse ettiğin sitenin sayfalarında gezmen için

    foreach($cikti_as[1] as $f_link)
    {

    bu satırda içinde bulunduğun sayfanın içerisinde bulunan film linklerinde gezmen için.

    Tavsiyem, kaçıncı sayfada olduğunu ve sayfadaki kaçıncı filmde olduğunu basit bir db de tut.
    örnek;
    id sayfa_no film_no
    0 1 1

    bunlar başlangıç değerlerin olsun,

    database den bu verileri al ve for ların içinde sadece sayfa sıra sının ve film sırasının buradaki değerlere eşit olması durumunda geriye kalan parse ve db ye ekleme işlemini gerçekleştir. ve db ye ekleme işleminin gerçekleşmesi durumunda da sayfa_no ve film_no yu kontrol ederek değiştir.
    Şöyleki;
    sayfa_no 1 film_no 1 iken ekleme işlemi yapıldı ise film_no nun bir sayfada olabilecek film sayısına eşit olup olmadığına bak eğer eşit değilse sayfa_no aynı kalsın sadece film_no yu 1 arttır.
    Eğer eşitse
    sayfa_no yu 1 arttır film_no yu 1 e setle.

    Algoritması bu. tabi bu işlemi, yaptığında araya koyduğun zamana göre yeni eklnen filmleri kaçırabilirsin. bunun yerne tavsiyem ilk önce tamamını al , sonra sadece anasayfada olanları al ki zaten db de kaydı olanları bir daha eklemeyeceğin için her gün en fazla bir iki film almış olursun. Birde tagları , açıklamaları falan değiştir, ondada aralara farklı kelimeler , sonuna başına farklı kelimeler ekle, cümleler ekle ki google kopya içerik muamelesi yapmasın (en azından şansını dene )

    Kolay gelsin