clean up the help display; fine-tune the parsing; prepare for the menu
This commit is contained in:
		
							parent
							
								
									a06bc91576
								
							
						
					
					
						commit
						16e0fdd9de
					
				
							
								
								
									
										39
									
								
								browser.go
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								browser.go
									
									
									
									
									
								
							@ -7,6 +7,7 @@ import (
 | 
			
		||||
	"math/rand"
 | 
			
		||||
	"net"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"net/url"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@ -17,10 +18,9 @@ type stationRecord struct {
 | 
			
		||||
	Countrycode string `json:"countrycode"`
 | 
			
		||||
	Tags        string `json:"tags"`
 | 
			
		||||
	Url         string `json:"url"`
 | 
			
		||||
	Lastcheck   int `json:"lastcheck"`
 | 
			
		||||
	Lastcheck   int `json:"lastcheckok"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func RandomIP(iplist []net.IP) net.IP {
 | 
			
		||||
	rand.Seed(time.Now().Unix())
 | 
			
		||||
	randomIndex := rand.Intn(len(iplist))
 | 
			
		||||
@ -45,7 +45,7 @@ func GetApiHost() string {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetStations(qstring string) ([]stationRecord, error){
 | 
			
		||||
	urlstr := fmt.Sprintf("https://%s/json/stations/search?%s&limit=100000",GetApiHost(),qstring)
 | 
			
		||||
	urlstr := fmt.Sprintf("https://%s/json/stations/search?%s&limit=%d",GetApiHost(),qstring,maxitems())
 | 
			
		||||
	resp, err := http.Get(urlstr)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Printf(err.Error())
 | 
			
		||||
@ -60,4 +60,37 @@ func GetStations(qstring string) ([]stationRecord, error){
 | 
			
		||||
	return data, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func pruneStations(stations []stationRecord) []stationRecord {
 | 
			
		||||
	filteredStations := stations[:0]
 | 
			
		||||
	for _, station := range stations {
 | 
			
		||||
		if station.Lastcheck == 1 {
 | 
			
		||||
			filteredStations = append(filteredStations, station)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return filteredStations
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func StationSearch(name string, country string, state string, tags string) ([]stationRecord, error) {
 | 
			
		||||
	params := url.Values{}
 | 
			
		||||
	if name != ""{
 | 
			
		||||
		params.Add("name", name)
 | 
			
		||||
	}
 | 
			
		||||
	if country != "" {
 | 
			
		||||
		params.Add("country", country)
 | 
			
		||||
	}
 | 
			
		||||
	if state != ""{
 | 
			
		||||
		params.Add("state", state)
 | 
			
		||||
	}
 | 
			
		||||
	if tags != ""{
 | 
			
		||||
		params.Add("tag",tags)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	stations, err := GetStations(params.Encode())
 | 
			
		||||
	if err != nil{
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	prunedStations := pruneStations(stations) // eliminate stations that are reporting down.
 | 
			
		||||
	return prunedStations, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								radiomenu.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								radiomenu.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										17
									
								
								stations.go
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								stations.go
									
									
									
									
									
								
							@ -15,7 +15,14 @@ func main(){
 | 
			
		||||
		state 	string
 | 
			
		||||
		tags 	string
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	flag.Usage = func() {
 | 
			
		||||
		fmt.Printf("Usage: \n")
 | 
			
		||||
		fmt.Printf(" gostations ")
 | 
			
		||||
		fmt.Printf(" [-n \"name\"]  [-c \"home country\"]  [-s \"home state\"]  [-t \"ordered,tag,list\"]\n")
 | 
			
		||||
		flag.PrintDefaults()
 | 
			
		||||
		fmt.Printf("  -h (or none)\n")
 | 
			
		||||
		fmt.Printf("\tThis help message\n")
 | 
			
		||||
	}
 | 
			
		||||
	flag.StringVar(&name, "n", "", "Station name (or identifier).")
 | 
			
		||||
	flag.StringVar(&country, "c", "", "Home country.")
 | 
			
		||||
	flag.StringVar(&state, "s", "", "Home state (if in the United States).")
 | 
			
		||||
@ -26,12 +33,10 @@ func main(){
 | 
			
		||||
		flag.Usage()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	stations, err := GetStations("tag=chicago")
 | 
			
		||||
	if err != nil{
 | 
			
		||||
		fmt.Println(err.Error())
 | 
			
		||||
	}
 | 
			
		||||
	stations, _ := StationSearch(name, country, state, tags)
 | 
			
		||||
	fmt.Println(len(stations))
 | 
			
		||||
	for _, station := range stations {
 | 
			
		||||
		fmt.Printf("\"%s\", %s, %s, %s\n", station.Name, station.Codec, station.Bitrate, station.Url)
 | 
			
		||||
		fmt.Printf("%+v\n", station)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user