| 103 | | $splFileObject = $this->getLastFile()->openFile(); |
| 104 | | |
| 105 | | $points = $this->getSeekPointsLatestOfFile($splFileObject); |
| 106 | | $splFileObject->seek($points['start']); |
| 107 | | |
| 108 | | $disc = array(); |
| 109 | | $disc['discid'] = trim(preg_replace('/^DISCID=(.*)(\s)$/i', '$1', $splFileObject->current())); |
| 110 | | list($disc['dartist'], $disc['dtitle']) = explode(' / ', $splFileObject->fgets(), 2); |
| 111 | | $disc['dtitle'] = trim($disc['dtitle']); |
| 112 | | $disc['dartist'] = ltrim($disc['dartist'], 'DTITLE='); |
| 113 | | $disc['dyear'] = rtrim(ltrim($splFileObject->fgets(), 'DYEAR=')); |
| 114 | | $disc['dgenre'] = rtrim(ltrim($splFileObject->fgets(), 'DGENRE=')); |
| 115 | | |
| 116 | | do { |
| 117 | | $title = preg_replace('/^TTITLE(\d*)=(.*)(\s)$/', '$2', $splFileObject->fgets()); |
| 118 | | |
| 119 | | //if (preg_match('/^EXTD=/s', $title)) break; |
| 120 | | if ($splFileObject->key() > $points['end']) break; |
| 121 | | $disc['tracks'][] = trim($title); |
| 122 | | } while ($splFileObject->valid()); |
| | 106 | $lastFile = $this->getLastFile()->openFile(); |
| | 107 | |
| | 108 | if ($style == 'Net_CDDB_Disc') { |
| | 109 | $points = $this->getSeekPointsLatestOfFile($lastFile, '#FILENAME', 'PLAYORDER'); |
| | 110 | //oops! FILENAME not defined Net_CDDB_Utilities, so I plus 1 for start point. |
| | 111 | $discStr = implode('', array_slice(file($lastFile), $points['start'] +1, $points['end'])); |
| | 112 | |
| | 113 | require_once 'Net/CDDB/Utilities.php'; |
| | 114 | $ncu = new Net_CDDB_Utilities(); |
| | 115 | $parse = $ncu->parseRecord($discStr); |
| | 116 | require_once 'Net/CDDB/Disc.php'; |
| | 117 | $disc = new Net_CDDB_Disc($parse); |
| | 118 | } else { |
| | 119 | $points = $this->getSeekPointsLatestOfFile($lastFile, 'DISCID'); |
| | 120 | $lastFile->seek($points['start']); |
| | 121 | |
| | 122 | $disc = array(); |
| | 123 | $disc['discid'] = trim(preg_replace('/^DISCID=(.*)(\s)$/i', '$1', $lastFile->current())); |
| | 124 | list($disc['dartist'], $disc['dtitle']) = explode(' / ', $lastFile->fgets(), 2); |
| | 125 | $disc['dtitle'] = trim($disc['dtitle']); |
| | 126 | $disc['dartist'] = ltrim($disc['dartist'], 'DTITLE='); |
| | 127 | $disc['dyear'] = rtrim(ltrim($lastFile->fgets(), 'DYEAR=')); |
| | 128 | $disc['dgenre'] = rtrim(ltrim($lastFile->fgets(), 'DGENRE=')); |
| | 129 | |
| | 130 | do { |
| | 131 | $title = preg_replace('/^TTITLE(\d*)=(.*)(\s)$/', '$2', $lastFile->fgets()); |
| | 132 | |
| | 133 | //if (preg_match('/^EXTD=/s', $title)) break; |
| | 134 | if ($lastFile->key() > $points['end']) break; |
| | 135 | $disc['tracks'][] = trim($title); |
| | 136 | } while ($lastFile->valid()); |
| | 137 | } |
| | 138 | |
| | 139 | //$disc = mb_convert_variables() |
| 181 | | public function getRewriteStr($rewritefile, $points, $discArray) |
| 182 | | { |
| 183 | | $fileArray = file($rewritefile); |
| 184 | | |
| 185 | | $rewriteStr = implode('', array_slice($fileArray, 0, $points['start'])); |
| 186 | | $rewriteStr .= 'DTITLE='.$discArray['dartist'].' / '.$discArray['dtitle'].PHP_EOL. |
| 187 | | 'DYEAR='.$discArray['dyear'].PHP_EOL. |
| 188 | | 'DGENRE='.$discArray['dgenre'].PHP_EOL; |
| | 195 | /** |
| | 196 | * |
| | 197 | * @param string | SPLFileInfo |
| | 198 | * @param array |
| | 199 | * @param array $disc |
| | 200 | * |
| | 201 | * |
| | 202 | * NOTES: |
| | 203 | * 0 |
| | 204 | * 1 |
| | 205 | * 2 <<if'start' ==3 'length' of array_slice is here |
| | 206 | * 3 DTITLE <=rewrite_points['start']) |
| | 207 | * 4 DYEAR |
| | 208 | * 5 DGENRE |
| | 209 | * 6 TTITLE0 |
| | 210 | * 7 TTITLE1 <=$rewrite_points['end'] (last track ) |
| | 211 | * 8 EXTD= |
| | 212 | */ |
| | 213 | public function getRewriteStr($file, $rewrite_points, $disc) |
| | 214 | { |
| | 215 | $fileArray = file($file); |
| | 216 | |
| | 217 | $rewriteStr = implode('', array_slice($fileArray, 0, $rewrite_points['start'])); |
| | 218 | $rewriteStr .= 'DTITLE='.$disc['dartist'].' / '.$disc['dtitle'].PHP_EOL. |
| | 219 | 'DYEAR='.$disc['dyear'].PHP_EOL. |
| | 220 | 'DGENRE='.$disc['dgenre'].PHP_EOL; |