mirror of
https://github.com/rclone/rclone.git
synced 2024-12-20 18:35:58 +08:00
64 lines
1.7 KiB
Go
64 lines
1.7 KiB
Go
|
package upnpav
|
||
|
|
||
|
import (
|
||
|
"encoding/xml"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
// NoSuchObjectErrorCode : The specified ObjectID is invalid.
|
||
|
NoSuchObjectErrorCode = 701
|
||
|
)
|
||
|
|
||
|
// Resource description
|
||
|
type Resource struct {
|
||
|
XMLName xml.Name `xml:"res"`
|
||
|
ProtocolInfo string `xml:"protocolInfo,attr"`
|
||
|
URL string `xml:",chardata"`
|
||
|
Size uint64 `xml:"size,attr,omitempty"`
|
||
|
Bitrate uint `xml:"bitrate,attr,omitempty"`
|
||
|
Duration string `xml:"duration,attr,omitempty"`
|
||
|
Resolution string `xml:"resolution,attr,omitempty"`
|
||
|
}
|
||
|
|
||
|
// Container description
|
||
|
type Container struct {
|
||
|
Object
|
||
|
XMLName xml.Name `xml:"container"`
|
||
|
ChildCount *int `xml:"childCount,attr"`
|
||
|
}
|
||
|
|
||
|
// Item description
|
||
|
type Item struct {
|
||
|
Object
|
||
|
XMLName xml.Name `xml:"item"`
|
||
|
Res []Resource
|
||
|
InnerXML string `xml:",innerxml"`
|
||
|
}
|
||
|
|
||
|
// Object description
|
||
|
type Object struct {
|
||
|
ID string `xml:"id,attr"`
|
||
|
ParentID string `xml:"parentID,attr"`
|
||
|
Restricted int `xml:"restricted,attr"` // indicates whether the object is modifiable
|
||
|
Class string `xml:"upnp:class"`
|
||
|
Icon string `xml:"upnp:icon,omitempty"`
|
||
|
Title string `xml:"dc:title"`
|
||
|
Date Timestamp `xml:"dc:date"`
|
||
|
Artist string `xml:"upnp:artist,omitempty"`
|
||
|
Album string `xml:"upnp:album,omitempty"`
|
||
|
Genre string `xml:"upnp:genre,omitempty"`
|
||
|
AlbumArtURI string `xml:"upnp:albumArtURI,omitempty"`
|
||
|
Searchable int `xml:"searchable,attr"`
|
||
|
}
|
||
|
|
||
|
// Timestamp wraps time.Time for formatting purposes
|
||
|
type Timestamp struct {
|
||
|
time.Time
|
||
|
}
|
||
|
|
||
|
// MarshalXML formats the Timestamp per DIDL-Lite spec
|
||
|
func (t Timestamp) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
|
||
|
return e.EncodeElement(t.Format("2006-01-02"), start)
|
||
|
}
|