59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
//go:build llm_script && !scripts_pkg
|
|
|
|
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
loadSubscriptionImportEnv()
|
|
|
|
var url string
|
|
var fixture string
|
|
var dryRun bool
|
|
var timeoutSeconds int
|
|
var snapshotOnly bool
|
|
var snapshotOut string
|
|
var signatureOut string
|
|
|
|
flag.StringVar(&url, "url", defaultPerplexityPricingFetchURL, "Perplexity Agent API 官方模型价格 markdown")
|
|
flag.StringVar(&fixture, "fixture", "", "Perplexity 价格样例文件")
|
|
flag.BoolVar(&dryRun, "dry-run", false, "仅解析并打印摘要,不写入数据库")
|
|
flag.BoolVar(&snapshotOnly, "snapshot-only", false, "仅抓取并落盘 Perplexity 价格页快照与结构签名")
|
|
flag.StringVar(&snapshotOut, "snapshot-out", "", "Perplexity 原始 markdown 快照输出路径")
|
|
flag.StringVar(&signatureOut, "signature-out", "", "Perplexity 结构签名 JSON 输出路径")
|
|
flag.IntVar(&timeoutSeconds, "timeout", 20, "请求超时(秒)")
|
|
flag.Parse()
|
|
|
|
cfg := perplexityPricingImportConfig{
|
|
URL: url,
|
|
Fixture: fixture,
|
|
DryRun: dryRun,
|
|
Timeout: time.Duration(timeoutSeconds) * time.Second,
|
|
SnapshotOnly: snapshotOnly,
|
|
SnapshotOut: snapshotOut,
|
|
SignatureOut: signatureOut,
|
|
}
|
|
|
|
var db *sql.DB
|
|
var err error
|
|
if !cfg.DryRun && !cfg.SnapshotOnly {
|
|
db, err = subscriptionImportDB()
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "open db: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
defer db.Close()
|
|
}
|
|
|
|
if err := runPerplexityPricingImport(cfg, db, os.Stdout); err != nil {
|
|
fmt.Fprintf(os.Stderr, "import_perplexity_pricing: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|