2009-05-13 10 views
31

GoogleアラートAPIはありません。Google Alerts API?

第1に、Googleアラートの情報を、Googleが送信するメールのテキストを解析する以外の方法で取得する方法はありますか?

テキストを解析する必要がある場合は、電子メールメッセージの関連する部分をどのように解析するのですか?

答えて

40

アラートを作成するときは、「配信先」を「フィード」に設定し、他のフィードと同じようにフィードXMLを使用できます。これは、データベースを解析して消化する方がはるかに簡単です。

+0

apiはどこですか? GoogleアラートAPIを使用している文書を見つけることはできません –

+0

フィードURLとしてのAPIはそれほど多くありません。 https://thenextweb.com/google/2013/09/11/google-alerts-regains-rss-delivery-option-it-lost-after-google-readers-demise/ GoogleアラートRSSの管理方法をご覧ください。フィードを取得し、URLを取得します。 –

2

私はこの記事が少し古いですけど、多くのことを検索した後、私は最終的にプログラム的に読み取り、削除やGoogleアラートの作成に取り組んでPHPのライブラリが見つかりました:

http://coders11.com/googlealertsapi

+6

そのAPIはもはや自由に利用できません。 FWIW。 –

+0

でもまだ動作しています – MazarD

12
class googleAlerts{ 
    public function createAlert($alert){ 
     $USERNAME = '[email protected]'; 
     $PASSWORD = 'YYYYYY'; 
     $COOKIEFILE = 'cookies.txt'; 

     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_COOKIEJAR, $COOKIEFILE); 
     curl_setopt($ch, CURLOPT_COOKIEFILE, $COOKIEFILE); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); 
     curl_setopt($ch, CURLOPT_TIMEOUT, 120); 

     curl_setopt($ch, CURLOPT_URL, 
      'https://accounts.google.com/ServiceLogin?hl=en&service=alerts&continue=http://www.google.com/alerts/manage'); 
     $data = curl_exec($ch); 

     $formFields = $this->getFormFields($data); 

     $formFields['Email'] = $USERNAME; 
     $formFields['Passwd'] = $PASSWORD; 
     unset($formFields['PersistentCookie']); 

     $post_string = ''; 
     foreach($formFields as $key => $value) { 
      $post_string .= $key . '=' . urlencode($value) . '&'; 
     } 

     $post_string = substr($post_string, 0, -1); 

     curl_setopt($ch, CURLOPT_URL, 'https://accounts.google.com/ServiceLoginAuth'); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); 

     $result = curl_exec($ch); 

     if (strpos($result, '<title>') === false) { 
      return false; 

     } else { 
      curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/alerts'); 
      curl_setopt($ch, CURLOPT_POST, 0); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, null); 

      $result = curl_exec($ch); 

      curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/alerts/create'); 
      curl_setopt($ch, CURLOPT_POST, 0); 
      $result = curl_exec($ch); 
      //var_dump($result); 
      $result = $this->getFormFieldsCreate($result); 
      $result['q'] = $alert; 
      $result['t'] = '7'; 
      $result['f'] = '1'; 
      $result['l'] = '0'; 
      $result['e'] = 'feed'; 
      unset($result['PersistentCookie']); 

      $post_string = ''; 
      foreach($result as $key => $value) { 
       $post_string .= $key . '=' . urlencode($value) . '&'; 
      } 

      $post_string = substr($post_string, 0, -1); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); 
      $result = curl_exec($ch); 
      curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/alerts/manage'); 
      $result = curl_exec($ch); 
      if (preg_match_all('%'.$alert.'(?=</a>).*?<a href=[\'"]http://www.google.com/alerts/feeds/([^\'"]+)%i', $result, $matches)) { 
       return ('http://www.google.com/alerts/feeds/'.$matches[1][0]); 
      } else { 
       return false; 
      } 


     } 
    } 

    private function getFormFields($data) 
    { 
     if (preg_match('/(<form.*?id=.?gaia_loginform.*?<\/form>)/is', $data, $matches)) { 
      $inputs = $this->getInputs($matches[1]); 

      return $inputs; 
     } else { 
      die('didnt find login form'); 
     } 
    } 
    private function getFormFieldsCreate($data) 
    { 
     if (preg_match('/(<form.*?name=.?.*?<\/form>)/is', $data, $matches)) { 
      $inputs = $this->getInputs($matches[1]); 

      return $inputs; 
     } else { 
      die('didnt find login form1'); 
     } 
    } 


    private function getInputs($form) 
    { 
     $inputs = array(); 

     $elements = preg_match_all('/(<input[^>]+>)/is', $form, $matches); 

     if ($elements > 0) { 
      for($i = 0; $i < $elements; $i++) { 
       $el = preg_replace('/\s{2,}/', ' ', $matches[1][$i]); 

       if (preg_match('/name=(?:["\'])?([^"\'\s]*)/i', $el, $name)) { 
        $name = $name[1]; 
        $value = ''; 

        if (preg_match('/value=(?:["\'])?([^"\'\s]*)/i', $el, $value)) { 
         $value = $value[1]; 
        } 

        $inputs[$name] = $value; 
       } 
      } 
     } 

     return $inputs; 
    } 
} 
$alert = new googleAlerts; 
echo $alert->createAlert('YOUR ALERT'); 

それがします新しく作成したアラートの

+0

私はコードをテストしていませんが、アラートを作成するコードを共有しているように、アラートを削除または編集するコードもありますか? –

+4

将来の読者の皆様には、このソリューションはもはや機能しません。 –

+0

誰でもこのコードを更新していますか? – MarcoZen

1

のRSSフィードへのリンクを返すまた、PythonでこのC# library

+1

リンクが無効です。 Googleキャッシュバージョン:http://webcache.googleusercontent.com/search?q=cache:cYyxb6oQ3oYJ:www.frickingnutz.com/%3Fq%3Dnode/51+&cd=6&hl=en&ct=clnk&gl=ie – Seany84

0

を試してみることができGoogleの警告ライブラリgalertsがあります。おそらくギブスコードを調べることができます: https://github.com/jab/galerts