feat(deepseek api): add balance query and API key management
Add pj deepseek command to query account balance and pj deepseek setkey to store API key in local cache. Also extract Python launcher into its own module (pj_python.nu) and add common aliases (g, c, tree, myip, ports, df, reload, edit).
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
const pj_module_dir = (path self | path dirname)
|
||||
const pj_cache_dir = ($pj_module_dir | path join '..' 'cache')
|
||||
const key_file = ($pj_cache_dir | path join 'deepseek_apikey.toml')
|
||||
|
||||
# Save your DeepSeek API key to local cache.
|
||||
export def "pj deepseek setkey" [api_key: string] {
|
||||
mkdir $pj_cache_dir
|
||||
let content = $"[apikey]
|
||||
key = \"($api_key)\"
|
||||
"
|
||||
$content | save -f $key_file
|
||||
print $"(char --unicode '2714') DeepSeek API key saved to ($key_file)"
|
||||
}
|
||||
|
||||
# Query DeepSeek account balance information.
|
||||
export def "pj deepseek" [] {
|
||||
if not ($key_file | path exists) {
|
||||
print $"(char --unicode '274c') No DeepSeek API key found. Use `pj deepseek setkey <api-key>` to set it."
|
||||
return
|
||||
}
|
||||
|
||||
let config = (open $key_file)
|
||||
let api_key = ($config.apikey?.key? | default "")
|
||||
|
||||
if ($api_key | is-empty) {
|
||||
print $"(char --unicode '274c') Invalid API key in config file. Use `pj deepseek setkey <api-key>` to set a new one."
|
||||
return
|
||||
}
|
||||
|
||||
let response = (curl -L -X GET 'https://api.deepseek.com/user/balance' -H 'Accept: application/json' -H $"Authorization: Bearer ($api_key)" | complete)
|
||||
|
||||
if ($response.exit_code != 0) {
|
||||
print $"(char --unicode '274c') Failed to query balance: ($response.stderr)"
|
||||
return
|
||||
}
|
||||
|
||||
let balance = ($response.stdout | from json)
|
||||
let available_text = if $balance.is_available { $'(char --unicode '2705') Yes' } else { $'(char --unicode '274c') No' }
|
||||
let separator = ('' | fill --character (char --unicode '2501') --width 25 --alignment l)
|
||||
|
||||
print ""
|
||||
print " DeepSeek Account Balance"
|
||||
print $" ($separator)"
|
||||
print $" Available : ($available_text)"
|
||||
print ""
|
||||
|
||||
for info in $balance.balance_infos {
|
||||
print $" Currency : ($info.currency)"
|
||||
print $" Total : ($info.total_balance)"
|
||||
print $" Granted : ($info.granted_balance)"
|
||||
print $" Topped-up : ($info.topped_up_balance)"
|
||||
print ""
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user