# import requests # # url = "https://ranking.rakuten.co.jp/search?stx=GBAmarket&smd=0&prl=&pru=&rvf=&arf=&vmd=0&ptn=1&srt=1&sgid=" # # headers = { # "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", # "accept-language": "zh-CN,zh;q=0.9", # "priority": "u=0, i", # "referer": "https://ranking.rakuten.co.jp/search?stx=GBAmarket&smd=0&prl=&pru=&rvf=&arf=&vmd=0&ptn=1&srt=1&sgid=", # "sec-ch-ua": "\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\", \"Google Chrome\";v=\"138\"", # "sec-ch-ua-mobile": "?0", # "sec-ch-ua-platform": "\"macOS\"", # "sec-fetch-dest": "document", # "sec-fetch-mode": "navigate", # "sec-fetch-site": "same-origin", # "sec-fetch-user": "?1", # "upgrade-insecure-requests": "1", # "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36" # } # # cookies = { # "_ra": "1752116555230|376efdb7-8d68-468f-ab3b-b236a7fee8ab", # "Rp": "afb2f0411bbbb8f596a7324d3bf686f2d4d8c42e", # "rcxGlobal": "6ab617f6-e89a-4849-a17d-39346ceab779", # "_fbp": "fb.2.1752116561306.554477302923466861", # "__lt__cid.3df24f5b": "b28a713c-0c65-415e-a885-5de2abc1947d", # "_gcl_au": "1.1.852913923.1752116563", # "_tt_enable_cookie": "1", # "_ttp": "01JZS4J2SDCX5FARA1FBNTRQQX_.tt.2", # "s_pers": " s_mrcr=1100400000000000%7C4000000000000%7C4000000000000%7C4000000000000|1909796626962;", # "rcx": "ad34370f-13d0-4131-82c8-6edb6f41e8f8", # "_cc_id": "c13444ea89c20325d7c9f7a3cc7f1ffc", # "Re": "11.3.18.2.0.212416.1:35.4.5.3.0.564023.2-11.3.18.2.0.212416.1:35.4.5.3.0.564023.2", # "_uetvid": "58ee65a05d3a11f09ed13da392f5e26d", # "ttcsid_COAFPAJC77U4F0RAECNG": "1752128671110::neArZJuye17ZAl_sOSSX.2.1752128671110", # "ttcsid": "1752128671112::4tJK9XFbWPZlM0luW3dG.2.1752128671191", # "ttcsid_COAECTBC77U6F5DVOFS0": "1752128671186::Kc-BUymsV6Mgnf8-9p4j.2.1752128672359", # "rat_v": "e173160a11ee7f9bc722413162268762dff46f33", # "__gads": "ID=bc3203bc3f1cac41:T=1752116635:RT=1752575488:S=ALNI_MbfuXQosJcKAJqdmor0IpqLU52sAA", # "__gpi": "UID=00001158e9c20516:T=1752116635:RT=1752575488:S=ALNI_MZPOIso8ayWwZVhscaaB7rk4eERug", # "__eoi": "ID=411c6fdd85018b70:T=1752116635:RT=1752575488:S=AA-AfjbICu9yvBwUOq3Ua87yCQaw", # "panoramaId_expiry": "1752661888761", # "panoramaId": "c659c5f420e4e9748ea29913dff3a9fb927a13802d967d06ed67bdf7141ff3fc", # "panoramaIdType": "panoDevice", # "FCNEC": "[[\"AKsRol8ePxhzalKVzFIUlIuF-TIoX_n5Q0EORVJZ_-XTM6sIG2BpLffroHzKJWD2XpfVzXZK5Ez4dqmM3jq-x6jrQbUk1Ulvgmhvs_Nhg2mXWUEW1Ha9UXuCU7JjpeHsgDue7rWSvZYW_QcBeavPux3Qk5OOykBrwg==\"]]", # "cto_bundle": "cOve5191cElKb3EyM3Z1Y3p0WTBDb3FlUkhzWUJPcTVTOFVQRGxaTWZUaEFOYiUyQmIwR1REaTJIcUtiNlNUVW9mYmYwekZMNWZxZ3FKU2NiMDZtMTFBaDZSJTJGdFRGaFdtTGpZQkx0WE51d3BiT1p2c2pXeDZGdXZRekNVVlIlMkJnSG11amtxQWJydiUyRnlsdTMlMkJ5Z01XRURQTFhpT2ZBJTNEJTNE" # } # # response = requests.get(url) # response1 = requests.get(url, headers={ # "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", # "accept-language": "zh-CN,zh;q=0.9", # "priority": "u=0, i", # "referer": "https://ranking.rakuten.co.jp/search?stx=GBAmarket&smd=0&prl=&pru=&rvf=&arf=&vmd=0&ptn=1&srt=1&sgid=", # "sec-ch-ua": "\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\", \"Google Chrome\";v=\"138\"", # "sec-ch-ua-mobile": "?0", # "sec-ch-ua-platform": "\"macOS\"", # "sec-fetch-dest": "document", # "sec-fetch-mode": "navigate", # "sec-fetch-site": "same-origin", # "sec-fetch-user": "?1", # "upgrade-insecure-requests": "1", # "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36" # }) # print() import os import shutil import tempfile import tensorflow_hub as hub # def fix_yamnet_cache(): # """清理并重新下载YAMNet模型""" # # # 1. 清理TensorFlow Hub缓存 # cache_dir = os.path.join(tempfile.gettempdir(), 'tfhub_modules') # if os.path.exists(cache_dir): # print(f"🗑️ 清理缓存目录: {cache_dir}") # shutil.rmtree(cache_dir) # print("✅ 缓存清理完成") # # # 2. 设置新的缓存目录 # new_cache_dir = os.path.expanduser("~/tfhub_cache") # os.makedirs(new_cache_dir, exist_ok=True) # os.environ['TFHUB_CACHE_DIR'] = new_cache_dir # # print(f"📁 设置新缓存目录: {new_cache_dir}") # # # 3. 重新下载YAMNet模型 # try: # print("🔄 重新下载YAMNet模型...") # yamnet_model = hub.load('https://tfhub.dev/google/yamnet/1') # print("✅ YAMNet模型加载成功!") # return yamnet_model # except Exception as e: # print(f"❌ 模型加载仍然失败: {e}") # return None # # import os import mutagen from mutagen.mp3 import MP3 from mutagen.wavpack import WavPack from mutagen.flac import FLAC from mutagen.wave import WAVE from mutagen.oggvorbis import OggVorbis def get_audio_duration(file_path): """ 获取音频文件的时长(秒) 参数: file_path (str): 音频文件路径 返回: float: 音频时长(秒),如果无法解析则返回None """ try: # 根据文件扩展名选择合适的解析器 ext = os.path.splitext(file_path)[1].lower() if ext == '.mp3': audio = MP3(file_path) elif ext == '.wav': audio = WAVE(file_path) elif ext == '.flac': audio = FLAC(file_path) elif ext == '.wv': audio = WavPack(file_path) elif ext == '.ogg': audio = OggVorbis(file_path) else: # 尝试通用解析器 audio = mutagen.File(file_path) if not audio: print(f"不支持的文件格式: {file_path}") return None # 获取时长(秒) duration = audio.info.length return duration except Exception as e: print(f"处理文件 {file_path} 时出错: {str(e)}") return None def format_duration(seconds): """将秒数格式化为时:分:秒""" if seconds is None: return "未知" hours = int(seconds // 3600) minutes = int((seconds % 3600) // 60) secs = int(seconds % 60) if hours > 0: return f"{hours}:{minutes:02d}:{secs:02d}" else: return f"{minutes}:{secs:02d}" def process_audio_files(directory): """处理目录中的所有音频文件并显示时长""" # 支持的音频文件扩展名 audio_extensions = ['.mp3', '.wav', '.flac', '.wv', '.ogg', '.m4a', '.aac'] # 遍历目录中的所有文件 for filename in os.listdir(directory): file_path = os.path.join(directory, filename) # 只处理文件,不处理目录 if os.path.isfile(file_path): ext = os.path.splitext(filename)[1].lower() if ext in audio_extensions: duration_sec = get_audio_duration(file_path) duration_str = format_duration(duration_sec) print(f"{filename}: {duration_str}") if __name__ == "__main__": process_audio_files("data/cat_sounds_4")