Files
petshy/ttttt1.py
2025-10-08 20:39:09 +08:00

184 lines
7.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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")