4images Forum & Community

4images Modifications / Modifikationen => Mods & Plugins (Requests & Discussions) => Topic started by: bergblume on May 31, 2009, 07:03:33 PM

Title: wikipedia artikel integrieren
Post by: bergblume on May 31, 2009, 07:03:33 PM
hallo zusammen,
mir ist eine neue idee gekommen... wäre es nicht praktisch bei einem bild-upload - z.B. mit dem namen "Berlin" (image_name) - in der ausgabe auf der details-seite dann automatisch nähere infos zu berlin aus wikipedia auf seiner eigenen 4images-seite ausgewiesen zu bekommen?
ich habe hierzu folgenden code via google gefunden, weiß aber nicht wie ich diesen verwenden und zum Erhalt des oben genannten Sachverhaltes einbinden muss:

Code: [Select]
<?php

function get_wiki($search) {
if(!$search) return false;

//Gesamter Test aus der Wiki-API nehmen
$url "http://de.wikipedia.org/w/api.php?format=xml&action=parse&page=".$search;
$xml simplexml_load_file($url);
$text $xml->parse->text;
if(!$text) return false;

//Zusammenfassung suchen
$reg_exp '/<p>(.*?)<\/p>/s';
preg_match_all($reg_exp$text$match);
$summary $match[0][0];

//wenn Artikel nicht vorhanden
if($summary == "<p><b>Artikel verschwunden?</b></p>") return false;

//Links auf interne Seite Ã¤ndern
$summary ereg_replace('href="/wiki/''href="/ueber/'$summary);

return $summary;
}

?>

evtl. hilft auch dies hier weiter: http://de.wikipedia.org/w/index.php?title=Spezial:Exportieren&action=submit

gruss, bergblume
Title: Re: wikipedia artikel integrieren
Post by: Sunny C. on May 31, 2009, 07:36:28 PM
Die Idee ist klasse, eventuell geht das so:

1) öffne includes/db_field_definitions.php
suche
?>

oberhalb einfügen
$additional_image_fields['image_wiki'] = array($lang['image_wiki'], "text", 1);

2) öffne lang/deutsch/main.php
suche
?>

oberhalb einfügen
//-----------------------------------------------------
//--- Additional Fields -------------------------------
//-----------------------------------------------------
$lang['image_wiki'] = "Wikipedia";

3) öffne templates/default/member_uploadform.html
füge in dem gewünschten Bereich dies hinzu

Sprache:
{lang_image_wiki}

Feld für die Eingabe:
<input type="text" name="image_wiki" size="30" value="{image_wiki}" class="input" />

3a) öffne templates/default/details.html
füge in dem gewünschten Bereich dies hinzu

Sprache:
{lang_image_wiki}

Nur Anzeige (Das muss irgendwie dann in den Code hier drunter irgendwie reingemacht werden, so würde ich das versuchen, nur ich weis nicht wo :D )
{image_wiki}


<?php
function get_wiki($image_wiki) {
if(!$image_wiki) return false;

//Gesamter Test aus der Wiki-API nehmen
$url = "http://de.wikipedia.org/w/api.php?format=xml&action=parse&page=".$image_wiki;
$xml = simplexml_load_file($url);
$text = $xml->parse->text;
if(!$text) return false;

//Zusammenfassung suchen
$reg_exp = '/<p>(.*?)<\/p>/s';
preg_match_all($reg_exp, $text, $match);
$summary = $match[0][0];

//wenn Artikel nicht vorhanden
if($summary == "<p><b>Artikel verschwunden?</b></p>") return false;

//Links auf interne Seite ändern
$summary = ereg_replace('href="/wiki/', 'href="/ueber/', $summary);

return $summary;
}

?>
Title: Re: wikipedia artikel integrieren
Post by: rinaldos on May 31, 2009, 07:45:35 PM
Setz mal in functions.php am ende dieses rein:

function get_wiki($image_name) {
  global $user_info, $site_db, $session_info, $config;

    if(!$image_name) return false;
    //Gesamter Test aus der Wiki-API nehmen
    $url = "http://de.wikipedia.org/w/api.php?format=xml&action=parse&page=".$image_name;
    $xml = simplexml_load_file($url);
    $text = $xml->parse->text;
    if(!$text) return false;

    //Zusammenfassung suchen
    $reg_exp = '/<p>(.*?)<\/p>/s';
    preg_match_all($reg_exp, $text, $match);
    $summary = $match[0][0];
   
    //wenn Artikel nicht vorhanden
    if($summary == "<p><b>Artikel verschwunden?</b></p>") return false;
   
    //Links auf interne Seite ändern
     $summary = ereg_replace('href="/wiki/', 'href="/ueber/', $summary);
   
    return $summary;
}

in details.php vor //--- Print Out ---------------------------------------

$wiki = get_wiki($image_name);

dann bei den register_vars
"image_wiki" => $wiki,

und in der details.html kannst du nun {image_wiki} nutzen. Nur habe ich noch Probleme mit den Umlauten :-(



Title: Re: wikipedia artikel integrieren
Post by: rinaldos on May 31, 2009, 07:46:36 PM
Bei mir ist es zwar gerade quick an dirty gewesen, aber mit der kleinen Änderung der Funktion sollte Bennys Version wohl klappen ....
Title: Re: wikipedia artikel integrieren
Post by: Sunny C. on May 31, 2009, 07:49:04 PM
Naja, werde das mal morgen testen, wenn nicht heute noch jemand die optimale Lösung hat!
Cool ist das jedenfalls!
Title: Re: wikipedia artikel integrieren
Post by: bergblume on May 31, 2009, 08:07:53 PM
wow...

benny + rinaldo!!

einfach genial.... es klappt!! das ist ne super sache und man kann dem user somit kinderleicht einen gewissen mehrwert zu seinen fotos bieten...
einziges problem aktuell ist die noch falsche darstellung der sonderzeichen / umlaute (so wie rinaldo es oben bereits erwähnt hat.....

Bsp:
Quote
Berlin ist Bundeshauptstadt und Regierungssitz Deutschlands. Als Stadtstaat ist Berlin ein eigenständiges Land und bildet das Zentrum der Metropolregion Berlin/Brandenburg. Berlin ist mit 3,4 Millionen Einwohnern die bevölkerungsreichste und flächengrößte Stadt Deutschlands sowie nach Einwohnern die zweitgrößte und nach Fläche die fünftgrößte Stadt der Europäischen Union.

vielen dank nochmals!
bergblume
Title: Re: wikipedia artikel integrieren
Post by: rinaldos on May 31, 2009, 08:10:19 PM
Ich habe es nun bei mir so gelöst, und es klappt auch mit Umlauten.

functions.php über ?> einfügen

function get_wiki($image_name) {
  global $user_info, $site_db, $session_info, $config;

    if(!$image_name) return false;
    //Gesamter Test aus der Wiki-API nehmen
    $url = "http://de.wikipedia.org/w/api.php?format=xml&action=parse&page=".$image_name;
    $xml = simplexml_load_file($url);
    $text = $xml->parse->text;
    if(!$text) return false;
    //Zusammenfassung suchen
    $reg_exp = '/<p>(.*?)<\/p>/s';
    preg_match_all($reg_exp, $text, $match);
    $summary = $match[0][0];
    $summary = utf8_decode($summary);
    //wenn Artikel nicht vorhanden
    if($summary == "<p><b>Artikel verschwunden?</b></p>") return false;
    //Links auf interne Seite ändern
     $summary = ereg_replace('href="/wiki/', '', $summary);
    return $summary;
}


in /lang/deutsch/main.php folgendes einfügen:

$lang['wikipedia'] ="Wikipedia:";


in details.php finde :

//-----------------------------------------------------
//--- Print Out ---------------------------------------
//-----------------------------------------------------

füge darüber ein:
$wiki = get_wiki($image_name);

kurz darunter findest du

$site_template->register_vars(array(


füge darunter ein:

  "image_wiki" => $wiki,
  "lang_wiki" => $lang['wikipedia'],


in details.html füge folgende TAGS bei dir ein (da wo du die haben magst)

       <tr class="commentrow1">
        <td valign="top" class="row2" width="20%"><b>{lang_wiki}</b></td>
        <td valign="top" class="row2" width="80%">{image_wiki}</td>
       </tr>


das es funktioniert sieht man hier:

http://rinaldos.homeip.net/img11113.htm?l=deutsch
http://rinaldos.homeip.net/img6726.htm?l=deutsch

Das Problem mit den Umlauten habe ich mit der Zeile (ist im o.a. Code enthalten
$summary = utf8_decode($summary);
gelöst


Gruß
Ingo
Title: Re: wikipedia artikel integrieren
Post by: Sunny C. on May 31, 2009, 08:21:55 PM
Klasse! Gefällt mir sehr gut sogar :D
Title: Re: wikipedia artikel integrieren
Post by: bergblume on May 31, 2009, 08:27:32 PM
ist echt super...
@rinaldo... kannst du evtl. auch den code mal kurz posten, wenn man - wie benny es oben vorgeschlagen hat - ein eigenes image-feld "image_wiki" erstellt und dieses als referenz für den wikipedia-include verwendet (da wenn ich image_name verwende fehlermeldungen kommen, wenn der "Bildname" (z.B. berliner & sause) bei wikipedia nicht gelistet...) [das "&" macht probleme ]

kann ich zudem irgendwie einfluss daraufnehmen wieviele zeichen aus dem wikipedia-artikel abgebildet werden??
Title: Re: wikipedia artikel integrieren
Post by: rinaldos on May 31, 2009, 10:02:20 PM
Äh, das war bennys Idee, ich hatte nur vorgeschlagen das direkt in der details auszulesen. Benny wusste ja nur nicht wie die Funktion in der functions.php zu integrieren ist. Für den upload müsste ich erstmal schauen.

Wie man nun Sonderzeichen oder so aus dem Feld Image_Name entfernt wüsste ich addhock nicht.. Sorry, da muss ich erstmal was rumprobieren.

Gruß



Title: Re: wikipedia artikel integrieren
Post by: rinaldos on May 31, 2009, 10:25:38 PM
(z.B. berliner & sause) bei wikipedia nicht gelistet...) [das "&" macht probleme ]

Habe nun zum Negieren der Sonderzeichen und Umlaute etwas gefunden.
diese Zeile ist neu

$image_name = preg_replace('/\\W/', '', $image_name);


Wenn du nur das & Zeichen raushaben willst dann nimm diese zeile

$image_name = str_replace("&","",$image_name);

so muss die function nun aussehen. Kommt eben drauf an, ob du alle Sonderzeichen incl. Umlaute raushaben willst, oder nicht.


function get_wiki($image_name) {
  global $user_info, $site_db, $session_info, $config;
    $image_name = str_replace("&","",$image_name);
    if(!$image_name) return false;
    //Gesamter Test aus der Wiki-API nehmen
    $url = "http://de.wikipedia.org/w/api.php?format=xml&action=parse&page=".$image_name;
    $xml = simplexml_load_file($url);
    $text = $xml->parse->text;
    if(!$text) return false;
    //Zusammenfassung suchen
    $reg_exp = '/<p>(.*?)<\/p>/s';
    preg_match_all($reg_exp, $text, $match);
    $summary = $match[0][0];
    $summary = utf8_decode($summary);
    //wenn Artikel nicht vorhanden
    if($summary == "<p><b>Artikel verschwunden?</b></p>") return false;
    //Links auf interne Seite ändern
     $summary = ereg_replace('href="/wiki/', '', $summary);
    return $summary;
}


Vielleicht kennt ja jemand ein regexp wo man alle Sonderzeichen rausfiltert, aber die Umlaute noch drin lässt.

Gruß
ingo
Title: Re: wikipedia artikel integrieren
Post by: bergblume on May 31, 2009, 10:33:46 PM
also... habe das hier nochmal intensiv getestet und bin super zufrieden mit ergebnis!! 1000-dank an ingo + benny!
hier das ergebnis bei mir auf der seite: http://www.tourendatenbank.com/details.php?image_id=369
können die hyperlinks (die auf keine seite führen) entweder eliminiert werden oder auf die entsprechende wiki-seite weiterleiten?
gruss, bergblume
Title: Re: wikipedia artikel integrieren
Post by: 4ella on May 31, 2009, 11:59:19 PM
Deutch:
Hallo Danke fur diese Mod , das funkzioniert sehr gut zu mir auch , aber wenn ich-   austria -   bild name habe das zeigen sie mir richtig , aber -    austria (99) , austria (98) - das macht nichts , Windows system rename bilden in diese wege , ist das moglich (99) , (98) ignorieren ?
Sorry fur meine deutch aber ich sehe hier nur deutch so ich versuche  schlecht deutch schreiben
Wissen jemand  , ob ist das moglich fur kategorien  diese Mod auch benutzen ?


ENglish:
Hello this utility works very good for me too , but if I have for example image name austria - it show perfect Wikipedia description , but in the case of the image name austria (99) it shows nothing , does exist some possibility to ignore (99) , (98)  etc ?

And do anybody knows if it would work for category description too ? or category wikipedia description?  Most of my categories are cities , countries so I would appreciate this mod .
                                                          Daniel
Title: Re: wikipedia artikel integrieren
Post by: mawenzi on June 05, 2009, 12:21:47 PM
... so Ingo, nun mach bitte noch aus dem Sammelsurium eine komplette MOD-Installationsbeschreibung in einem neuen Thread ...
... so dass ich den MOD auch nach "Mods & Plugins (Releases & Support)" verschieben kann ...
...
... Danke ...
Title: Re: wikipedia artikel integrieren
Post by: rinaldos on June 05, 2009, 01:00:20 PM
Mach ich, hatte nur keinen neuen THREAD eröffnet :-(
Title: Re: wikipedia artikel integrieren
Post by: bergblume on June 05, 2009, 01:04:21 PM
zusätzlich zu diesem genialen mod kann man sich die wikipedia artikel auch in der googlemap anzeigen lassen (voraussetzung ist hierfür allerdings dieser MOD (http://www.4homepages.de/forum/index.php?topic=16533.0))

dann einfach folgenden map-overlay verwenden:

search for:
Code: [Select]
map.addControl(new GScaleControl());
add below:
Code: [Select]
map.addOverlay(new GLayer(\"org.wikipedia.de\"));
Beispiel auf: Tour Alpspitze (http://www.tourendatenbank.com/details.php?image_id=61)

gruss, bergblume
Title: Re: wikipedia artikel integrieren
Post by: rinaldos on June 05, 2009, 01:18:36 PM
@bergblume,
ich habe zwar den anderen MOD integriert, aber es werden nur die Wikizeichen, ohne das POPUP angezeigt, Was hast du denn noch geändert?

LG
Ingo
Title: Re: wikipedia artikel integrieren
Post by: bergblume on June 05, 2009, 01:26:47 PM
hi ingo,
sonst habe ich nichts geändert... nur den map-layer wie oben beschrieben eingefügt!

hast du diesen code-abschnitt in etwa so in deiner details.php?
Code: [Select]
function load() {
var map = new GMap2(document.getElementById('map'));
map.addMapType(G_PHYSICAL_MAP);
map.addControl(new GOverviewMapControl());
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.addControl(new GScaleControl());
map.addOverlay(new GLayer(\"org.wikipedia.de\"));
Title: Re: wikipedia artikel integrieren
Post by: rinaldos on June 05, 2009, 01:38:10 PM
Ja das habe ich drin, sehe ja auch alle ICONS, auch wenn ich dieses mit einbinde
map.addOverlay(new GLayer(\"com.panoramio.all\"));
sehe ich die Bilder, aber es kommt kein POPUP :-( *GRÜBEL*

Title: Re: wikipedia artikel integrieren
Post by: bergblume on June 05, 2009, 01:41:51 PM
mmmhhh....- komisch... also ich habe sonst nix verändert...
die pop-up-blasen von deinen markern funktionieren aber, oder?

den code hast du ja sicherlich auch drin, oder?
Code: [Select]
     var marker = new GMarker(map.getCenter());
     GEvent.addListener(marker, \"click\", function() {
     marker.openInfoWindowTabsHtml(infoTabs);
     });
     map.addOverlay(marker);
     marker.openInfoWindowTabsHtml(infoTabs);
     }
     }
     //]]>
     </script>";
Title: Re: wikipedia artikel integrieren
Post by: rinaldos on June 05, 2009, 01:48:47 PM
Na klar, ich teste das ganze erstmal auf dem testsystem, bevor es life geschaltet wird. Das testsystem erreichst du hier:
http://rinaldos.homeip.net:8088/img7518.htm?l=deutsch
Title: Re: wikipedia artikel integrieren
Post by: rinaldos on June 05, 2009, 02:17:42 PM
Fehler gefunden!
Es lag an der Google API Version. Ich hatte expliziet die 2.133 eingebunden. Eine Änderung auf 2.x brachte den gewünschten Erfolg.

Gruß
Ingo
Title: Re: wikipedia artikel integrieren
Post by: bergblume on June 05, 2009, 02:18:31 PM
sehr gut!  :thumbup:
Title: Re: wikipedia artikel integrieren
Post by: 4ella on June 05, 2009, 02:52:35 PM
Hallo Ingo & Berglumme ,
Ich sehe sie  jetzt hier ,
 Ich mag diese Mod , ich bitte dich - hilf mir mit meine kleine problem :  wenn ich -   austria -   bild name habe das zeigst  mir richtig Wikipedia info , aber -    austria (99) , austria (98) - das macht nichts , Windows desktop system rename bilden in diese wege , ist das moglich (99) , (98) ignorieren ?
Sorry fur meine deutch aber ich sehe hier nur deutch so ich versuche  schlecht deutch schreiben
Wissen jemand  , ob ist das moglich fur kategorien  diese Mod auch benutzen oder kategorien name (nicht Bilde name ) im detail abnehmen ? For example alles bilden im Austria kategorie wurde Wikipedia Austria info haben , Danke Daniel
Title: Re: wikipedia artikel integrieren
Post by: rinaldos on June 05, 2009, 03:04:32 PM
@4ella,

use this
$image_name = preg_replace('#[,|(].*#',"",$image_name);

Everything after the ( will be ignored.

Gruß

Title: Re: wikipedia artikel integrieren
Post by: 4ella on June 05, 2009, 03:42:15 PM
Super Rinaldo thanks a lot , will try it immediately , Daniel
Title: Re: wikipedia artikel integrieren
Post by: 4ella on June 05, 2009, 03:58:24 PM
It works perfect -:) I'm really happy now , Thanks again , I think that you should put it in your code in your post or new thread in future because many users has picture names with numbers and  (,) , / etc .
Title: Re: wikipedia artikel integrieren
Post by: bergblume on June 05, 2009, 05:37:06 PM
hat jmd,. eine ahnung wie ich den titel eingeben muss damit z.b. höllental (wetterstein) (= http://de.wikipedia.org/wiki/H%C3%B6llental_(Wetterstein) (http://de.wikipedia.org/wiki/H%C3%B6llental_(Wetterstein)) )
angezeigt wird... wenn ich nur höllental eingebe - wird mir unschön das hier ausgegeben: "Höllental steht für:..." (bezieht sich ja auf diese seite:_ http://de.wikipedia.org/wiki/H%C3%B6llental )
wenn ich "höllental (wetterstein)" als bildname eingebe wird mir nix angezeigt.... wie muss ich die eingabe beim bildnamen machen, damit mir diese seite ausgegeben wird => http://de.wikipedia.org/wiki/H%C3%B6llental_(Wetterstein) (http://de.wikipedia.org/wiki/H%C3%B6llental_(Wetterstein)) ?
Title: Re: wikipedia artikel integrieren
Post by: rinaldos on June 05, 2009, 05:43:00 PM
Wie wäre es mit Höllentalklamm?


Title: Re: wikipedia artikel integrieren
Post by: bergblume on June 05, 2009, 07:00:34 PM
ok, da geht es alternativ mit höllentalklamm (war wohl ein unglückliches beispiel)...
aber wie macht man es z.B. hier? http://de.wikipedia.org/wiki/Jochberg_(Berg) [damit man direkt diesen inhalt erhält?)
Title: Re: wikipedia artikel integrieren
Post by: mawenzi on June 05, 2009, 07:17:55 PM
... Jochberg_(Berg) ... als Image_Name ... wird doch bestens als xml-Datei ausgegeben ...