mirror of
https://github.com/kovidgoyal/kitty.git
synced 2026-06-25 10:27:24 +00:00
Unify metadata formatting between vide and animated image previews
This commit is contained in:
parent
914631b049
commit
158ebee92c
2 changed files with 23 additions and 12 deletions
|
|
@ -22,9 +22,6 @@ import (
|
|||
|
||||
var _ = fmt.Print
|
||||
|
||||
// ffmpeg -y -i bath.mp4 -t 5 -vf "fps=10,scale=320:-1:flags=lanczos" -c:v
|
||||
// libwebp -lossless 0 -compression_level 0 -q:v 75 -loop 0 output_quality.webp
|
||||
|
||||
const FFMPEG_METADATA_KEY = "ffmpeg-metadata.json"
|
||||
|
||||
type ffmpeg_renderer int
|
||||
|
|
@ -146,13 +143,8 @@ func (c ffmpeg_renderer) ShowMetadata(h *Handler, s ShowData) (offset int) {
|
|||
}
|
||||
ext := filepath.Ext(s.abspath)
|
||||
text := fmt.Sprintf("%s: %s", ext, humanize.Bytes(uint64(s.metadata.Size())))
|
||||
icon := icons.IconForPath(s.abspath)
|
||||
w(icon+" "+text, true)
|
||||
r := s.custom_metadata.custom.(*FFMpegMetadata)
|
||||
if d, perr := strconv.ParseFloat(r.Format.Duration, 64); perr == nil {
|
||||
duration := time.Duration(d * float64(time.Second))
|
||||
w("Duration: "+durafmt.Parse(duration).LimitFirstN(1).String(), false)
|
||||
}
|
||||
icon := icons.IconForPath(s.abspath)
|
||||
var width, height int
|
||||
for _, s := range r.Streams {
|
||||
if s.Width > 0 && s.Height > 0 {
|
||||
|
|
@ -160,9 +152,14 @@ func (c ffmpeg_renderer) ShowMetadata(h *Handler, s ShowData) (offset int) {
|
|||
break
|
||||
}
|
||||
}
|
||||
if width*height > 0 {
|
||||
w(fmt.Sprintf("Resolution: %dx%d", width, height), false)
|
||||
text += fmt.Sprintf(" %dx%d", width, height)
|
||||
w(icon+" "+text, true)
|
||||
st := humanize.Time(s.metadata.ModTime())
|
||||
if d, perr := strconv.ParseFloat(r.Format.Duration, 64); perr == nil {
|
||||
duration := time.Duration(d * float64(time.Second))
|
||||
st += fmt.Sprintf(", %s", durafmt.Parse(duration).LimitFirstN(1).String())
|
||||
}
|
||||
w(st, true)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,9 @@ import (
|
|||
"strconv"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/hako/durafmt"
|
||||
"github.com/kovidgoyal/go-parallel"
|
||||
"github.com/kovidgoyal/kitty/tools/disk_cache"
|
||||
"github.com/kovidgoyal/kitty/tools/icons"
|
||||
|
|
@ -248,7 +250,19 @@ func (p ImagePreviewRenderer) ShowMetadata(h *Handler, s ShowData) int {
|
|||
text = icon + " " + text
|
||||
offset += h.render_wrapped_text_in_region(text, s.x, s.y, s.width, s.height, true)
|
||||
}
|
||||
offset += h.render_wrapped_text_in_region(humanize.Time(s.metadata.ModTime()), s.x, s.y+offset, s.width, s.height-offset, true)
|
||||
st := humanize.Time(s.metadata.ModTime())
|
||||
if s.custom_metadata.image != nil && len(s.custom_metadata.image.Frames) > 0 {
|
||||
var d time.Duration
|
||||
for _, f := range s.custom_metadata.image.Frames {
|
||||
if f.Delay_ms > 0 {
|
||||
d += time.Duration(time.Duration(f.Delay_ms) * time.Millisecond)
|
||||
}
|
||||
}
|
||||
if d > 0 {
|
||||
st += fmt.Sprintf(", %s", durafmt.Parse(d).LimitFirstN(1).String())
|
||||
}
|
||||
}
|
||||
offset += h.render_wrapped_text_in_region(st, s.x, s.y+offset, s.width, s.height-offset, true)
|
||||
return offset
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue