CCK Media Field und GetID3

am 25.09.2008 - 18:03 Uhr in
Moin moin, Drupaler,
ich habe ein Problem, mit dem ich mich jetzt schon wieder 4 Tage rumärgere.
Ich benutze die Module MediaField und MediaFieldDisplay. Damit lassen sich pro Node auch meherer Audio-Dateien anhängen. Nur das die Player unmittelbar untereinander dargestellt werden. Ich möchte gern zwischen jedem Player noch einen Beschreibungzeile einfügen, oder den ID3-Tag des MP3s auslesen (würde auch gehen).
Ich habe auch schon das Modul GetID3 installiert. Aber irgendwie gibt es für dieses Drupalmodul keine Beschreibung. In eigenen Skripten habe ich GetID3 schon verwendet und weiss auch wies das funktioniert. Wie ich aber das gleichnamige Drupalmodul nute weiss ich nicht.
Vieleicht kann mir dabei jemand helfen.
- Anmelden oder Registrieren um Kommentare zu schreiben
Egal wie Du die Infos mit
am 25.09.2008 - 18:24 Uhr
Egal wie Du die Infos mit dem Modul GetID3 holst Du wirst wohl ein Nodetype-Template brauchen um diese Infos unter den Playern auszugeben. Und fuer die Infos sehe Dir mal den Modulcode an ob es da eine Funktion gibt die man ansprechen kann.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Okay, das mit dem
am 29.09.2008 - 10:19 Uhr
Okay, das mit dem Node-Template habe ich mir schon gedacht, ist auch kein Problem. Ich werde mir mal das Modul nach einer entsprechenden Funktion durchsuchen. Die Lösung des Problems poste ich dann hier auch gleich mal. Es gibt bestimmt noch ne menge Leute die das dann gern wissen würden.
--------
Active-Media-Production
Individual Web Development and Design
--------
Active-Media-Production
Individual Web Development and Design
CCK und GetID3
am 29.09.2008 - 23:39 Uhr
So ich habe mir einmal die ModulCore des Moduls GetID3 angesehen.
Für alle diejenigen, welche aus dem CCK-Audio-Field gern die ID3-Daten eines Audio-Files auslesen möchten habe ich hier die Lösung:
Als erstes habe ich das CCK Modul "Audio Field" aktiviert. Dieses Modul ist in dem Paket MediaField für CCK enthalten. Dann noch das Modul GetID3 installiert. Achtung für die korrekte Funktion des Moduls GetID3 muss noch eine weitere PHP-Klasse in dieses Modul installiert werden. Die ist aber in der ReadMe beschrieben, darum gehe ich da nicht näher drauf ein.
So nun zum eigentlichen Auslesen der ID3-Tags.
Hiefür habe ich mir nun einen neuen Content-Typ manes Audio angelegt und das CCK-Feld Audio-Field hinzugefügt. Damit man nun auch die ID3-Tags auslesen kann benötigt man einen entsprechendes Node-Typ-Template (node-audio.tpl.php) oder das Modul Contemplate. Ich habe beides probiert. Das Modul Contemplate kann man auf jeden Fall zur ermittlung der Themen-Variablen des Node-Typs verwenden. Ob man nun die Ausgabe über dieses Modul verändert oder ein eigenes Node-Typ-Template anlegt ist dabei jedem selber überlassen.
Variablen-Anzeige in Contemplate:
$node->field_audio (array)
$node->field_audio[0] (array)
$node->field_audio[0]['fid'] => 68
$node->field_audio[0]['sample_rate'] => (NULL)
$node->field_audio[0]['bitrate'] => (NULL)
$node->field_audio[0]['channel_mode'] => (NULL)
$node->field_audio[0]['playtime'] => (NULL)
$node->field_audio[0]['nid'] => 61
$node->field_audio[0]['filename'] => audiobeispiel.mp3
$node->field_audio[0]['filepath'] => files/audio/audiobeispiel.mp3
$node->field_audio[0]['filemime'] => audio/mpeg
$node->field_audio[0]['filesize'] => 307200
Da man die Möglichkeit hat mehrere Audio-Datein an einen Node zu hängen muss man am besten eine Foreach-Schleife verwenden. Mit der Funktion: audio_getid3_info(DATEINAME) können dann die ID3-werte ausgelesen werden. Alle Werte sind danach in einem Array enthalten.
Um nun auch rauszufinden welche Daten ich haben möchte und wie die entsprechenden Felder heissen, habe ich mir während der Erstellung eine Hilfsanzeige eingebaut. (Die ich später wieder entfernt habe) Hierbei wird das gesamte Array in Baumstruktur mit Werten angezeigt.
<pre><?php print_r ($mp3_info); ?></pre>
Der eigendliche Flashplayer wird von Drupal über folgenden Code bereitgestellt:
<?php print $item['view'] ?>
Der gesamte Quelltext für die Anzeige der Audioplayer sieht dann so aus:
<div class="field field-type-file-audio field-field-audio">
<h4 class="field-label">Audio-Beispiele</h4>
<div class="field-items">
<?php foreach ((array)$node->field_audio as $item) { ?>
<?php $mp3_info = audio_getid3_info($item['filepath']); ?>
<div class="field-item">
<div class="audio-name">Beispiel: <?php if (!empty($mp3_info['tags']['id3v1']['artist'][0])) print $mp3_info['tags']['id3v1']['artist'][0]." - "; print $mp3_info['tags']['id3v1']['title'][0]; ?></div>
<div class="audio-playtime">Playtime: <?php print $mp3_info['playtime']; ?>min</div>
<div class="audio-view"><?php print $item['view'] ?></div>
</div>
<?php } ?>
</div>
Es kann sein das ich beim reinkopieren ein
zu viel oder zu wenig kopiert habe.
Sollte jemand Fragen haben oder die Anleitung nicht vertändlich sein kann er mir jederzeit eine Nachricht schreiben.
--------
Active-Media-Production
Individual Web Development and Design
--------
Active-Media-Production
Individual Web Development and Design