mirror of
https://github.com/celogeek/piwigo-cli.git
synced 2025-05-25 10:12:37 +02:00
97 lines
1.6 KiB
Go
97 lines
1.6 KiB
Go
package piwigo
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
|
|
"github.com/schollz/progressbar/v3"
|
|
)
|
|
|
|
type FileToUploadStat struct {
|
|
Checked int64
|
|
Total int64
|
|
TotalBytes int64
|
|
Uploaded int64
|
|
UploadedBytes int64
|
|
Skipped int64
|
|
Failed int64
|
|
Progress *progressbar.ProgressBar
|
|
mu sync.Mutex
|
|
}
|
|
|
|
func (s *FileToUploadStat) Refresh() {
|
|
s.Progress.Describe(fmt.Sprintf(
|
|
"%d / %d - check:%d, upload:%d, skip:%d, fail:%d",
|
|
s.Uploaded+s.Skipped+s.Failed,
|
|
s.Total,
|
|
s.Checked,
|
|
s.Uploaded,
|
|
s.Skipped,
|
|
s.Failed,
|
|
),
|
|
)
|
|
}
|
|
|
|
func (s *FileToUploadStat) Check() {
|
|
s.mu.Lock()
|
|
s.Checked++
|
|
s.Refresh()
|
|
s.mu.Unlock()
|
|
}
|
|
|
|
func (s *FileToUploadStat) AddBytes(filesize int64) {
|
|
s.mu.Lock()
|
|
s.TotalBytes += filesize
|
|
s.Progress.ChangeMax64(s.TotalBytes + 1)
|
|
s.Refresh()
|
|
s.mu.Unlock()
|
|
}
|
|
|
|
func (s *FileToUploadStat) Add() {
|
|
s.mu.Lock()
|
|
s.Total++
|
|
s.Refresh()
|
|
s.mu.Unlock()
|
|
}
|
|
|
|
func (s *FileToUploadStat) Commit(filereaded int64) {
|
|
s.mu.Lock()
|
|
s.UploadedBytes += filereaded
|
|
s.Progress.Set64(s.UploadedBytes)
|
|
s.mu.Unlock()
|
|
}
|
|
|
|
func (s *FileToUploadStat) Done() {
|
|
s.mu.Lock()
|
|
s.Uploaded++
|
|
s.Refresh()
|
|
s.mu.Unlock()
|
|
}
|
|
|
|
func (s *FileToUploadStat) Close() {
|
|
s.Progress.Close()
|
|
}
|
|
|
|
func (s *FileToUploadStat) Fail() {
|
|
s.mu.Lock()
|
|
s.Failed++
|
|
s.Refresh()
|
|
s.mu.Unlock()
|
|
}
|
|
|
|
func (s *FileToUploadStat) Skip() {
|
|
s.mu.Lock()
|
|
s.Skipped++
|
|
s.Refresh()
|
|
s.mu.Unlock()
|
|
}
|
|
|
|
func (s *FileToUploadStat) Error(origin string, filename string, err error) error {
|
|
s.mu.Lock()
|
|
s.Progress.Clear()
|
|
fmt.Printf("[%s] %s: %s\n", origin, filename, err)
|
|
s.Progress.RenderBlank()
|
|
s.mu.Unlock()
|
|
return err
|
|
}
|