mirror of
https://github.com/go-shiori/shiori.git
synced 2025-12-09 05:25:53 +08:00
update assests
This commit is contained in:
commit
520eb419c7
7 changed files with 52 additions and 28 deletions
File diff suppressed because one or more lines are too long
22
cmd/add.go
22
cmd/add.go
|
|
@ -1,6 +1,7 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
nurl "net/url"
|
||||
"strings"
|
||||
"time"
|
||||
|
|
@ -59,8 +60,14 @@ func addBookmark(base model.Bookmark, offline bool) (book model.Bookmark, err er
|
|||
// Prepare initial result
|
||||
book = base
|
||||
|
||||
// Make sure URL valid
|
||||
parsedURL, err := nurl.ParseRequestURI(book.URL)
|
||||
if err != nil || parsedURL.Host == "" {
|
||||
return book, fmt.Errorf("URL is not valid")
|
||||
}
|
||||
|
||||
// Clear UTM parameters from URL
|
||||
book.URL, err = clearUTMParams(book.URL)
|
||||
book.URL, err = clearUTMParams(parsedURL)
|
||||
if err != nil {
|
||||
return book, err
|
||||
}
|
||||
|
|
@ -101,14 +108,9 @@ func normalizeSpace(str string) string {
|
|||
return strings.Join(strings.Fields(str), " ")
|
||||
}
|
||||
|
||||
func clearUTMParams(uri string) (string, error) {
|
||||
tempURL, err := nurl.Parse(uri)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
func clearUTMParams(url *nurl.URL) (string, error) {
|
||||
newQuery := nurl.Values{}
|
||||
for key, value := range tempURL.Query() {
|
||||
for key, value := range url.Query() {
|
||||
if strings.HasPrefix(key, "utm_") {
|
||||
continue
|
||||
}
|
||||
|
|
@ -116,6 +118,6 @@ func clearUTMParams(uri string) (string, error) {
|
|||
newQuery[key] = value
|
||||
}
|
||||
|
||||
tempURL.RawQuery = newQuery.Encode()
|
||||
return tempURL.String(), nil
|
||||
url.RawQuery = newQuery.Encode()
|
||||
return url.String(), nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ func TestAddBookMark(t *testing.T) {
|
|||
}{
|
||||
{
|
||||
model.Bookmark{},
|
||||
true, "URL must not be empty",
|
||||
true, "URL is not valid",
|
||||
},
|
||||
{
|
||||
model.Bookmark{
|
||||
|
|
@ -23,7 +23,6 @@ func TestAddBookMark(t *testing.T) {
|
|||
},
|
||||
true, "Title must not be empty",
|
||||
},
|
||||
{model.Bookmark{URL: "foo", Title: "Foo"}, true, ""},
|
||||
{
|
||||
model.Bookmark{
|
||||
URL: "https://github.com/RadhiFadlillah/shiori",
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ var (
|
|||
Long: "Show the saved bookmarks by its DB index. " +
|
||||
"Accepts space-separated list of indices (e.g. 5 6 23 4 110 45), hyphenated range (e.g. 100-200) or both (e.g. 1-3 7 9). " +
|
||||
"If no arguments, all records with actual index from DB are shown.",
|
||||
Aliases: []string{"list", "ls"},
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
// Read flags
|
||||
useJSON, _ := cmd.Flags().GetBool("json")
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package cmd
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
nurl "net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
|
|
@ -100,10 +101,18 @@ func init() {
|
|||
func updateBookmarks(indices []string, base model.Bookmark, offline, overwrite bool) ([]model.Bookmark, error) {
|
||||
mutex := sync.Mutex{}
|
||||
|
||||
// Clear UTM parameters from URL
|
||||
url, err := clearUTMParams(base.URL)
|
||||
if err != nil {
|
||||
return []model.Bookmark{}, err
|
||||
if base.URL != "" {
|
||||
// Make sure URL valid
|
||||
parsedURL, err := nurl.ParseRequestURI(base.URL)
|
||||
if err != nil || parsedURL.Host == "" {
|
||||
return []model.Bookmark{}, fmt.Errorf("URL is not valid")
|
||||
}
|
||||
|
||||
// Clear UTM parameters from URL
|
||||
base.URL, err = clearUTMParams(parsedURL)
|
||||
if err != nil {
|
||||
return []model.Bookmark{}, err
|
||||
}
|
||||
}
|
||||
|
||||
// Read bookmarks from database
|
||||
|
|
@ -116,8 +125,8 @@ func updateBookmarks(indices []string, base model.Bookmark, offline, overwrite b
|
|||
return []model.Bookmark{}, fmt.Errorf("No matching index found")
|
||||
}
|
||||
|
||||
if url != "" && len(bookmarks) == 1 {
|
||||
bookmarks[0].URL = url
|
||||
if base.URL != "" && len(bookmarks) == 1 {
|
||||
bookmarks[0].URL = base.URL
|
||||
}
|
||||
|
||||
// If not offline, fetch articles from internet
|
||||
|
|
@ -201,6 +210,7 @@ func updateBookmarks(indices []string, base model.Bookmark, offline, overwrite b
|
|||
}
|
||||
|
||||
bookmarks[i].Tags = newTags
|
||||
bookmarks[i].Modified = time.Now().UTC().Format("2006-01-02 15:04:05")
|
||||
}
|
||||
|
||||
result, err := DB.UpdateBookmarks(bookmarks)
|
||||
|
|
|
|||
|
|
@ -379,7 +379,7 @@ func (db *SQLiteDatabase) SearchBookmarks(orderLatest bool, keyword string, tags
|
|||
FROM bookmark ` + whereClause
|
||||
|
||||
if orderLatest {
|
||||
query += ` ORDER BY modified DESC`
|
||||
query += ` ORDER BY id DESC`
|
||||
}
|
||||
|
||||
bookmarks := []model.Bookmark{}
|
||||
|
|
@ -432,7 +432,7 @@ func (db *SQLiteDatabase) UpdateBookmarks(bookmarks []model.Bookmark) (result []
|
|||
// Prepare statement
|
||||
stmtUpdateBookmark, err := db.Preparex(`UPDATE bookmark SET
|
||||
url = ?, title = ?, image_url = ?, excerpt = ?, author = ?,
|
||||
min_read_time = ?, max_read_time = ? WHERE id = ?`)
|
||||
min_read_time = ?, max_read_time = ?, modified = ? WHERE id = ?`)
|
||||
checkError(err)
|
||||
|
||||
stmtUpdateBookmarkContent, err := db.Preparex(`UPDATE bookmark_content SET
|
||||
|
|
@ -461,6 +461,7 @@ func (db *SQLiteDatabase) UpdateBookmarks(bookmarks []model.Bookmark) (result []
|
|||
book.Author,
|
||||
book.MinReadTime,
|
||||
book.MaxReadTime,
|
||||
book.Modified,
|
||||
book.ID)
|
||||
|
||||
stmtUpdateBookmarkContent.MustExec(
|
||||
|
|
|
|||
|
|
@ -522,10 +522,8 @@
|
|||
app.searchTag(tag);
|
||||
},
|
||||
bookmarkTime: function (book) {
|
||||
var time = book.modified,
|
||||
readTime = "",
|
||||
finalBookmarkTime = "";
|
||||
|
||||
// Define read time
|
||||
var readTime = "";
|
||||
if (book.maxReadTime === 0) {
|
||||
readTime = "";
|
||||
} else if (book.minReadTime === book.maxReadTime) {
|
||||
|
|
@ -534,7 +532,20 @@
|
|||
readTime = book.minReadTime + "-" + book.maxReadTime + " min read";
|
||||
}
|
||||
|
||||
finalBookmarkTime = "Updated " + time;
|
||||
// Convert modified time to local
|
||||
var time = new Date(book.modified.replace(/-/g, '/') + ' +00');
|
||||
|
||||
// Create final time
|
||||
var month = ("00" + (time.getMonth() + 1)).slice(-2),
|
||||
date = ("00" + time.getDate()).slice(-2),
|
||||
hours = ("00" + time.getHours()).slice(-2),
|
||||
minutes = ("00" + time.getMinutes()).slice(-2),
|
||||
seconds = ("00" + time.getSeconds()).slice(-2);
|
||||
|
||||
var finalBookmarkTime = "Updated " +
|
||||
time.getFullYear() + "-" + month + "-" + date + " " +
|
||||
hours + ":" + minutes + ":" + seconds;
|
||||
|
||||
if (readTime !== "") finalBookmarkTime += " \u00B7 " + readTime;
|
||||
|
||||
return finalBookmarkTime;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue