check videojs extension

This commit is contained in:
Celogeek 2021-12-22 19:32:25 +01:00
parent 545282b439
commit 41c303c110
Signed by: celogeek
GPG Key ID: E6B7BDCFC446233A
4 changed files with 95 additions and 33 deletions

View File

@ -0,0 +1,43 @@
package piwigo
import (
"encoding/json"
"strings"
)
type ActivePlugin map[string]bool
func (uft *ActivePlugin) UnmarshalJSON(data []byte) error {
var r []struct {
Id string `json:"id"`
State string `json:"state"`
}
if err := json.Unmarshal(data, &r); err != nil {
return err
}
*uft = ActivePlugin{}
for _, plugin := range r {
if plugin.State == "active" {
(*uft)[plugin.Id] = true
}
}
return nil
}
func (uft ActivePlugin) MarshalJSON() ([]byte, error) {
keys := make([]string, 0, len(uft))
for k := range uft {
keys = append(keys, k)
}
return json.Marshal(keys)
}
func (uft ActivePlugin) String() string {
keys := make([]string, 0, len(uft))
for k := range uft {
keys = append(keys, k)
}
return strings.Join(keys, ",")
}

View File

@ -1,44 +1,17 @@
package piwigo
import (
"encoding/json"
"errors"
"net/url"
"strings"
)
type UploadFileType map[string]bool
type StatusResponse struct {
User string `json:"username"`
Role string `json:"status"`
Version string `json:"version"`
Token string `json:"pwg_token"`
UploadFileType UploadFileType `json:"upload_file_types"`
}
func (uft *UploadFileType) UnmarshalJSON(data []byte) error {
var r string
if err := json.Unmarshal(data, &r); err != nil {
return err
}
*uft = UploadFileType{}
for _, v := range strings.Split(r, ",") {
(*uft)[v] = true
}
return nil
}
func (uft UploadFileType) MarshalJSON() ([]byte, error) {
return []byte(`"` + uft.String() + `"`), nil
}
func (uft UploadFileType) String() string {
keys := make([]string, 0, len(uft))
for k, _ := range uft {
keys = append(keys, k)
}
return strings.Join(keys, ",")
Plugins ActivePlugin `json:"plugins"`
}
func (p *Piwigo) GetStatus() (*StatusResponse, error) {
@ -52,6 +25,12 @@ func (p *Piwigo) GetStatus() (*StatusResponse, error) {
if err != nil {
return nil, err
}
err = p.Post("pwg.plugins.getList", nil, &resp.Plugins)
if err != nil {
return nil, err
}
if resp.User == p.Username {
return resp, nil
}

View File

@ -0,0 +1,36 @@
package piwigo
import (
"encoding/json"
"strings"
)
type UploadFileType map[string]bool
func (uft *UploadFileType) UnmarshalJSON(data []byte) error {
var r string
if err := json.Unmarshal(data, &r); err != nil {
return err
}
*uft = UploadFileType{}
for _, v := range strings.Split(r, ",") {
(*uft)[v] = true
}
return nil
}
func (uft UploadFileType) MarshalJSON() ([]byte, error) {
keys := make([]string, 0, len(uft))
for k := range uft {
keys = append(keys, k)
}
return json.Marshal(keys)
}
func (uft UploadFileType) String() string {
keys := make([]string, 0, len(uft))
for k := range uft {
keys = append(keys, k)
}
return strings.Join(keys, ",")
}

View File

@ -2,6 +2,7 @@ package piwigocli
import (
"errors"
"fmt"
"path/filepath"
"strings"
@ -34,11 +35,14 @@ func (c *ImagesUploadCommand) Execute(args []string) error {
return err
}
switch ext {
case "ogg", "ogv", "mp4", "m4v", "webm", "webmv":
err = p.VideoJSSync(resp.ImageId)
if err != nil {
return err
if _, ok := status.Plugins["piwigo-videojs"]; ok {
switch ext {
case "ogg", "ogv", "mp4", "m4v", "webm", "webmv":
fmt.Println("syncing metadata with videojs")
err = p.VideoJSSync(resp.ImageId)
if err != nil {
return err
}
}
}