rework torrents meta response

This commit is contained in:
nikk gitanes
2021-09-11 22:48:07 +03:00
parent 44ec8ac13c
commit 97361015dc
2 changed files with 48 additions and 17 deletions

View File

@@ -2,6 +2,7 @@ package dlna
import (
"bytes"
"fmt"
"net"
"os"
"os/user"
@@ -134,9 +135,9 @@ func onBrowseMeta(path string, rootObjectPath string, host, userAgent string) (r
ret = upnpav.Container{Object: rootObj, ChildCount: 1}
return
} else if path == "/TR" {
// Torrents Object Meta
// TR Object Meta
trObj := upnpav.Object{
ID: "%2FR",
ID: "%2FTR",
ParentID: "0",
Restricted: 1,
Searchable: 1,
@@ -147,11 +148,11 @@ func onBrowseMeta(path string, rootObjectPath string, host, userAgent string) (r
vol := len(torr.ListTorrent())
ret = upnpav.Container{Object: trObj, ChildCount: vol}
return
} else if isHashPath(path) {
ret = getTorrentMeta(path, host)
return
}
// err = fmt.Errorf("not implemented")
ret = getTorrentMeta(path, host)
if ret == nil {
err = fmt.Errorf("meta not found")
}
return
}

View File

@@ -128,18 +128,48 @@ func getTorrentMeta(path, host string) (ret interface{}) {
}
// Meta object
obj := upnpav.Object{
ID: "%2F" + torr.TorrentSpec.InfoHash.HexString(),
ParentID: "%2FTR",
Restricted: 1,
Title: torr.Title,
Class: "object.container.storageFolder",
Date: upnpav.Timestamp{Time: time.Now()},
if isHashPath(path) {
// hash object meta
obj := upnpav.Object{
ID: "%2F" + torr.TorrentSpec.InfoHash.HexString(),
ParentID: "%2FTR",
Restricted: 1,
Title: torr.Title,
Date: upnpav.Timestamp{Time: time.Now()},
}
meta := upnpav.Container{Object: obj, ChildCount: 1}
return meta
} else if filepath.Base(path) == "LD" {
parent := url.PathEscape(filepath.Dir(path))
// LD object meta
obj := upnpav.Object{
ID: parent + "%2FLD",
ParentID: parent,
Restricted: 1,
Searchable: 1,
Title: "Load Torrents",
Date: upnpav.Timestamp{Time: time.Now()},
}
meta := upnpav.Container{Object: obj, ChildCount: 1}
return meta
} else {
file := filepath.Base(path)
id := url.PathEscape(path)
parent := url.PathEscape(filepath.Dir(path))
// file object meta
obj := upnpav.Object{
ID: id,
ParentID: parent,
Restricted: 1,
Searchable: 1,
Title: file,
Date: upnpav.Timestamp{Time: time.Now()},
}
meta := upnpav.Container{Object: obj, ChildCount: 1}
return meta
}
meta := upnpav.Container{Object: obj, ChildCount: 1}
return meta
return nil
}
func loadTorrent(path, host string) (ret []interface{}) {