30 May 2017
Laravel ile Twitter'da thujohn/twitter API'sini Kullanarak Video Paylaşımı
  • 628 Okuma
  • 1 Yorum
  • 1 Beğeni

Laravel ile Twitter'da thujohn/twitter API'sini Kullanarak Video Paylaşımı

Laravel ile geliştirdiğiniz bir web uygulaması üzerinden yapılan video paylaşımının twitter üzerinde de otomatik olarak paylaşılmasına ihtiyaç duyabilirsiniz. Bu şekilde uygulamanız üzerinde yapılan paylaşımlardan anlık olarak takipçilerinizin de haberi olmasını sağlayabilirsiniz. Bu makalemde bu işlemin thujohn/twitter API 'si ile nasıl yapılacağını anlatacağım.


thujohn/twitter API'si hem Laravel 4 hem de Laravel 5 ile uyumlu çalışmaktadır. Fakat mevcut durumda bu API ile sadece yazı ve fotoğraf paylaşımı yapılabilmektedir. Bu API kullanılarak Twitter üzerinden oturum açma makaleme buradan erişebilirsiniz. Yine bu API kullanılarak yazı ve fotoğraf paylaşımı makaleme buradan erişebilirsiniz.


Twitter API kullanılarak video paylaşımını desteklemesine rağmen, thujohn/twitter API'si mevcut durumda sadece yazı ve fotoğraf paylaşımını desteklemektedir. Bu API'ye video paylaşımını da desteklemek için, uygulama klasörleri altındaki "vendor/thujohn/twitter/src/Thujohn/Twitter/Traits" klasörünün altındaki "MediaTrait.php" dosyasının içerisindeki fonksiyonda değişiklik yapmamız gerekiyor. Mevcut durumda dosya içerisindeki fonksiyon aşağıda olduğu gibidir.


public function uploadMedia($parameters = [])
    {
       if (!array_key_exists('media', $parameters) && !array_key_exists('media_data', $parameters))
       {
          throw new BadMethodCallException('Parameter required missing : media or media_data');
       }

       if (array_key_exists('media', $parameters) && array_key_exists('media_data', $parameters))
       {
           throw new BadMethodCallException('You cannot use media and media_data at the same time');
       }

   return $this->post('media/upload', $parameters, true);
}


Bu fonksiyonu aşağıdaki şekilde değiştiriyoruz.


public function uploadMedia($parameters = [], $video = false)
    {
        if (!array_key_exists('media', $parameters) && !array_key_exists('media_data', $parameters))
        {
            throw new Exception('Parameter required missing : media or media_data');
        }

        if (array_key_exists('media', $parameters) && array_key_exists('media_data', $parameters))
        {
            throw new Exception('You cannot use media and media_data at the same time');
        }

        if (!array_key_exists('media', $parameters)) {
            throw new Exception('Parameter required missing : media');
        }

        if(!$video)
            return $this->post('media/upload', $parameters, true);
        else {

            $response = $this->post('media/upload', ['command' => 'INIT', 'media_type'=>'video/*', 'total_bytes' => strlen($parameters['media'])], true);

            $media_id = $response->media_id;
            $response = $this->post('media/upload', ['command' => 'APPEND', 'media_id'=>$media_id, 'segment_index' => '0', 'media' => $parameters['media']], true);

            return $this->post('media/upload', ['command' => 'FINALIZE', 'media_id'=>$media_id], true);
        }
    }


Bu şekilde, thujohn/twitter API'sine twitter üzerinde video paylaşımı özelliğini kazandırmış olduk. Twitter üzerinde video paylaşımı için, aşağıdaki fonksiyonu kullanabilirsiniz.


public function sendTweet($tweet, $video)
{
  $uploaded_media = Twitter::uploadMedia(['media' => File::get($video)],true);
    
  if (strlen($tweet) < 140 ) {
     Twitter::postTweet(['status' => $tweet, 'media_ids' => $uploaded_media->media_id_string]);
  }
}


Bu fonksiyonda dikkat edilmesi gereken nokta, video paylaşımı yapmak istediğimizden,


Twitter::uploadMedia(['media' => File::get($video)],true)


fonksiyonunun ikinci bir parametre alması ve bu değerin "true" olmasıdır. Eğer video yerine resim paylaşmak istiyorsak bu değeri "false" yapıyoruz.


public function sendTweet($tweet, $image)
{
  $uploaded_media = Twitter::uploadMedia(['media' => File::get($image)],false);
    
  if (strlen($tweet) < 140 ) {
     Twitter::postTweet(['status' => $tweet, 'media_ids' => $uploaded_media->media_id_string]);
  }
}


Sonuç


Laravel ile geliştirdiğiniz uygulama üzerinden yapılan video paylaşımlarını otomatik olarak tweet atmak için  thujohn/twitter API'sini kullanmanızı tavsiye ederim. Bu API'yi kullanarak, Twitter üzerinden oturum açma ve fotoğraf paylaşımlarını da tweet attırabilirsiniz. Bu makale de bu mevcut API'ye video paylaşım özelliğinin nasıl kazandırıldığı ve bu özelliğinin kullanımını paylaştım. Yalnız, API'nin "vendor" klasörü altında bulunan dosyası üzerinde değişiklik yaptığımızdan "composer update" komutu ile yaptığımız bu değişikliğin eski haline döneceğine dikkat edin.


Umarım faydalı olur. İyi çalışmalar.


Makaleyi faydalı buldunuz mu ?

Yazar


Legend Engineer

Legend Engineer

Mühendis (Bilgisayar)

Bilgisayar Mühendisliği mezunuyum. Bilgisayar alanında edindiğim bilgileri bu blog üzerinde paylaşıyorum. Beni takipte kalın.

Yorumlar


Ceza | 15 Nov 2017

Cok guzel makale olmus ellerinize saglik.hocam laravel5 kodlamasina ait bir script buldum onu kullanmak istiyorum.fakat wordpressdeki gibi otomatik yazilari belirli bir saatde sitede yayinlama istiyorum.sizce wp eklentisini laravele entegre etmek mumkunmu



Legend Engineer

Legend Engineer | 15 Nov 2017

İstediğiniz işlemi, Laravel ile Zamanlanmış Görevler(scheduling) kullanarak da yapabilirsiniz. Thujohn/twitter API'si ve Zamanlanmış Görevler ile istediğiniz zaman, istediğiniz bir içeriği Twitter'da paylaşabilirsiniz. WP eklentisi ile ilgili bir fikrim yok malesef.


İlginizi Çekebilir

Makale Hakkındaki Düşünçelerinizi Paylaşın