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
RevLine 
[16273]1<?php
[41228]2/**
3 * GetID3
4 * Gestion des métadonnées de fichiers sonores directement dans SPIP
5 *
6 * Auteurs :
[62451]7 * kent1 (http://www.kent1.info - kent1@arscenic.info), BoOz
8 * 2008-2012 - Distribué sous licence GNU/GPL
[41228]9 *
10 */
[16273]11
[62814]12if (!defined('_ECRIRE_INC_VERSION')) return;
[40521]13
[26266]14/**
15 * Récupère le contenu des tags id3 et des données audio d'un fichier
16 *
[37441]17 * Dans le cas où le fichier contient un ou plusieurs logo,
18 * ces fichiers sont écris dans le répertoire tmp/
19 *
[26266]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 */
[22746]25function inc_recuperer_id3_dist($fichier,$info=null,$mime=null){
[22743]26        include_spip('getid3/getid3');
[36432]27        $getID3 = new getID3;
[36860]28        $getID3->setOption(array('tempdir' => _DIR_TMP));
[23866]29
[22743]30        // Scan file - should parse correctly if file is not corrupted
[37441]31        $file_info = $getID3->analyze($fichier);
32        getid3_lib::CopyTagsToComments($file_info);
33        if(sizeof($file_info)>0){
[23904]34                // Cover art?
[37441]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'])) {
[51854]38                                        $imageinfo = array();
39                            $imagechunkcheck = getid3_lib::GetDataImageSize($file_info['id3v2']['APIC'][$cle]['data'],$imageinfo);
[40512]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;
[23905]48                                        }
[23904]49                                }
50                        }
51                }
[41247]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                }
[37441]66                if(isset($file_info['comments_html'])){
67                        foreach($file_info['comments_html'] as $cle=>$val){
[26266]68                                $id3[$cle] = array_pop($val);
[24065]69                        }
70                }
[41247]71                /**
72                 * Cas des flac et ogg (certainement)
73                 */
74                if(isset($id3['date']) && !isset($id3['year'])){
75                        $id3['year'] = $id3['date']; 
76                }
[37441]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']);
[26266]83                }
[37441]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']);
[26266]87                }
[37441]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'];
[22743]95        }
96        if(!$info){
97                return $id3;
98        }
99        else{
100                return $id3[$info];
101        }
[16273]102}
103?>
Note: See TracBrowser for help on using the repository browser.