Skip to content

Commit 437a8c2

Browse files
committed
♻️ Synced dbin 📦 <-- flatpakAppStreamScrapper: fix content_rating JSON key ⌚
1 parent 03b3917 commit 437a8c2

File tree

1 file changed

+36
-7
lines changed

1 file changed

+36
-7
lines changed

misc/cmd/flatpakAppStreamScrapper/scrapper.go

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"strconv"
1212
"strings"
1313

14-
"jaytaylor.com/html2text"
14+
"github.com/k3a/html2text"
1515
"github.com/fxamacker/cbor/v2"
1616
"github.com/goccy/go-json"
1717
"github.com/shamaton/msgpack/v2"
@@ -138,7 +138,7 @@ func saveCBOR(filename string, metadata []AppStreamData) error {
138138
func saveJSON(filename string, metadata []AppStreamData) error {
139139
var buffer strings.Builder
140140
encoder := json.NewEncoder(&buffer)
141-
encoder.SetEscapeHTML(false) // Prevent escaping HTML tags
141+
encoder.SetEscapeHTML(false)
142142
encoder.SetIndent("", " ")
143143

144144
if err := encoder.Encode(metadata); err != nil {
@@ -200,11 +200,37 @@ func getSummary(summaries []struct {
200200
}
201201

202202
func getContentRating(ratings []Tag) string {
203-
var contentRating strings.Builder
203+
var ratingStrings []string
204204
for _, rating := range ratings {
205-
contentRating.WriteString(rating.Content)
205+
decoder := xml.NewDecoder(strings.NewReader(rating.Content))
206+
for {
207+
tok, err := decoder.Token()
208+
if err == io.EOF {
209+
break
210+
}
211+
if err != nil {
212+
continue
213+
}
214+
switch se := tok.(type) {
215+
case xml.StartElement:
216+
if se.Name.Local == "content_attribute" {
217+
var id string
218+
for _, attr := range se.Attr {
219+
if attr.Name.Local == "id" {
220+
id = attr.Value
221+
break
222+
}
223+
}
224+
var value string
225+
decoder.DecodeElement(&value, &se)
226+
if id != "" && value != "" {
227+
ratingStrings = append(ratingStrings, fmt.Sprintf("%s:%s", id, strings.TrimSpace(value)))
228+
}
229+
}
230+
}
231+
}
206232
}
207-
return contentRating.String()
233+
return strings.Join(ratingStrings, ",")
208234
}
209235

210236
func getContentByLang[T any](elements []T) string {
@@ -334,12 +360,12 @@ func main() {
334360
metadata = append(metadata, AppStreamData{
335361
AppId: component.Id,
336362
Name: name,
337-
Summary: summary,
363+
Summary: html2text.HTML2Text(summary),
338364
ContentRating: contentRating,
339365
Icons: icons,
340366
Screenshots: screenshots,
341367
Categories: categories,
342-
RichDescription: richDescription,
368+
RichDescription: html2text.HTML2Text(richDescription),
343369
Version: version,
344370
})
345371
}
@@ -350,3 +376,6 @@ func main() {
350376
fmt.Println("Metadata saved successfully.")
351377
}
352378
}
379+
380+
381+

0 commit comments

Comments
 (0)