add nultie gpouring

This commit is contained in:
Yevhen Odynets
2026-09-01 00:08:03 +03:00
parent 1b2521d4ac
commit 3f3598c446
9 changed files with 126 additions and 56 deletions
@@ -10,46 +10,57 @@ import (
)
type GroupStats struct {
Total int
YearDistribution map[int]int
SourceDistribution map[string]int
BitDepthDistribution map[string]int
Total int
YearDistribution map[int]int
SourceDistribution map[string]int
BitDepthDistribution map[string]int
ResolutionDistribution map[string]int
LanguageDistribution map[string]int
EditionDistribution map[string]int
UnknownTokens []releaseparser.UnknownTokenStats
AvgConfidence float64
LanguageDistribution map[string]int
EditionDistribution map[string]int
UnknownTokens []releaseparser.UnknownTokenStats
AvgConfidence float64
}
// AnalyzeGroup аналізує релізи з файлового ресурсу (для локальної перевірки довідників).
func AnalyzeGroup() (GroupStats, error) {
stats := GroupStats{
YearDistribution: make(map[int]int),
SourceDistribution: make(map[string]int),
BitDepthDistribution: make(map[string]int),
ResolutionDistribution: make(map[string]int),
LanguageDistribution: make(map[string]int),
EditionDistribution: make(map[string]int),
UnknownTokens: []releaseparser.UnknownTokenStats{},
}
file, err := os.Open("internal/releaseparser/resources/moonblood.txt")
file, err := os.Open("../../resources/moonblood.txt")
if err != nil {
return stats, err
return GroupStats{}, err
}
defer file.Close()
var titles []string
scanner := bufio.NewScanner(file)
totalConfidence := 0.0
unknownMap := make(map[string]*releaseparser.UnknownTokenStats)
for scanner.Scan() {
line := strings.TrimSpace(scanner.Text())
if line == "" {
continue
if line != "" {
titles = append(titles, line)
}
}
if err := scanner.Err(); err != nil {
return GroupStats{}, err
}
result := Parse(line)
return AnalyzeTitles(titles), nil
}
// AnalyzeTitles аналізує набір назв релізів (наприклад, з бази по ключу-групі).
func AnalyzeTitles(titles []string) GroupStats {
stats := GroupStats{
YearDistribution: make(map[int]int),
SourceDistribution: make(map[string]int),
BitDepthDistribution: make(map[string]int),
ResolutionDistribution: make(map[string]int),
LanguageDistribution: make(map[string]int),
EditionDistribution: make(map[string]int),
UnknownTokens: []releaseparser.UnknownTokenStats{},
}
totalConfidence := 0.0
unknownMap := make(map[string]*releaseparser.UnknownTokenStats)
for _, title := range titles {
result := Parse(title)
stats.Total++
if result.Year != 0 {
@@ -80,7 +91,7 @@ func AnalyzeGroup() (GroupStats, error) {
}
}
unknownMap[unknown].Count++
unknownMap[unknown].Releases = append(unknownMap[unknown].Releases, line)
unknownMap[unknown].Releases = append(unknownMap[unknown].Releases, title)
}
totalConfidence += result.Confidence
@@ -99,5 +110,5 @@ func AnalyzeGroup() (GroupStats, error) {
stats.AvgConfidence = totalConfidence / float64(stats.Total)
}
return stats, nil
return stats
}