✨ Fetch data from MusicBrainz
This commit is contained in:
		
					parent
					
						
							
								c9498340d0
							
						
					
				
			
			
				commit
				
					
						1e78a95e8a
					
				
			
		
					 3 changed files with 89 additions and 5 deletions
				
			
		
							
								
								
									
										12
									
								
								app/run.go
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								app/run.go
									
										
									
									
									
								
							|  | @ -38,8 +38,18 @@ func testFp() { | |||
| 	quit() | ||||
| } | ||||
| 
 | ||||
| func testMb() { | ||||
| 	id := "497f2f22-809b-4c9e-a692-72f7d8dcaaa2" | ||||
| 	mb, err := media.GetMbRecording(id) | ||||
| 	if err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 	fmt.Printf("%+v\n", mb) | ||||
| 	quit() | ||||
| } | ||||
| 
 | ||||
| func Run(step AppStep) { | ||||
| 	testFp() | ||||
| 	testMb() | ||||
| 	for step < Quit { | ||||
| 		switch step { | ||||
| 		case Pick: | ||||
|  |  | |||
							
								
								
									
										78
									
								
								media/brainz.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								media/brainz.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,78 @@ | |||
| package media | ||||
| 
 | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"net/http" | ||||
| 	//"codeberg.org/danjones000/strip-beats/config" | ||||
| ) | ||||
| 
 | ||||
| type MbRecording struct { | ||||
| 	Id               string | ||||
| 	FirstReleaseDate string `json:"first-release-date"` | ||||
| 	Length           int | ||||
| 	Title            string | ||||
| 	Video            bool | ||||
| 	Releases         []MbRelease | ||||
| } | ||||
| 
 | ||||
| type MbRelease struct { | ||||
| 	Id       string | ||||
| 	Country  string | ||||
| 	Date     string | ||||
| 	Media    []MbMedia | ||||
| 	Status   string | ||||
| 	StatusId string `json:"status-id"` | ||||
| 	Title    string | ||||
| 	// ReleaseEvents []MbReleaseEvent `json:"release-events"` | ||||
| } | ||||
| 
 | ||||
| type MbMedia struct { | ||||
| 	FormatId    string `json:"format-id"` | ||||
| 	Position    int | ||||
| 	TrackOffset int `json:"track-offset"` | ||||
| 	Format      string | ||||
| 	TrackCount  int `json:"track-count"` | ||||
| 	Tracks      []MbTrack | ||||
| } | ||||
| 
 | ||||
| type MbTrack struct { | ||||
| 	Id       string | ||||
| 	Number   string | ||||
| 	Title    string | ||||
| 	Position int | ||||
| 	Length   int | ||||
| } | ||||
| 
 | ||||
| func GetMbRecording(id string) (MbRecording, error) { | ||||
| 	rec := MbRecording{Id: id} | ||||
| 	err := FillMbRecording(&rec) | ||||
| 	return rec, err | ||||
| } | ||||
| 
 | ||||
| func FillMbRecording(rec *MbRecording) error { | ||||
| 	url := fmt.Sprintf("https://musicbrainz.org/ws/2/recording/%s", rec.Id) | ||||
| 	req, err := http.NewRequest(http.MethodGet, url, nil) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	q := req.URL.Query() | ||||
| 	q.Add("fmt", "json") | ||||
| 	q.Add("inc", "releases+media") | ||||
| 	req.URL.RawQuery = q.Encode() | ||||
| 	req.Header.Set("User-Agent", "strip-beats/0.1.0 (https://codeberg.org/danjones000/strip-beats/)") | ||||
| 
 | ||||
| 	resp, err := http.DefaultClient.Do(req) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	defer resp.Body.Close() | ||||
| 	body, err := io.ReadAll(resp.Body) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	err = json.Unmarshal(body, rec) | ||||
| 
 | ||||
| 	return err | ||||
| } | ||||
|  | @ -54,10 +54,6 @@ type IdError struct { | |||
| 	Message string | ||||
| } | ||||
| 
 | ||||
| type MbRecording struct { | ||||
| 	Id string | ||||
| } | ||||
| 
 | ||||
| func LookupFingerprint(print FPrint) (IdResults, error) { | ||||
| 	res := IdResults{} | ||||
| 	key := config.GetConfig().AcousticIdKey | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue