diff --git a/.gitattributes b/.gitattributes index b83a29e3edaabc872f6c981ee18edd5f800fdb57..e700efe44f6376949f40fb48f5d53cd9dd5d89dd 100644 --- a/.gitattributes +++ b/.gitattributes @@ -257,6 +257,7 @@ lib/mejs/renderers/vimeo.min.js -text /medias_fonctions.php -text /medias_ieconfig.php -text /medias_pipelines.php -text +metadata/audio.php -text metadata/html.php -text metadata/image.php -text metadata/svg.php -text diff --git a/base/medias.php b/base/medias.php index 8ac1626d9e2a9ac07e738ff3f322e88430dbc0cc..48c628af87e1cd554732ebc5380bc6330573458c 100644 --- a/base/medias.php +++ b/base/medias.php @@ -148,6 +148,7 @@ function medias_declarer_tables_objets_sql($tables) { 'taille' => 'bigint', 'largeur' => 'integer', 'hauteur' => 'integer', + 'duree' => 'integer', 'media' => "varchar(10) DEFAULT 'file' NOT NULL", 'mode' => "varchar(10) DEFAULT 'document' NOT NULL", 'distant' => "VARCHAR(3) DEFAULT 'non'", @@ -190,6 +191,7 @@ function medias_declarer_tables_objets_sql($tables) { 'taille', 'largeur', 'hauteur', + 'duree', 'mode', 'credits', 'fichier', @@ -202,12 +204,13 @@ function medias_declarer_tables_objets_sql($tables) { 'id_vignette', 'titre', 'descriptif', - 'hauteur', - 'largeur', - 'fichier', 'taille', + 'largeur', + 'hauteur', + 'duree', 'mode', 'credits', + 'fichier', 'distant' ), 'modeles' => array('document', 'doc', 'img', 'emb', 'image', 'video', 'text', 'audio', 'application'), diff --git a/medias_administrations.php b/medias_administrations.php index 093e3594286102a2f0b32f0e7982a9c45250ce6b..d7dba546ea0d192b5b4b5141075ea7299a6fe384 100644 --- a/medias_administrations.php +++ b/medias_administrations.php @@ -186,6 +186,10 @@ function medias_upgrade($nom_meta_base_version, $version_cible) { array('medias_maj_date_publication_documents'), array('medias_check_statuts', true) ); + $maj['1.3.5'] = array( + // ajout de duree + array('maj_tables', 'spip_documents'), + ); include_spip('base/upgrade'); include_spip('base/medias'); maj_plugin($nom_meta_base_version, $version_cible, $maj); diff --git a/metadata/audio.php b/metadata/audio.php new file mode 100644 index 0000000000000000000000000000000000000000..3553f3f6cc377f1520ce6a93e4edbd054bb517fc --- /dev/null +++ b/metadata/audio.php @@ -0,0 +1,54 @@ +<?php +/** + * GetID3 + * Gestion des métadonnées de fichiers sonores et vidéos directement dans SPIP + * + * Auteurs : + * kent1 (http://www.kent1.info - kent1@arscenic.info), BoOz + * 2008-2016 - Distribué sous licence GNU/GPL + * + * @package SPIP\GetID3\Metadatas + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +/** + * Fonction de récupération des métadonnées sur les fichiers audio + * appelée à l'insertion en base dans le plugin medias (inc/renseigner_document) + * + * @param string $file + * Le chemin du fichier à analyser + * @return array $metas + * Le tableau comprenant les différentes metas à mettre en base + */ +function metadata_audio($file) { + $meta = array(); + + include_spip('lib/getid3/getid3'); + $getID3 = new getID3; + $getID3->setOption(array('tempdir' => _DIR_TMP)); + + // Scan file - should parse correctly if file is not corrupted + $file_info = $getID3->analyze($file); + + header('Content-Type: text/plain'); + if (isset($file_info['id3v2']['comments']['title'])) { + $meta['titre'] = ucfirst(trim(implode(' ',$file_info['id3v2']['comments']['title']))); + } + if (isset($file_info['id3v2']['comments']['artist'])) { + $meta['credits'] = implode(', ',$file_info['id3v2']['comments']['artist']); + if (isset($file_info['id3v2']['comments']['album'])) { + $meta['credits'] .= '/'.trim(implode(' ',$file_info['id3v2']['comments']['album'])); + } + if (isset($file_info['id3v2']['comments']['year'])) { + $meta['credits'] .= ' ('.trim(implode(' ',$file_info['id3v2']['comments']['year'])).')'; + } + } + if (isset($file_info['playtime_seconds'])) { + $meta['duree'] = round($file_info['playtime_seconds'], 0); + } + + return $meta; +} diff --git a/paquet.xml b/paquet.xml index 0bdeea82c36396fbde8ecaba0bdaf76cec47940e..c49f0ae0281aa00bb4f20738752661d9fab75491 100644 --- a/paquet.xml +++ b/paquet.xml @@ -5,7 +5,7 @@ etat="stable" compatibilite="[3.2.0-dev;3.2.*]" logo="prive/themes/spip/images/portfolio-32.png" - schema="1.3.4" + schema="1.3.5" > <nom>Medias</nom>