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

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

La récupération des infos refonctionne

File size: 4.2 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        spip_log($covers,'getid3');
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/joindre_document');
72                        $ajouter_documents = charger_fonction('ajouter_documents', 'action');
73
74                        list($extension,$arg) = fixer_extension_document($covers[0]);
75                        $cover_ajout = array(array('tmp_name'=>$covers[0],'name'=> basename($covers[0])));
76                        spip_log('on ajoute la cover','getid3');
77                        spip_log($cover_ajout,'getid3');
78                        $ajoute = $ajouter_documents($id_vignette,$cover_ajout,'',0,'vignette');
79
80                        if (is_numeric(reset($ajoute))
81                          AND $id_vignette = reset($ajoute)){
82                                include_spip('action/editer_document');
83                                document_modifier($id_document,array("id_vignette" => $id_vignette,'mode'=>'document'));
84                                recuperer_id3_doc($id_document);
85                        }
86                }
87        }else if(strlen($cover_defaut = lire_config('getid3/cover_defaut','')) > 1){
88                /**
89                 * Si on n'a pas de cover,
90                 * On ajoute la cover par défaut si elle existe comme vignette de document et
91                 * comme cover du fichier
92                 */
93                $id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document));
94       
95                if(($id_vignette == 0)){
96                        include_spip('inc/joindre_document');
97                        include_spip('inc/distant');
98                        $cover_defaut = find_in_path(copie_locale($cover_defaut));
99                        $ajouter_documents = charger_fonction('ajouter_documents', 'action');
100
101                        list($extension,$arg) = fixer_extension_document($cover_defaut);
102                        $cover_defaut = array(array('tmp_name'=>$cover_defaut,'name'=> basename($cover_defaut)));
103                        $ajoute = $ajouter_documents($id_vignette,$cover_defaut,'',0,'vignette');
104
105                        if (is_numeric(reset($ajoute))
106                          AND $id_vignette = reset($ajoute)){
107                                include_spip('action/editer_document');
108                                document_modifier($id_document,array("id_vignette" => $id_vignette,'mode'=>'document'));
109                        }
110                }
111        }
112        sql_updateq('spip_documents',
113                array(
114                        'titre'=>filtrer_entites($document['titre']),
115                        'descriptif'=>filtrer_entites($document['descriptif']),
116                        'duree'=> $id3['duree_secondes'],
117                        'bitrate' => $id3['bitrate'],
118                        'bitrate_mode'=>$id3['bitrate_mode'],
119                        'audiosamplerate'=>$id3['audiosamplerate'],
120                        'encodeur'=>$id3['codec'],
121                        'bits'=>$id3['bits'],
122                        'canaux' => $id3['channels']
123                ),
124                'id_document='.intval($id_document));
125        spip_log($id3,'getid3');
126        return $id3;
127}
128?>
Note: See TracBrowser for help on using the repository browser.