source: spip-zone/_plugins_/getID3/trunk/inc/recuperer_id3.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 * Récupère le contenu des tags id3 et des données audio d'un fichier
16 *
17 * Dans le cas où le fichier contient un ou plusieurs logo,
18 * ces fichiers sont écris dans le répertoire tmp/
19 *
20 * @param string $fichier
21 * @param string $info
22 * @param string $mime
23 * @return array Le contenu complet des tags id3 et des données audio
24 */
25function inc_recuperer_id3_dist($fichier,$info=null,$mime=null){
26        include_spip('getid3/getid3');
27        $getID3 = new getID3;
28        $getID3->setOption(array('tempdir' => _DIR_TMP));
29
30        // Scan file - should parse correctly if file is not corrupted
31        $file_info = $getID3->analyze($fichier);
32        getid3_lib::CopyTagsToComments($file_info);
33        if(sizeof($file_info)>0){
34                // Cover art?
35                if(isset($file_info['id3v2']['APIC'])){
36                        foreach($file_info['id3v2']['APIC'] as $cle=>$val){
37                                if (isset($file_info['id3v2']['APIC'][$cle]['data']) && isset($file_info['id3v2']['APIC'][$cle]['image_mime']) && isset($file_info['id3v2']['APIC'][$cle]['dataoffset'])) {
38                                        $imageinfo = array();
39                            $imagechunkcheck = getid3_lib::GetDataImageSize($file_info['id3v2']['APIC'][$cle]['data'],$imageinfo);
40                            $extension = getid3_lib::ImageTypesLookup($imagechunkcheck[2]);
41                            if($extension == 'jpeg')
42                                $extension = 'jpg';
43                            $tmp_file = 'getid3-'.$file_info['id3v2']['APIC'][$cle]['dataoffset'].'.'.$extension;
44                            $dest = sous_repertoire(_DIR_VAR, 'cache-getid3');
45                                        $dest = $dest.$tmp_file;
46                                        if ($ok = ecrire_fichier($dest, $file_info['id3v2']['APIC'][$cle]['data'])) {
47                                                $id3['cover'.$cle] = $dest;
48                                        }
49                                }
50                        }
51                }
52                if(isset($file_info['flac']['APIC'])){
53                        if (isset($file_info['flac']['APIC']['data']) && isset($file_info['flac']['APIC']['image_mime'])) {
54                                spip_log($file_info['flac']['APIC']['image_mime'],'getid3');
55                    $extension = strtolower($file_info['flac']['APIC']['extension']);
56                    if($extension == 'jpeg')
57                        $extension = 'jpg';
58                    $tmp_file = 'getid3-'.md5($file_info['filename'].$file_info['filesize']).'.'.$extension;
59                    $dest = sous_repertoire(_DIR_VAR, 'cache-getid3');
60                                $dest = $dest.$tmp_file;
61                                if ($ok = ecrire_fichier($dest, $file_info['flac']['APIC']['data'])) {
62                                        $id3['cover'.$cle] = $dest;
63                                }
64                        }
65                }
66                if(isset($file_info['comments_html'])){
67                        foreach($file_info['comments_html'] as $cle=>$val){
68                                $id3[$cle] = array_pop($val);
69                        }
70                }
71                /**
72                 * Cas des flac et ogg (certainement)
73                 */
74                if(isset($id3['date']) && !isset($id3['year'])){
75                        $id3['year'] = $id3['date']; 
76                }
77                $id3['format'] = $file_info['audio']['dataformat'];
78                $id3['lossless'] = $file_info['audio']['lossless'];
79                $id3['audiosamplerate'] = $file_info['audio']['sample_rate'] ;
80                $id3['bits'] = $file_info['audio']['bits_per_sample'];
81                if(is_array($file_info['tags']['id3v2']['track'])){
82                        $id3['track'] = array_pop($file_info['tags']['id3v2']['track']);
83                }
84                $id3['codec'] = ($file_info['audio']['encoder']) ? $file_info['audio']['encoder'] : $file_info['audio']['codec'];
85                if(is_array($file_info['tags']['id3v2']['totaltracks'])){
86                        $id3['totaltracks'] = array_pop($file_info['tags']['id3v2']['totaltracks']);
87                }
88                $id3['bitrate'] = $file_info['audio']['bitrate'];
89                $id3['bitrate_mode'] = $file_info['audio']['bitrate_mode'];
90                $id3['duree_secondes'] = $file_info['playtime_seconds'];
91                $id3['duree'] = $file_info['playtime_string'];
92                $id3['channels'] = $file_info['audio']['channels'];
93                $id3['channel_mode'] = $file_info['audio']['channelmode'];
94                $id3['mime'] = $file_info['mime_type'];
95        }
96        if(!$info){
97                return $id3;
98        }
99        else{
100                return $id3[$info];
101        }
102}
103?>
Note: See TracBrowser for help on using the repository browser.