Toon posts:

[API] Google API integratie in bestaand script

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil graag de Google zoekfunctie in een bestaand script integreren. Aangezien dit meer een ombouw is lijkt het me beter om opnieuw te beginnen (denk ik).

Toch rest mij de vraag; Is er een mogelijkheid de API mee te nemen in dit script ? Volgens mij moet het scriptwel dus danig aanpasbaar zijn dat ik een eind moet komen door de "request_url" aan te passen.

Ik heb al wat vergelijkingen gedaan met phpgoogle.com om te kijken of deze ook gebruik maakt van een "mee-integratie" van de google API, dit lijkt namelijk wel het geval. De API zit er niet voor 100% in bij phpGoogle maar wordt aangeroepen.

Ik voeg het script even bij zodat iemand zijn mening kan geven over; Of opnieuw beginnen, of aanpassen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php 


class Google { 


    function Google() { 
        $this->profile = array( 
            'site_name' => 'Google', 
            'site_url' => 'http://www.google.com', 
            'request_url' => 
'http://www.google.com/search?as_q=$e_qry_str&num=50&hl=en&ie=UTF-8&bt..., 
            'add_url' => 'http://www.google.com/addurl.html', 
        ); 
    } 


    function parse_results(&$output) { 
        #echo $output;  # debug 
        $results = array(); 
        if(preg_match_all('{<p class=g><a href=([^> ]+) 
[^>]*>(.+?)</a><br>(.*?)<br><font}is',$output,$matches,PREG_SET_ORDER)) 
{ 
            $last_match = ''; 
            foreach($matches as $r) { 
                $result = array( 
                    'real_url' => html_decode($r[1]), 
                    'follow_url' => html_decode($r[1]), 
                    'title' => html_decode($r[2]), 
                    'description' => html_decode($r[3]), 
                ); 
                #$result['real_url'] = 
preg_replace("{^(.+)(http://[^&]+)(&.*|$)}","\$2",$result['real_url']); 
                array_push($results,$result); 
                $last_match = &$r[0]; 
            } 
            if($last_match) { 
                $offset = 
strpos($output,$last_match)+strlen($last_match); 
                $output = substr($output,$offset); 
            } 
        } 
        #var_export($results); # debug 
        return $results; 
    } 


    function parse_next_qry($env) { 
        $next_qry = ''; 
        $full_output = $env['full_output']; 
        #echo $full_output; 
        $depth = $env['depth']; 
        $e_qry_str = $env['e_qry_str']; 
        $from = ($depth-1)*10+1; 


if(preg_match('{href=([^>]+)><img[^>]*><br><span[^>]*>Next<}is',$full_outpu­t,$matches)) 
{ 
            $next_qry = $matches[1] = html_decode($matches[1]); 
            $next_qry = "http://www.google.com$matches[1]"; 
        } 
        #var_export($next_qry); 
        return $next_qry; 
    } 


        function adjust_initial_qry($qry) { # PREPARE THE REQUEST URL 
        $url = $this->profile['request_url']; 


        # adjust language: 
        $lang = $qry['language']; 
        $lang_table = array( 
            'szh' => 'zh-CN', 
            'tzh' => 'zh-TW', 
            'he' => 'iw' 
        ); 
        if(@$lang_table[$lang]){ 
            $lang = $lang_table[$lang]; 
        } 
        if(!$lang) { 
            $lang = 'en'; 
        } 


        # adjust geo-region: 
        $geo = $qry['geo']; 
        $e_qry_str = $qry['e_qry_str']; 
        if(@$qry['e_full_qry_str']) { 
            $e_qry_str = $qry['e_full_qry_str']; 
        } 
        $url = eval("return \"$url\";"); # evaluate the url 
        return $url; 
    } 



} 


?>

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 14-04 16:14
Volgens mij heeft dit niets met de API te maken, maar worden de gewone resultaten pagina's geparset :?

Dat is overigens niet toegestaan volgens de gebruiksovereenkomst van Google, en hiervoor kun je gebant worden.

Verwijderd

Topicstarter
frickY schreef op donderdag 19 januari 2006 @ 11:44:
Volgens mij heeft dit niets met de API te maken, maar worden de gewone resultaten pagina's geparset :?

Dat is overigens niet toegestaan volgens de gebruiksovereenkomst van Google, en hiervoor kun je gebant worden.
Dat klopt, dat mag niet volgens hun Policy en wordt automatich niet geaccepteerd.

Er moet echter een manier zijn de API te gebruiken in dit script, ik moet namelijk wel een geldige url terug krijgen die ik zelf ergens in kan plakken.

  • orf
  • Registratie: Augustus 2005
  • Nu online

orf

De Google API werkt met SOAP. Maak een account aan en je kunt 1000 queries per dag uitvoeren.

Verwijderd

Topicstarter
orf schreef op donderdag 19 januari 2006 @ 12:21:
De Google API werkt met SOAP. Maak een account aan en je kunt 1000 queries per dag uitvoeren.
Dan ga ik maar eens aan het bakken denk ik. Ik moet namelijk op de manier zoals hierboven een URL zie te parsen met SOAP en de Google API. Ik heb al een account, dus ik kan aan de slag :)

Verwijderd

Topicstarter
Beetje aan het spelen hier, maar heeft iemand nog een verlossend woord of deze "integratie" do-able is ?
Pagina: 1