// // rhimportd // // The Radio Helsinki Rivendell Import Daemon // // // Copyright (C) 2015-2016 Christian Pointner // // This file is part of rhimportd. // // rhimportd is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // rhimportd is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with rhimportd. If not, see . // package rhimport import ( "encoding/xml" "fmt" "io" ) type BS1770Result struct { Album BS1770ResultAlbum `xml:"album"` } type BS1770ResultAlbum struct { Tracks []BS1770ResultTrack `xml:"track"` Summary BS1770ResultSummary `xml:"summary"` } type BS1770ResultTrack struct { Total uint `xml:"total,attr"` Number uint `xml:"number,attr"` File string `xml:"file,attr"` Integrated BS1770ResultValueLUFS `xml:"integrated"` Momentary BS1770ResultValueLUFS `xml:"momentary"` ShorttermMaximum BS1770ResultValueLUFS `xml:"shortterm-maximum"` SamplePeak BS1770ResultValueSPFS `xml:"sample-peak"` TruePeak BS1770ResultValueTPFS `xml:"true-peak"` } type BS1770ResultSummary struct { Total uint `xml:"total,attr"` Integrated BS1770ResultValueLUFS `xml:"integrated"` Momentary BS1770ResultValueLUFS `xml:"momentary"` ShorttermMaximum BS1770ResultValueLUFS `xml:"shortterm-maximum"` SamplePeak BS1770ResultValueSPFS `xml:"sample-peak"` TruePeak BS1770ResultValueTPFS `xml:"true-peak"` } type BS1770ResultValueLUFS struct { LUFS float64 `xml:"lufs,attr"` LU float64 `xml:"lu,attr"` } type BS1770ResultValueRange struct { LUFS float64 `xml:"lufs,attr"` } type BS1770ResultValueSPFS struct { SPFS float64 `xml:"spfs,attr"` Factor float64 `xml:"factor,attr"` } type BS1770ResultValueTPFS struct { TPFS float64 `xml:"tpfs,attr"` Factor float64 `xml:"factor,attr"` } func NewBS1770ResultFromXML(data io.Reader) (res *BS1770Result, err error) { decoder := xml.NewDecoder(data) res = &BS1770Result{} if xmlerr := decoder.Decode(res); xmlerr != nil { err = fmt.Errorf("Error parsing XML response: %s", xmlerr) return } return }