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

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

Une chaine de langue manquante

Moins de logs

De simples quotas au lieu de doubles, il parait que c'est plus rapide

File size: 3.8 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       
25        include_spip('action/editer_document');
26        include_spip('inc/documents');
27        include_spip('inc/filtres');
28        $document = sql_fetsel("*", "spip_documents","id_document=".intval($id_document));
29        $son_chemin = get_spip_doc($document['fichier']);
30
31        $recuperer_id3 = charger_fonction('recuperer_id3','inc');
32        $id3 = $recuperer_id3($son_chemin);
33
34        /**
35         * On remplit les champs de base de SPIP avec ce dont on dispose
36         *
37         * -* titre
38         * -* descriptif
39         */
40        if($document['titre'] == ''){
41                $document['titre'] = preg_replace('/_/',' ',utf8_encode($id3['title']));
42        }
43        if($document['titre'] == ''){
44                $titre = strtolower(array_shift(explode('.',basename($document['fichier']))));
45                $titre = utf8_encode($titre);
46                $document['titre'] = preg_replace('/_/',' ',$titre);
47        }
48
49        if(($document['descriptif'] == '') && $id3['comments']){
50                /**
51                 * Ne pas prendre les comments foireux d'itunes
52                 */
53                if(!preg_match('/0000[a-b|0-9]{4}/',$id3['comments']))
54                        $document['descriptif'] = utf8_encode($id3['comments']);
55        }
56
57        /**
58         * Les covers potentielles
59         * On ne tente de récupération de vignettes que lorsque l'on n'a pas de vignettes
60         * associée au document
61         * On ne met en vignette de document que la première que l'on trouve
62         */
63        foreach($id3 as $key=>$val){
64                if(preg_match('/cover/',$key)){
65                        $covers[] = $val;
66                }
67        }
68
69        /**
70         * Les valeurs que l'on mettra en base à la fin
71         */
72        $valeurs = array(
73                        'titre'=>filtrer_entites($document['titre']),
74                        'descriptif'=>filtrer_entites($document['descriptif']),
75                        'duree'=> $id3['duree_secondes'],
76                        'bitrate' => $id3['bitrate'],
77                        'bitrate_mode'=>$id3['bitrate_mode'],
78                        'audiosamplerate'=>$id3['audiosamplerate'],
79                        'encodeur'=>$id3['codec'],
80                        'bits'=>$id3['bits'],
81                        'canaux' => $id3['channels']
82                );
83
84        if(count($covers) > 0){
85                $id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document));
86
87                if(($id_vignette == 0)){
88                        include_spip('inc/joindre_document');
89                        $ajouter_documents = charger_fonction('ajouter_documents', 'action');
90
91                        list($extension,$arg) = fixer_extension_document($covers[0]);
92                        $cover_ajout = array(array('tmp_name'=>$covers[0],'name'=> basename($covers[0])));
93                        $ajoute = $ajouter_documents('new',$cover_ajout,'',0,'vignette');
94
95                        if (is_numeric(reset($ajoute))
96                          AND $id_vignette = reset($ajoute)){
97                                $valeurs['id_vignette'] = $id_vignette;
98                        }
99                }
100        }else if(strlen($cover_defaut = lire_config('getid3/cover_defaut','')) > 1){
101                /**
102                 * Si on n'a pas de cover,
103                 * On ajoute la cover par défaut si elle existe comme vignette de document et
104                 * comme cover du fichier
105                 */
106                $id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document));
107       
108                if(($id_vignette == 0)){
109                        include_spip('inc/joindre_document');
110                        include_spip('inc/distant');
111                        $cover_defaut = find_in_path(copie_locale($cover_defaut));
112                        $ajouter_documents = charger_fonction('ajouter_documents', 'action');
113
114                        list($extension,$arg) = fixer_extension_document($cover_defaut);
115                        $cover_defaut = array(array('tmp_name'=>$cover_defaut,'name'=> basename($cover_defaut)));
116                        $ajoute = $ajouter_documents($id_vignette,$cover_defaut,'',0,'vignette');
117
118                        if (is_numeric(reset($ajoute))
119                          AND $id_vignette = reset($ajoute)){
120                                $valeurs['id_vignette'] = $id_vignette;
121                        }
122                }
123        }
124       
125        document_modifier($id_document,$valeurs);
126
127        return $id3;
128}
129?>
Note: See TracBrowser for help on using the repository browser.