2009-05-13 56 views
31

Wygląda na to, że nie ma interfejsu Google Alerts API.Interfejs API alertów Google?

Po pierwsze, w jaki sposób uzyskałbyś informacje o alertach Google w bazie danych inne niż przetwarzanie tekstu wiadomości e-mail wysyłanej przez Google?

Jeśli musisz przeanalizować tekst, w jaki sposób przeanalizowałbyś odpowiednie fragmenty wiadomości e-mail?

Odpowiedz

40

Po utworzeniu alertu ustaw opcję "Dostarcz do" na "Kanał", a następnie możesz spożywać plik danych XML, tak jak każdy inny kanał. Jest to znacznie łatwiejsze do przeanalizowania i przetrawienia w bazie danych.

+0

Gdzie jest api? Nie mogę znaleźć żadnych dokumentów dotyczących korzystania z alertów google api –

+0

To nie tyle API, co zwykły URL. Zobacz https://thenextweb.com/google/2013/09/11/google-alerts-regains-rss-delivery-option-it-lost-after-google-readers-demise/ pokazuje, jak zarządzać swoimi alertami Google RSS feed i uzyskaj adres URL. –

2

Znam ten post jest trochę stary, ale po wyszukaniu dużo, w końcu znalazłem pracę biblioteki php programowo czytać, usuwać i tworzyć Google Alerts:

http://coders11.com/googlealertsapi

+6

To API nie jest już dostępne. FWIW. –

+0

Ale nadal działa, niemniej jednak – 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'); 

Będzie powrót link RSS z nowo utworzony alert

+0

Nie przetestowałem kodu - ale tak, jak udostępniłeś kod, aby utworzyć alert, czy istnieje również kod do usuwania lub edytowania alertów? –

+4

Dla przyszłych czytelników, od tego dnia to rozwiązanie już nie działa. –

+0

Ktoś ma aktualizację tego kodu? – MarcoZen

1

można też wypróbować ten C# library

+1

Link nie działa. Wersja buforowana Google: http://webcache.googleusercontent.com/search?q=cache:cYyxb6oQ3oYJ:www.frickingnutz.com/%3Fq%3Dnode/51+&cd=6&hl=en&ct=clnk&gl=ie – Seany84

Powiązane problemy