Benutzer:Rene/PlayMP3
Beschreibung
PlayMP3 ermöglicht das Einbinden des EMFF Players. Mit diesem Flash Player ist es möglich MP3 Audiodateien so in Mediawiki Projekte einzubinden das die Dateien ohne externen Player abgespielt werden können.
Einsatz
Befehl
Um eine MP3 Datei abzuspielen wird das Tag <playmp3> benutzt.
<playmp3>ONeill,mp3,Sga_opening_s1.mp3</playmp3>
<playmp3>ONeill.mp3,Sga_opening_s1.mp3</playmp3>
Parameter
- autostart - Der Player startet automatisch mit der ersten Datei
- repeat - Der Player wiederholt die Dateien
- shuffle - Die Dateien werden in zufälliger Reihenfolge abgespielt
- skin="name" - Auswahl des Playersskins. Mögliche Werte:
- easy_glaze, easy_glaze_small,position_blue,old,old_noborder,lila,lila_info,silk_button,silk,wooden,stuttgart
<playmp3 skin="name" autostart repeat shuffle>datei1.mp3,datei2.mp3</playmp3>
Skins Übersicht
- easy_glaze <playmp3 skin="easy_glaze">Captain Samantha Carter.mp3</playmp3>
- easy_glaze_small <playmp3 skin="easy_glaze_small">Captain Samantha Carter.mp3</playmp3>
- position_blue <playmp3 skin="position_blue">Captain Samantha Carter.mp3</playmp3>
- old <playmp3 skin="old">Captain Samantha Carter.mp3</playmp3>
- old_noborder <playmp3 skin="old_noborder">Captain Samantha Carter.mp3</playmp3>
- lila <playmp3 skin="lila">Captain Samantha Carter.mp3</playmp3>
- lila_info <playmp3 skin="lila_info">Captain Samantha Carter.mp3</playmp3>
- silk <playmp3 skin="silk">Captain Samantha Carter.mp3</playmp3>
- silk_button <playmp3 skin="silk_button">Captain Samantha Carter.mp3</playmp3>
- Wird von der Vorlage:Aussprache benutzt
- wooden <playmp3 skin="wooden">Captain Samantha Carter.mp3</playmp3>
- stuttgart <playmp3 skin="stuttgart">Captain Samantha Carter.mp3</playmp3>
Anmerkungen
- Die Erweiterung bietet momentan den von EMFF angeboten Parameter groupname nicht. Alle Player werden automatisch der Gruppe sg zugeordnet, somit kann immer nur ein Player aktiv sein.
Probleme, Ideen
- Aktuell kann die Erweiterung nur eine einzelne Datei verarbeiten. Die nächste Version wird auch mehrere Dateien als Playliste verarbeiten (hoffentlich).
- Nicht alle möglichen Fehler werden behandelt. Nicht vorhandene Dateien werden einfach ignoriert.
- Variablen {{{1}}} werden nicht ersetzt. In Vorlagen sollte die Erweiterung daher so benutzt werden: {{#tag:playmp3|Datei|Parameter1|Parameter2...}}
- Probleme wenn </playmp3> fehlt
Copyright
Die Erweiterung unterliegt der GPL (Version 2). Das bedeutet der Einsatz in anderen MediaWikis ist erlaubt solange der Hinweis auf den Author und die GPL erhalten bleibt. Dazu genügt, in diesem Falle, bereits der von der Erweiterung selbst erzeugte Link auf der System Seite Spezial:Version. Natürlich kann die Erweiterung auch in anderen System benutzt werden, unter Beachtung der GPL.
Über einen kleinen Hinweis (auf der Diskussionsseite) in welchem Wiki die Erweiterung eingesetzt wird würde ich mich freuen, ist aber keine Pflicht.
Installation
Erweiterung
- Erzeuge ein neues Verzeichnis EMFF im extensions Verzeichnis.
- In dem neuen Verzeichnis den unten angegebenen Code in die Datei player.php speichern.
- An das Ende der Datei LocalSettings.php die folgende Zeile anfügen
require_once("$IP/extensions/EMFF/player.php");
EMFF
- Das aktuelle Paket des Players von der Homepage holen.
- Das Archiv entpacken und die *.swf Dateien aus dem Verzeichnis skins in das Verzeichnis der Erweiterung (extensions/EMFF) kopieren.
Code
<?php
if(!defined('MEDIAWIKI')) die();
/**
* player Extension by René Raule to embed a flash player with mp3-files
* http://www.stargate-wiki.de/index.php/Benutzer:Rene/PlayMP3
*
* This extension uses the Audio Player EMFF plugin from Marc Reicheltt
*
* http://emff.sourceforge.net
*
* Tag :
* <playmp3 skin="name" autostart repeat shuffle>mp3</playmp3>
*
* Example:
* <playmp3>music.mp3</playmp3>
*/
$wgExtensionFunctions[] = 'wfPlayMP3';
$wgExtensionCredits['parserhook'][] = array(
'name' => 'PlayMP3',
'description' => 'Plays mp3-files in an embedded Flash-player',
'author' => 'René Raule',
'url' => 'http://www.stargate-wiki.de/index.php/Benutzer:Rene/PlayMP3',
'version' => 'v0.2'
);
// Parameters
define("SKIN","silk_button");
define("EXPATH","/extensions/EMFF");
define("DEFPARA","&groupname=sg");
// Init
function wfPlayMP3() {
global $wgParser;
$wgParser->setHook('playmp3', 'renderPlayMP3');
}
// The callback function for converting the input text to HTML output
function renderPlayMP3($input, $args) {
global $wgScriptPath;
$player= array(
'easy_glaze'=>array('name'=>'emff_easy_glaze.swf','width'=>32,'height'=>32),
'easy_glaze_small'=>array('name'=>'emff_easy_glaze_small.swf','width'=>22,'height'=>22),
'position_blue'=>array('name'=>'emff_position_blue.swf','width'=>100,'height'=>50),
'old'=>array('name'=>'emff_old.swf','width'=>120,'height'=>55),
'old_noborder'=>array('name'=>'emff_old_noborder.swf','width'=>91,'height'=>25),
'lila'=>array('name'=>'emff_lila.swf','width'=>200,'height'=>55),
'lila_info'=>array('name'=>'emff_lila_info.swf','width'=>200,'height'=>55),
'silk_button'=>array('name'=>'emff_silk_button.swf','width'=>16,'height'=>16),
'silk'=>array('name'=>'emff_silk.swf','width'=>84,'height'=>32),
'wooden'=>array('name'=>'emff_wooden.swf','width'=>120,'height'=>60),
'stuttgart'=>array('name'=>'emff_stuttgart.swf','width'=>140,'height'=>30)
);
$parameters = array('autostart'=>'autostart=yes','repeat'=>'repeat=yes','shuffle'=>'shuffle=yes');
$add = '&';
$file_path = $wgScriptPath.EXPATH;
$player_path = $wgScriptPath.EXPATH.'/';
$params = explode("|", htmlspecialchars($input));
$files = explode(",", array_shift($params));
// Create playlist if more then one file
if(count($files) > 1) {
// TODO: create playlist
$play_name = getMP3Title($files[0]);
} else {
$play_name = getMP3Title($files[0]);
}
// Use default skin if no skin defined
if(!isset($args['skin'])) {
$args['skin'] = SKIN;
}
// Use default skin if wrong skinname
if(!isset($player[$args['skin']])) {
$args['skin'] = SKIN;
}
// copy skin parameters
$player_name = $player[$args['skin']]['name'];
$player_width = $player[$args['skin']]['width'];
$player_height = $player[$args['skin']]['height'];
// player parameters
$player_para = DEFPARA;
foreach($parameters as $key => $value) {
if(isset($args[$key])) {
$player_para .= $add.$value;
}
}
// generate code
$output = '<object type="application/x-shockwave-flash" data="';
$output .= $player_path.$player_name.'" width="';
$output .= $player_width.'" height="';
$output .= $player_height.'">';
$output .= '<param name="movie" value="';
$output .= $player_path.$player_name.'" />';
$output .= '<param name="FlashVars" value="src=';
$output .= $play_name.$player_para.'" />';
$output .= "</object>\n";
return $output;
}
// Get Wiki URL - TODO: does not work with parametrs {{{}}}
function getMP3Title($file) {
if(!$title = Title::makeTitleSafe("Image",$file)) {
return '';
}
$img = new Image($title);
$path = $img->getViewURL(false);
return $path;
}