source: spip-zone/_plugins_/getID3/trunk/inc/getid3_recuperer_infos.php @ 62451

Last change on this file since 62451 was 62451, checked in by kent1@…, 7 years ago

Premier tour de compatibilité SPIP 3.0 :

-* paquet.xml et ses fichiers de langue
-* getid3_administrations
-* on met à jour les entêtes de fichier PHP

File size: 3.6 KB
Line 
1<?php
2/**
3 * GetID3
4 * Gestion des métadonnées de fichiers sonores directement dans SPIP
5 *
6 * Auteurs :
7 * kent1 (http://www.kent1.info - kent1@arscenic.info), BoOz
8 * 2008-2012 - Distribué sous licence GNU/GPL
9 *
10 */
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14/**
15 * Enregistrement en base le contenu des données des tags et des données audio
16 *
17 * @param int $id_document
18 */
19
20function inc_getid3_recuperer_infos($id_document){
21        if(!intval($id_document)){
22                return;
23        }
24        include_spip('inc/documents');
25        include_spip('inc/filtres');
26        $document = sql_fetsel("docs.id_document,docs.titre,docs.extension,docs.fichier,docs.taille,docs.mode", "spip_documents AS docs INNER JOIN spip_documents_liens AS L ON L.id_document=docs.id_document","L.id_document=".intval($id_document));
27        $son_chemin = get_spip_doc($document['fichier']);
28
29        $recuperer_id3 = charger_fonction('recuperer_id3','inc');
30        $id3 = $recuperer_id3($son_chemin);
31
32        /**
33         * On remplit les champs de base de SPIP avec ce dont on dispose
34         *
35         * -* titre
36         * -* descriptif
37         */
38        if($document['titre'] == ''){
39                $document['titre'] = preg_replace('/_/',' ',utf8_encode($id3['title']));
40        }
41        if($document['titre'] == ''){
42                $titre = strtolower(array_shift(explode('.',basename($document['fichier']))));
43                $titre = utf8_encode($titre);
44                $document['titre'] = preg_replace('/_/',' ',$titre);
45        }
46
47        if(($document['descriptif'] == '') && $id3['comments']){
48                /**
49                 * Ne pas prendre les comments foireux d'itunes
50                 */
51                if(!preg_match('/0000[a-b|0-9]{4}/',$id3['comments']))
52                        $document['descriptif'] = utf8_encode($id3['comments']);
53        }
54
55        /**
56         * Les covers potentielles
57         * On ne tente de récupération de vignettes que lorsque l'on n'a pas de vignettes
58         * associée au document
59         * On ne met en vignette de document que la première que l'on trouve
60         */
61        foreach($id3 as $key=>$val){
62                if(preg_match('/cover/',$key)){
63                        $covers[] = $val;
64                }
65        }
66
67        if(count($covers) > 0){
68                $id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document));
69
70                if(($id_vignette == 0)){
71                        include_spip('inc/documents');
72                        $ajouter_documents = charger_fonction('ajouter_documents', 'inc');
73
74                        list($extension,$arg) = fixer_extension_document($covers[0]);
75                        $x = $ajouter_documents($covers[0], $covers[0],
76                                            $type, $id, 'vignette', $id_document, $actifs);
77                }
78                /**
79                 * On supprime les covers temporaires
80                 */
81                foreach($covers as $fichier){
82                        supprimer_fichier($fichier);
83                }
84        }else if(strlen($cover_defaut = lire_config('getid3/cover_defaut','')) > 1){
85                /**
86                 * Si on n'a pas de cover,
87                 * On ajoute la cover par défaut si elle existe comme vignette de document et
88                 * comme cover du fichier
89                 */
90                $id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document));
91       
92                if(($id_vignette == 0)){
93                        include_spip('inc/documents');
94                        include_spip('inc/distant');
95                        $cover_defaut = find_in_path(copie_locale($cover_defaut));
96                        $ajouter_documents = charger_fonction('ajouter_documents', 'inc');
97
98                        list($extension,$arg) = fixer_extension_document($cover_defaut);
99                        $x = $ajouter_documents($cover_defaut, $cover_defaut,
100                                            $type, $id, 'vignette', $id_document, $actifs);
101                }
102        }
103        sql_updateq('spip_documents',
104                array(
105                        'titre'=>filtrer_entites($document['titre']),
106                        'descriptif'=>filtrer_entites($document['descriptif']),
107                        'duree'=> $id3['duree_secondes'],
108                        'bitrate' => $id3['bitrate'],
109                        'bitrate_mode'=>$id3['bitrate_mode'],
110                        'audiosamplerate'=>$id3['audiosamplerate'],
111                        'encodeur'=>$id3['codec'],
112                        'bits'=>$id3['bits'],
113                        'canaux' => $id3['channels']
114                ),
115                'id_document='.intval($id_document));
116
117        return $id3;
118}
119?>
Note: See TracBrowser for help on using the repository browser.