Files
2026-08-27 11:00:27 -06:00

83 lines
1.5 KiB
Go

package browsers
import (
"path/filepath"
"regexp"
_ "modernc.org/sqlite"
)
func (c *Chromium) GetDownloads(path string) (downloads []Download, err error) {
db, err := GetDBConnection(filepath.Join(path, "History"))
if err != nil {
return nil, err
}
rows, err := db.Query("SELECT tab_url, target_path FROM downloads")
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var (
url, path string
)
if err = rows.Scan(&url, &path); err != nil {
continue
}
if url == "" || path == "" {
continue
}
downloads = append(downloads, Download{
URL: url,
TargetPath: path,
})
}
return downloads, nil
}
func (g *Gecko) GetDownloads(path string) (downloads []Download, err error) {
db, err := GetDBConnection(filepath.Join(path, "places.sqlite"))
if err != nil {
return nil, err
}
rows, err := db.Query("SELECT place_id, GROUP_CONCAT(content), url, dateAdded FROM (SELECT * FROM moz_annos INNER JOIN moz_places ON moz_annos.place_id=moz_places.id) t GROUP BY place_id")
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var (
content, url string
placeID, dateAdded int64
)
if err = rows.Scan(&placeID, &content, &url, &dateAdded); err != nil {
continue
}
if url == "" || path == "" {
continue
}
re := regexp.MustCompile(`file:///(.*?),`)
result := re.FindStringSubmatch(content)
if len(result) == 0 {
continue
}
downloads = append(downloads, Download{
URL: url,
TargetPath: result[1],
})
}
return downloads, nil
}