acondiff Posted July 3, 2010 Share Posted July 3, 2010 So I am trying to write a script where it browses a folder and gets all the mp3 id3 data for all the mp3's in the folder. <?php $dir = TEMPLATEPATH . "/flash/music/"; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($fileread = readdir($dh)) !== false) { if($fileread == "." || $fileread == ".." || $fileread == "index.php" ) continue; $fullpath = $dir . $fileread; echo "filename: <b>$fullpath</b>"; echo "<br>"; $musicfile = $fullpath; fopen($fullpath, 'r'); fseek($musicfile, -128, SEEK_END); $tag = fread($musicfile, 3); if($tag == "TAG") { $data["song"] = trim(fread($musicfile, 30)); $data["artist"] = trim(fread($musicfile, 30)); $data["album"] = trim(fread($musicfile, 30)); } else die("MP3 file does not have any ID3 tag!"); fclose($musicfile); while(list($key, $value) = each($data)) { print("$key: $value<br>\r\n"); } } } } ?> Its not working. I get this error: filename: /[my_server_path]/public_html/new/wp-content/themes/default/flash/music/09 Low.mp3 Warning: fseek(): supplied argument is not a valid stream resource in /[my_server_path]/public_html/new/wp-content/themes/default/functions.php on line 1039 Warning: fread(): supplied argument is not a valid stream resource in /[my_server_path]/public_html/new/wp-content/themes/default/functions.php on line 1041 MP3 file does not have any ID3 tag! Any help? Thanks. Link to comment https://forums.phpfreaks.com/topic/206611-mp3-id3-tags/ Share on other sites More sharing options...
joel24 Posted July 3, 2010 Share Posted July 3, 2010 $tag = fread($musicfile, 3); if($tag == "TAG") shouldn't that line be something like if($tag) Link to comment https://forums.phpfreaks.com/topic/206611-mp3-id3-tags/#findComment-1080604 Share on other sites More sharing options...
fred12ned Posted July 3, 2010 Share Posted July 3, 2010 $musicfile = $fullpath; fopen($fullpath, 'r'); $musicfile is set to a string and the resource from fopen isn't assigned to a variable $musicfile = fopen($fullpath, 'r'); $musicfile is set to the file resource that can be used with fseek and fread Link to comment https://forums.phpfreaks.com/topic/206611-mp3-id3-tags/#findComment-1080630 Share on other sites More sharing options...
acondiff Posted July 3, 2010 Author Share Posted July 3, 2010 Thank you so much. That got rid of one error. It is still saying that it doesn't have an ID3 tag when I know it does. filename: /[my_server_path]/public_html/new/wp-content/themes/default/flash/music/09 Low.mp3 MP3 file does not have any ID3 tag! I did try changing this if($tag == "TAG") to this if($tag ) but that didn't work either. its not running through that if statement. somethings probably wrong with $tag. I actually ran this very similar script on one file and it did work, I am just trying to apply it to a whole folder instead of just one file. <?php $mp3 = "1.mp3"; //The mp3 file. $filesize = filesize($mp3); $file = fopen("1.mp3", "r"); fseek($file, -128, SEEK_END); // It reads the $tag = fread($file, 3); if($tag == "TAG") { $data["song"] = trim(fread($file, 30)); $data["artist"] = trim(fread($file, 30)); $data["album"] = trim(fread($file, 30)); $data["year"] = trim(fread($file, 4)); $data["comment"] = trim(fread($file, 30)); $data["genre"] = trim(fread($file, 1)); } else die("MP3 file does not have any ID3 tag!"); fclose($file); while(list($key, $value) = each($data)) { print("$key: $value<br>\r\n"); } ?> Link to comment https://forums.phpfreaks.com/topic/206611-mp3-id3-tags/#findComment-1080702 Share on other sites More sharing options...
acondiff Posted July 3, 2010 Author Share Posted July 3, 2010 when I add this code: echo "$musicfile<br>"; it echos out this: "Resource id #98" Shouldn't that be a filename? Link to comment https://forums.phpfreaks.com/topic/206611-mp3-id3-tags/#findComment-1080725 Share on other sites More sharing options...
acondiff Posted July 3, 2010 Author Share Posted July 3, 2010 UPDATE: This code: <?php $dir = TEMPLATEPATH . "/flash/music/"; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($fileread = readdir($dh)) !== false) { if($fileread == "." || $fileread == ".." || $fileread == "index.php" ) continue; $fullpath = $dir . $fileread; $musicfile = fopen($fullpath, 'r'); fseek($musicfile, -128, SEEK_END); $tag = fread($musicfile, 3); if($tag == "TAG") { $data["song"] = trim(fread($musicfile, 30)); $data["artist"] = trim(fread($musicfile, 30)); $data["album"] = trim(fread($musicfile, 30)); } else { echo "MP3 file does not have any ID3 tag!"; } fclose($musicfile); while(list($key, $value) = each($data)) { print("$key: $value<br>\r\n"); } } } } ?> Returns this: MP3 file does not have any ID3 tag! Warning: Variable passed to each() is not an array or object in /hermes/bosweb/web070/b703/ipw.condiffp/public_html/new/wp-content/themes/default/functions.php on line 1053 song: X&Y artist: Coldplay album: X&Y So oddly enough, it is only retrieving the second songs id3 data. Link to comment https://forums.phpfreaks.com/topic/206611-mp3-id3-tags/#findComment-1080745 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.