feat: first commit

This commit is contained in:
2025-10-08 20:39:09 +08:00
commit 80f0e7f8d7
82 changed files with 12216 additions and 0 deletions

183
ttttt1.py Normal file
View File

@@ -0,0 +1,183 @@
# 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")