{"repo": "chillpandas92/graymusic", "files": {"app/src/main/java/com/example/localmusicapp/AiCritiqueSettings.kt": {"94443bc3332c0daf5171d8b74ee3e812f52b79e7": {"t": 1785745713.5521305, "n": 1645, "h": "a90e8da4ba817e15", "c": "package com.example.localmusicapp\n\nimport android.content.Context\n\n/**\n * AI 歌曲总结(锐评)相关的配置与缓存。\n *\n * - DeepSeek API key 写入 SharedPreferences(本地持久化)\n * - 每首歌生成过的锐评用 path 做 key 缓存在内存中,切歌/重放时直接命中,不重复调用接口\n * - 全局开关控制详情页是否显示 AI 锐评区块\n */\nobject AiCritiqueSettings {\n\n private const val PREFS = \"ai_critique_settings\"\n private const val KEY_API_KEY = \"deepseek_api_key\"\n private const val KEY_ENABLED = \"enabled\"\n\n fun getApiKey(context: Context): String {\n return context.applicationContext\n .getSharedPreferences(PREFS, Context.MODE_PRIVATE)\n .getString(KEY_API_KEY, \"\").orEmpty()\n }\n\n fun setApiKey(context: Context, key: String) {\n context.applicationContext\n .getSharedPreferences(PREFS, Context.MODE_PRIVATE)\n .edit()\n .putString(KEY_API_KEY, key.trim())\n .apply()\n }\n\n fun isEnabled(context: Context): Boolean {\n return context.applicationContext\n .getSharedPreferences(PREFS, Context.MODE_PRIVATE)\n .getBoolean(KEY_ENABLED, false)\n }\n\n fun setEnabled(context: Context, enabled: Boolean) {\n context.applicationContext\n .getSharedPreferences(PREFS, Context.MODE_PRIVATE)\n .edit()\n .putBoolean(KEY_ENABLED, enabled)\n .apply()\n }\n\n // 按歌曲路径缓存已生成的锐评(进程内)。清空由进程重启触发即可。\n private val critiqueCache = HashMap()\n\n fun cachedCritique(path: String): String? = critiqueCache[path]\n\n fun putCritique(path: String, text: String) {\n critiqueCache[path] = text\n }\n\n fun clearCritiques() {\n critiqueCache.clear()\n }\n}\n"}, "b139065a9f05b42734dcb9b83c27564a2624a691": {"t": 1785755856.4802837, "n": 1645, "h": "a90e8da4ba817e15", "c": "package com.example.localmusicapp\n\nimport android.content.Context\n\n/**\n * AI 歌曲总结(锐评)相关的配置与缓存。\n *\n * - DeepSeek API key 写入 SharedPreferences(本地持久化)\n * - 每首歌生成过的锐评用 path 做 key 缓存在内存中,切歌/重放时直接命中,不重复调用接口\n * - 全局开关控制详情页是否显示 AI 锐评区块\n */\nobject AiCritiqueSettings {\n\n private const val PREFS = \"ai_critique_settings\"\n private const val KEY_API_KEY = \"deepseek_api_key\"\n private const val KEY_ENABLED = \"enabled\"\n\n fun getApiKey(context: Context): String {\n return context.applicationContext\n .getSharedPreferences(PREFS, Context.MODE_PRIVATE)\n .getString(KEY_API_KEY, \"\").orEmpty()\n }\n\n fun setApiKey(context: Context, key: String) {\n context.applicationContext\n .getSharedPreferences(PREFS, Context.MODE_PRIVATE)\n .edit()\n .putString(KEY_API_KEY, key.trim())\n .apply()\n }\n\n fun isEnabled(context: Context): Boolean {\n return context.applicationContext\n .getSharedPreferences(PREFS, Context.MODE_PRIVATE)\n .getBoolean(KEY_ENABLED, false)\n }\n\n fun setEnabled(context: Context, enabled: Boolean) {\n context.applicationContext\n .getSharedPreferences(PREFS, Context.MODE_PRIVATE)\n .edit()\n .putBoolean(KEY_ENABLED, enabled)\n .apply()\n }\n\n // 按歌曲路径缓存已生成的锐评(进程内)。清空由进程重启触发即可。\n private val critiqueCache = HashMap()\n\n fun cachedCritique(path: String): String? = critiqueCache[path]\n\n fun putCritique(path: String, text: String) {\n critiqueCache[path] = text\n }\n\n fun clearCritiques() {\n critiqueCache.clear()\n }\n}\n"}}}}