83 lines
1.5 KiB
Go
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
|
|
}
|