{"id":97,"date":"2009-07-29T01:19:06","date_gmt":"2009-07-28T23:19:06","guid":{"rendered":"http:\/\/gate.rdue.net\/mygate\/blog\/?p=97"},"modified":"2009-07-29T01:19:06","modified_gmt":"2009-07-28T23:19:06","slug":"gipp-google-image-php-parser","status":"publish","type":"post","link":"https:\/\/duerrenberger.dev\/journal\/2009\/07\/29\/gipp-google-image-php-parser\/","title":{"rendered":"GIPP: Google Image PHP Parser"},"content":{"rendered":"<p>GIPP, ist mir eigentlich erst in den Sinn gekommen, als ich den Titel angeschaut habe&#8230;<br \/>\nDa ich die Suche f\u00fcr ein Covers von Filme etwas schneller machen wollte, habe ich nach einem GIPP gesucht. Hab auch einen gefunden, doch tollerweise ben\u00fctzt dieser cURL und naja dies kann man ja auch ein wenig anderst l\u00f6sen, vorallem wenn cURL nicht installiert ist.<br \/>\nDarum hab ich dann meine eigene Funktion, bzw. GIPP geschrieben.<\/p>\n<pre class=\"brush:php\">&lt;?php\n\nfunction googleImageResults($search,$start=0)\n{\n $html = file_get_contents(\"http:\/\/images.google.ch\/images?q=\".htmlspecialchars(str_replace(\" \",\"+\",$search)).\"&start=\".$start);\n \/\/echo $html;\n preg_match_all('\/dyn.setResults((.+));\/', $html, $matches);\n\n $html = $matches[0][0];\n\n \/\/ Special chars decode\n $html = str_replace(\"\\x3d\",\"=\",$html);\n $html = str_replace(\"\\x26\",\"&\",$html);\n $html = str_replace(\"\\x3c\",\"&lt;\",$html);\n $html = str_replace(\"\\x3e\",\"&gt;\",$html);\n\n \/\/ Replace Useless Things\n $html = str_replace(\"dyn.setResults(\",\"\",$html);\n $html = str_replace(\");\",\"\",$html);\n $html = str_replace(\"[]\",\"\",$html);\n $html = str_replace(\"[[\",\"[\",$html);\n $html = str_replace(\"]]\",\"]\",$html);\n $html = str_replace(\",,\"\"\",\"\",$html);\n\n \/\/ Loading in a Array\n $images = array();\n $imgs = array();\n $img = array();\n\n while(strpos($html,\"[\")!==FALSE)\n {\n  $start = strpos($html,\"[\");\n  $end = (strpos($html,\"],\")===FALSE?strpos($html,\"]\"):strpos($html,\"],\"));\n  $image = substr($html,$start+1,$end-$start-1);\n  $images[] = $image;\n  $html = str_replace(\"[\".$image.\"]\",\"\",$html);\n }\n\n foreach($images as $image)\n {\n  $image = str_replace('\",\"',\"n\",$image);\n  $image = str_replace('\"',\"\",$image);\n\n  $img = explode(\"n\",$image);\n  \/\/echo $image;\n\n  $temp = array();\n\n  $temp['searchurl'] = $img[0];\n  $temp['searchhost'] = $img[14];\n  $temp['searchlanguage'] = substr($img[0],strpos($img[0],\"&hl=\")+4,strpos($img[0],\"&\",strpos($img[0],\"&hl=\")+1)-(strpos($img[0],\"&hl=\")+4));\n  $temp['searchstart'] = substr($img[0],strpos($img[0],\"&start=\")+7,strpos($img[0],\"&\",strpos($img[0],\"&start=\")+1)-(strpos($img[0],\"&start=\")+7));\n  $temp['searchum'] = $img[15];\n  $temp['searchcachid'] = $img[2];\n  $temp['searchusg'] = substr($img[0],strpos($img[0],\"&usg=\")+5,strpos($img[0],\"&\",strpos($img[0],\"&usg=\")+1)-(strpos($img[0],\"&usg=\")+5));\n\n  $temp['fileurl'] = $img[3];\n  $temp['fileheight'] = substr($img[0],strpos($img[0],\"&h=\")+3,strpos($img[0],\"&\",strpos($img[0],\"&h=\")+1)-(strpos($img[0],\"&h=\")+3));\n  $temp['filewidth'] = substr($img[0],strpos($img[0],\"&w=\")+3,strpos($img[0],\"&\",strpos($img[0],\"&w=\")+1)-(strpos($img[0],\"&w=\")+3));\n  $temp['filesize'] = substr($img[0],strpos($img[0],\"&sz=\")+4,strpos($img[0],\"&\",strpos($img[0],\"&sz=\")+1)-(strpos($img[0],\"&sz=\")+4));\n  $temp['fileformat'] = $img[10];\n  $temp['fileinfo'] = $img[9];\n\n  $temp['thumbnailurl'] = $img[14].\"?q=tbn:\".$img[2].$img[3];\n  $temp['thumbnailwidth'] = $img[4];\n  $temp['thumbnailheight'] = $img[5];\n\n  $temp['host'] = $img[11];\n  $temp['hostsite'] = substr($img[0],strpos($img[0],\"&imgrefurl=\")+11, strpos($img[0],\"&\",strpos($img[0],\"&imgrefurl=\")+1)- (strpos($img[0],\"&imgrefurl=\")+11));\n  $temp['hostkeywords'] = $img[6];\n\n  $temp['nothing1'] = $img[1];\n  $temp['nothing2'] = $img[7];\n  $temp['nothing3'] = $img[8];\n  $temp['nothing4'] = $img[12];\n  $temp['nothing5'] = $img[13];\n\n  $imgs[] = $temp;\n }\n return $imgs;\n}\n\n?&gt;<\/pre>\n<p>Nicht gerade der beste Schreibstil, aber ich komm irgendwie nie so richt mit regul\u00e4ren Ausdr\u00fccken klar, darum das ganze strpos\/substr Zeugs&#8230;<br \/>\nAm Ende erh\u00e4lt man ein normales Index-Array mit mehreren Assoziierten-Arrays.<br \/>\nDie &#171;nothing&#187; Inhalte enthalten normalerweise nichts, aber vielleicht findet jemand mehr dar\u00fcber raus&#8230;<br \/>\nDie &#171;unknow&#187; Inhalte hab ich bis jetzt einfach nicht zuordnen k\u00f6nnen. Aber da gibt es auch noch weitere Sachen, bei denen ich den Sinn noch nicht begriffen habe (z.B. &#8217;searchum&#8216; oder &#8217;searchusg&#8216;).<\/p>\n<p>Also f\u00fcr allen nicht so experimentier freudigen:<\/p>\n<pre class=\"brush:php\">&lt;?php\n\ninclude(\"fileMitDer_googleImageResults_Funktion\");\n\n$images = googleImageResults(\"James Bond\");\n$jamesBondBild = $images[0]['fileurl'];\n\n$images2 = googleImageResults(\"James Bond\",21);\n$jBBOffSet21 = $images[0]['fileurl'];\n\n?&gt;<\/pre>\n<p>So ich hoffe man kommt nach und das Script findet irgendwo seinen Zweck!<\/p>\n<p>Sorry dass es nicht so sch\u00f6n dargestellt wird&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>GIPP, ist mir eigentlich erst in den Sinn gekommen, als ich den Titel angeschaut habe&#8230; Da ich die Suche f\u00fcr ein Covers von Filme etwas schneller machen wollte, habe ich nach einem GIPP gesucht. Hab auch einen gefunden, doch tollerweise ben\u00fctzt dieser cURL und naja dies kann man ja auch ein wenig anderst l\u00f6sen, vorallem [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,13],"tags":[],"class_list":["post-97","post","type-post","status-publish","format-standard","hentry","category-pc","category-web"],"_links":{"self":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts\/97","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/comments?post=97"}],"version-history":[{"count":0,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts\/97\/revisions"}],"wp:attachment":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/media?parent=97"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/categories?post=97"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/tags?post=97"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}