Page 1 of 1
Mediendatenbank: Autoupdate nach FTP Upload
Posted: Fri Aug 03, 2007 7:17 pm
by blog.brockha.us
Wenn man per FTP Bilder in das Uploadverzeichnis schickt, so werden sie in der Mediendatenbank auch gleich angezeigt. Hier zieht ein automatischer Abgleich an, der neue Bilder in die DB einpflegt.
Das funktioniert aber nur mit Bildern, Filme und andere Dateien werden offenbar so nicht behandelt. An welcher Schraube muss ich wo drehen, damit das funktioniert?
Re: Mediendatenbank: Autoupdate nach FTP Upload
Posted: Sat Aug 04, 2007 1:16 pm
by garvinhicking
Hi!
include/functions_images.inc.php, suche nach ## SYNCH START ##
Rein grundsätzlich hätte das eigentlich funktionieren sollen, müsste da den Code auch erst nochmal wälzen
Grüße,
Garvin
Posted: Sat Aug 04, 2007 1:21 pm
by blog.brockha.us
Danke, ich schau mal rein. Soll die Änderung dann auch in die 1.2?
Posted: Sat Aug 04, 2007 2:41 pm
by garvinhicking
Hi!
Das kommt drauf an, wie "komplex" der Bug ist. Wenn Du's rausgefunden hast können wir das ja diskutieren?
Viele Grüße,
Garvin
Posted: Tue Aug 07, 2007 3:12 pm
by blog.brockha.us
Wenn ich "Vorschau erneuern" manuell aufrufe, dann erscheinen die Filme übrigens in der Mediendatenbank, aber eben nicht -wie Bilder- automatisch beim öffnen des Verzeichnisses. Kann das an irgendeiner Einstellung liegen? Ich habe die Erinnerung, dass man da ein Recht für den Benutzer konfigurieren kann.
Außerdem ist mir dabei ein weiteres Problem aufgefallen. Wenn ich einen Film per FTP umbenenne, dann kann ich den alten Eintrag nicht über die Mediendatenbank löschen. Wahrscheinlich versucht die MDB die Datei zu löschen ohne zu prüfen, ob sie noch vorhanden ist und bekommt dann einen ungefangenen Error.
Posted: Tue Aug 07, 2007 3:43 pm
by garvinhicking
Hi!
Was heißt denn "Öffnen des Verzeichnisses"?
Außerdem ist mir dabei ein weiteres Problem aufgefallen. Wenn ich einen Film per FTP umbenenne, dann kann ich den alten Eintrag nicht über die Mediendatenbank löschen. Wahrscheinlich versucht die MDB die Datei zu löschen ohne zu prüfen, ob sie noch vorhanden ist und bekommt dann einen ungefangenen Error.
Wenn du die automatische synchronisation aktiviert hast, dann müsste s9y eigentlich den neuen film finden, den aufnehmen und dann den alten, nicht mehr existierenden, aus der datenbank entfernen?
Grüße,
Garvin
Posted: Tue Aug 07, 2007 3:50 pm
by blog.brockha.us
Dass das nur für Bilder und nicht für Videos (und alles anderen Dateitypen) funktioniert, liegt daran, dass im Autoupdate überprüft wird, ob es ein Image ist (anhand Mime-Type image/*). Man müsste hier also offenbar "anbauen" mit einer serendipity_isMedia Methode. Dabei würde ich eigentlich schon gerne einbauen, dass getid3 benutzt wird, wenn es unter den bundled-libs erkannt wurde. Aber vorher kann man noch eine einfach Methode einbauen, die einfach Endungen zu Mime-Types setzt, was ja teilweise schon implementiert ist.
Posted: Tue Aug 07, 2007 4:01 pm
by garvinhicking
Hi!
Hm, es kann sein dass das damals auf 'image' gefixt wurde, weil sonst MB-große .ZIP Dateien analysiert würden? Ich meine das hatte damit was zu tun.
Wir können in den Core-Code leider keine GetID3-API-Methoden einbauen, da dass aus lizenzgründen nicht geht!
Grüße,
Garvin
Posted: Tue Aug 07, 2007 4:09 pm
by blog.brockha.us
Also ich habe nun folgenden Code
Code: Select all
// MTG: 21/01/06: put files which have just 'turned up' into the database
$aImageData = serendipity_getImageData($sFile);
if (serendipity_isImage($aImageData)) {
durch folgendes ersetzt:
Code: Select all
// MTG: 21/01/06: put files which have just 'turned up' into the database
$aImageData = serendipity_getImageData($sFile);
if (serendipity_isMedia($aImageData)) {
Mit einer passenden isMedia Methode natürlich, die auf MimeType image, audio und video checkt. Damit sind ZIP files auf jeden Fall draußen. Das scheint schon ganz gut zu klappen bei Dateiendungen, die von s9y bereits erkannt werden. Meine 3gp Testdatei wurde nun automatisch hinzugefügt. Der Patch dazu ist ziemlich minimal, ich packe ihn mal in's SVN und Du kannst mal schauen, ob der auch in die 1.2 soll, wofür ich plädieren würde.
Was noch nicht klappt ist, dass Filme, die noch in der DB stehen aber nicht mehr auf der Platte vorhanden sind, automatisch gelöscht werden. Das muss an einer anderen Stelle im Code passieren, ich schaue mal, ob ich es finde.
Zur getid3 Einbindung: Dann muss ich das wohl so bauen, dass ein Event aufgerufen wird, der den Filenamen und das File Array übergibt und externe Plugins können dann geeignet das Array füllen. Gibt es so einen Event schon? Es würde sich dann natürlich das getid3 Plugin anbieten, diesen Event abzufangen und die Daten entsprechend aufzubereiten.
Posted: Tue Aug 07, 2007 4:14 pm
by garvinhicking
Hi!
Für den Patch würde ich eher eine Modification vorschlagen:
statt serendipity_isImage($file, $strict = false) ein
serendipity_isImage($file, $strict = false, $allowed='image/');
und darunter dannein preg_match('@'^' . $allowed . '@i', $file['displaymime).
Dann kann man ohne neue funktion beliebige mimetypes matchen.
Zur getid3 Einbindung: Dann muss ich das wohl so bauen, dass ein Event aufgerufen wird, der den Filenamen und das File Array übergibt und externe Plugins können dann geeignet das Array füllen. Gibt es so einen Event schon? Es würde sich dann natürlich das getid3 Plugin anbieten, diesen Event abzufangen und die Daten entsprechend aufzubereiten.
Das Problem ist, dass die 'guessMime' Funktion halt doch recht performanceintensiv sein kann, und getid3 immer die dateien binär einliest. ich würde ungerne das (relativ 'teure') plugin API system in diese funktion übernehmen, solange es nicht einen ganz wichtigen grund gibt die getid3-bibliothek für mime-erkennuing zu nutzen?
Grüße,
Garvin
Posted: Tue Aug 07, 2007 4:44 pm
by blog.brockha.us
Habe ich entsprechend eingebaut.
Für getid3 spricht, dass man die mime-type Erkennung nicht hard codiert über Zuweisung (Endung -> mime-type) machen muss. Wenn Endungen fehlen oder Dateien die falsche Endungen haben, könnte es eben Probleme geben. Was passiert, wenn ich eine Textdatei in das Upload Verzeichnis lege und dort eine gif Extension gebe? Hmm: Bei einem Test schmiert die DB immerhin nicht ab, was schon mal gut ist.
edit:
Oh Mann! Ich weiß jetzt, warum auf Platte nicht mehr vorhanden Dateien bei mir nicht in der DB gelöscht wurden: Der Benutzer hatte schlicht nicht das Recht, dies zu tun!

Somit scheint das nun gut zu funktionieren, ich plädiere für einen Merge nach 1.2

Posted: Wed Aug 08, 2007 11:10 am
by garvinhicking
Hi!
Für getid3 spricht, dass man die mime-type Erkennung nicht hard codiert über Zuweisung (Endung -> mime-type) machen muss. Wenn Endungen fehlen oder Dateien die falsche Endungen haben, könnte es eben Probleme geben. Was passiert, wenn ich eine Textdatei in das Upload Verzeichnis lege und dort eine gif Extension gebe? Hmm: Bei einem Test schmiert die DB immerhin nicht ab, was schon mal gut ist.
Aber Mime-Erkennung kann doch auch PHPs
http://de3.php.net/manual/de/function.getimagesize.php schon, oder?
Grüße,
Garvin
Posted: Wed Aug 08, 2007 2:01 pm
by blog.brockha.us
Na klar, aber eben nur für Bilder (und auch nicht alle). Es versagt schon bei Icons. Ich würde eben gerne auch noch andere Dateien in meiner Mediendatenbank haben: Filme vor allem, weil ich ja gerade am Podcasting Plugin sitze.
Posted: Wed Aug 08, 2007 3:14 pm
by garvinhicking
Hi!
Hm, also die getimagesize() Mimeerkennung funktioniert bei mir eigentlich schon relativ gut. Hast Du konkrete Dateien zur Hand, bei denen es nicht geht?
Icons in der Mediendatenbank sind ja eher recht selten. Videos sind anhand der Dateiendung aber ja meist recht einfach zu erkennnen...?
Grüße,
Garvin
Posted: Fri Aug 10, 2007 4:56 pm
by blog.brockha.us
Du hast recht: Bei mir geht es bisher auch gut ohne die getid3 Lib. Somit benötigt man die hier offenbar nicht. Man bekommt nur Probleme, wenn man Filme mit Erweiterungen ablegt, die der auto_guess Methode noch nicht bekannt sind. Dann muss man immer selbige patchen. Ist bei mir aber bisher noch nicht vorgekommen, nachdem ich dort auch mp4 (für die 1.3) eingebunden habe.