tune

package module
v0.0.0-...-a4bd7a4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 6, 2017 License: BSD-3-Clause Imports: 6 Imported by: 0

README

tune

tune is a streaming radio interface for my home speakers.

Screenshot

Screenshot

Dependencies

  • mpv must be on your PATH
  • di.fm network listen key

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Channels = map[string]map[int]*Channel{
	"classicalradio.com": map[int]*Channel{
		373: {"Classical Relaxation", "http://listen.classicalradio.com/premium_high/classicalrelaxation.pls"},
		372: {"Classical Piano Trios", "http://listen.classicalradio.com/premium_high/classicalpianotrios.pls"},
		381: {"Operas", "http://listen.classicalradio.com/premium_high/operas.pls"},
		427: {"Flute Works", "http://listen.classicalradio.com/premium_high/fluteworks.pls"},
		425: {"Classical Guitar Works", "http://listen.classicalradio.com/premium_high/classicalguitarworks.pls"},
		362: {"Bach", "http://listen.classicalradio.com/premium_high/bach.pls"},
		429: {"Schubert", "http://listen.classicalradio.com/premium_high/schubert.pls"},
		426: {"Gregorian Chant", "http://listen.classicalradio.com/premium_high/gregorianchant.pls"},
		366: {"Brahms", "http://listen.classicalradio.com/premium_high/brahms.pls"},
		369: {"Chopin", "http://listen.classicalradio.com/premium_high/chopin.pls"},
		391: {"Solo Piano", "http://listen.classicalradio.com/premium_high/solopiano.pls"},
		380: {"Mozart", "http://listen.classicalradio.com/premium_high/mozart.pls"},
		364: {"Baroque Period", "http://listen.classicalradio.com/premium_high/baroqueperiod.pls"},
		365: {"Beethoven", "http://listen.classicalradio.com/premium_high/beethoven.pls"},
		370: {"Choral Works", "http://listen.classicalradio.com/premium_high/choralworks.pls"},
		360: {"20th Century", "http://listen.classicalradio.com/premium_high/20thcentury.pls"},
		361: {"21st Century", "http://listen.classicalradio.com/premium_high/21stcentury.pls"},
		363: {"Ballets", "http://listen.classicalradio.com/premium_high/ballets.pls"},
		367: {"Cello Works", "http://listen.classicalradio.com/premium_high/celloworks.pls"},
		368: {"Chamber Works", "http://listen.classicalradio.com/premium_high/chamberworks.pls"},
		371: {"Classical Period", "http://listen.classicalradio.com/premium_high/classicalperiod.pls"},
		428: {"Opera Highlights", "http://listen.classicalradio.com/premium_high/operahighlights.pls"},
		374: {"Concertos", "http://listen.classicalradio.com/premium_high/concertos.pls"},
		383: {"Organ Works", "http://listen.classicalradio.com/premium_high/organworks.pls"},
		375: {"Contemporary Period", "http://listen.classicalradio.com/premium_high/contemporaryperiod.pls"},
		386: {"Easy Classical", "http://listen.classicalradio.com/premium_high/easyclassical.pls"},
		376: {"Handel", "http://listen.classicalradio.com/premium_high/handel.pls"},
		378: {"Haydn", "http://listen.classicalradio.com/premium_high/haydn.pls"},
		377: {"Harpsichord Works", "http://listen.classicalradio.com/premium_high/harpsichordworks.pls"},
		379: {"Medieval Period", "http://listen.classicalradio.com/premium_high/medievalperiod.pls"},
		382: {"Orchestral Works", "http://listen.classicalradio.com/premium_high/orchestralworks.pls"},
		384: {"Overtures", "http://listen.classicalradio.com/premium_high/overtures.pls"},
		387: {"Renaissance Period", "http://listen.classicalradio.com/premium_high/renaissanceperiod.pls"},
		388: {"Romantic Period", "http://listen.classicalradio.com/premium_high/romanticperiod.pls"},
		385: {"Piano Works", "http://listen.classicalradio.com/premium_high/pianoworks.pls"},
		389: {"Sacred Works", "http://listen.classicalradio.com/premium_high/sacredworks.pls"},
		390: {"Solo Instruments", "http://listen.classicalradio.com/premium_high/soloinstruments.pls"},
		392: {"Sonatas", "http://listen.classicalradio.com/premium_high/sonatas.pls"},
		393: {"Songs & Lieder", "http://listen.classicalradio.com/premium_high/songsnlieders.pls"},
		394: {"String Works", "http://listen.classicalradio.com/premium_high/stringworks.pls"},
		395: {"Symphonies", "http://listen.classicalradio.com/premium_high/symphonies.pls"},
		396: {"Tchaikovsky", "http://listen.classicalradio.com/premium_high/tchaikovsky.pls"},
		397: {"Violin Works", "http://listen.classicalradio.com/premium_high/violinworks.pls"},
		398: {"Vivaldi", "http://listen.classicalradio.com/premium_high/vivaldi.pls"},
		399: {"Wind Works", "http://listen.classicalradio.com/premium_high/windworks.pls"},
	},
	"di.fm": map[int]*Channel{
		424: {"Future Bass", "http://listen.di.fm/premium_high/futurebass.pls"},
		2:   {"Vocal Trance", "http://listen.di.fm/premium_high/vocaltrance.pls"},
		400: {"Chill & Tropical House", "http://listen.di.fm/premium_high/chillntropicalhouse.pls"},
		1:   {"Trance", "http://listen.di.fm/premium_high/trance.pls"},
		11:  {"Lounge", "http://listen.di.fm/premium_high/lounge.pls"},
		3:   {"Chillout", "http://listen.di.fm/premium_high/chillout.pls"},
		142: {"Vocal Chillout", "http://listen.di.fm/premium_high/vocalchillout.pls"},
		224: {"ChillHop", "http://listen.di.fm/premium_high/chillhop.pls"},
		275: {"Chillstep", "http://listen.di.fm/premium_high/chillstep.pls"},
		351: {"Indie Dance", "http://listen.di.fm/premium_high/indiedance.pls"},
		402: {"Melodic Progressive", "http://listen.di.fm/premium_high/melodicprogressive.pls"},
		7:   {"Progressive", "http://listen.di.fm/premium_high/progressive.pls"},
		4:   {"House", "http://listen.di.fm/premium_high/house.pls"},
		210: {"Mainstage", "http://listen.di.fm/premium_high/mainstage.pls"},
		59:  {"Minimal", "http://listen.di.fm/premium_high/minimal.pls"},
		5:   {"Hard Dance", "http://listen.di.fm/premium_high/harddance.pls"},
		6:   {"EuroDance", "http://listen.di.fm/premium_high/eurodance.pls"},
		278: {"Vocal Lounge", "http://listen.di.fm/premium_high/vocallounge.pls"},
		215: {"UMF Radio", "http://listen.di.fm/premium_high/umfradio.pls"},
		66:  {"Tech House", "http://listen.di.fm/premium_high/techhouse.pls"},
		293: {"Jungle", "http://listen.di.fm/premium_high/jungle.pls"},
		292: {"Future Garage", "http://listen.di.fm/premium_high/futuregarage.pls"},
		290: {"Bass & Jackin' House", "http://listen.di.fm/premium_high/bassnjackinhouse.pls"},
		56:  {"Electro House", "http://listen.di.fm/premium_high/electro.pls"},
		209: {"Big Room House", "http://listen.di.fm/premium_high/bigroomhouse.pls"},
		294: {"Nightcore", "http://listen.di.fm/premium_high/nightcore.pls"},
		230: {"Trap", "http://listen.di.fm/premium_high/trap.pls"},
		67:  {"PsyChill", "http://listen.di.fm/premium_high/psychill.pls"},
		8:   {"Goa-Psy Trance", "http://listen.di.fm/premium_high/goapsy.pls"},
		178: {"Progressive Psy", "http://listen.di.fm/premium_high/progressivepsy.pls"},
		289: {"Bassline", "http://listen.di.fm/premium_high/bassline.pls"},
		9:   {"Hardcore", "http://listen.di.fm/premium_high/hardcore.pls"},
		180: {"Downtempo Lounge", "http://listen.di.fm/premium_high/downtempolounge.pls"},
		10:  {"DJ Mixes", "http://listen.di.fm/premium_high/djmixes.pls"},
		213: {"Russian Club Hits", "http://listen.di.fm/premium_high/russianclubhits.pls"},
		403: {"Atmospheric Breaks", "http://listen.di.fm/premium_high/atmosphericbreaks.pls"},
		12:  {"Ambient", "http://listen.di.fm/premium_high/ambient.pls"},
		285: {"Psybient", "http://listen.di.fm/premium_high/psybient.pls"},
		13:  {"Drum and Bass", "http://listen.di.fm/premium_high/drumandbass.pls"},
		295: {"Nu Disco", "http://listen.di.fm/premium_high/nudisco.pls"},
		198: {"Glitch Hop", "http://listen.di.fm/premium_high/glitchhop.pls"},
		349: {"Jazz House", "http://listen.di.fm/premium_high/jazzhouse.pls"},
		325: {"Big Beat", "http://listen.di.fm/premium_high/bigbeat.pls"},
		348: {"Dub", "http://listen.di.fm/premium_high/dub.pls"},
		208: {"EcLectronica", "http://listen.di.fm/premium_high/eclectronica.pls"},
		14:  {"Oldschool Techno & Trance ", "http://listen.di.fm/premium_high/classictechno.pls"},
		175: {"Epic Trance", "http://listen.di.fm/premium_high/epictrance.pls"},
		353: {"Detroit House & Techno", "http://listen.di.fm/premium_high/detroithousentechno.pls"},
		324: {"00s Club Hits", "http://listen.di.fm/premium_high/00sclubhits.pls"},
		355: {"Dub Techno", "http://listen.di.fm/premium_high/dubtechno.pls"},
		15:  {"Breaks", "http://listen.di.fm/premium_high/breaks.pls"},
		404: {"Indie Beats", "http://listen.di.fm/premium_high/indiebeats.pls"},
		16:  {"Gabber", "http://listen.di.fm/premium_high/gabber.pls"},
		347: {"Electronics", "http://listen.di.fm/premium_high/electronics.pls"},
		352: {"Liquid Trap", "http://listen.di.fm/premium_high/liquidtrap.pls"},
		326: {"EBM", "http://listen.di.fm/premium_high/ebm.pls"},
		276: {"Hard Techno", "http://listen.di.fm/premium_high/hardtechno.pls"},
		291: {"Drumstep", "http://listen.di.fm/premium_high/drumstep.pls"},
		36:  {"Techno", "http://listen.di.fm/premium_high/techno.pls"},
		327: {"Electro Swing", "http://listen.di.fm/premium_high/electroswing.pls"},
		280: {"Electronic Pioneers", "http://listen.di.fm/premium_high/electronicpioneers.pls"},
		47:  {"Soulful House", "http://listen.di.fm/premium_high/soulfulhouse.pls"},
		174: {"Deep House", "http://listen.di.fm/premium_high/deephouse.pls"},
		182: {"Deep Tech", "http://listen.di.fm/premium_high/deeptech.pls"},
		57:  {"Tribal House", "http://listen.di.fm/premium_high/tribalhouse.pls"},
		58:  {"Funky House", "http://listen.di.fm/premium_high/funkyhouse.pls"},
		137: {"Deep Nu-Disco", "http://listen.di.fm/premium_high/deepnudisco.pls"},
		288: {"Underground Techno", "http://listen.di.fm/premium_high/undergroundtechno.pls"},
		296: {"Oldschool Rave", "http://listen.di.fm/premium_high/oldschoolrave.pls"},
		104: {"Oldschool House", "http://listen.di.fm/premium_high/oldschoolhouse.pls"},
		64:  {"Space Dreams", "http://listen.di.fm/premium_high/spacemusic.pls"},
		60:  {"Hardstyle", "http://listen.di.fm/premium_high/hardstyle.pls"},
		68:  {"Chillout Dreams", "http://listen.di.fm/premium_high/chilloutdreams.pls"},
		105: {"Liquid DnB", "http://listen.di.fm/premium_high/liquiddnb.pls"},
		181: {"Dark DnB", "http://listen.di.fm/premium_high/darkdnb.pls"},
		69:  {"Classic EuroDance", "http://listen.di.fm/premium_high/classiceurodance.pls"},
		346: {"Dark PsyTrance", "http://listen.di.fm/premium_high/darkpsytrance.pls"},
		176: {"Hands Up", "http://listen.di.fm/premium_high/handsup.pls"},
		70:  {"Club Sounds", "http://listen.di.fm/premium_high/club.pls"},
		90:  {"Classic Trance", "http://listen.di.fm/premium_high/classictrance.pls"},
		125: {"Classic Vocal Trance", "http://listen.di.fm/premium_high/classicvocaltrance.pls"},
		177: {"Club Dubstep", "http://listen.di.fm/premium_high/clubdubstep.pls"},
		91:  {"Dubstep", "http://listen.di.fm/premium_high/dubstep.pls"},
		184: {"Liquid Dubstep", "http://listen.di.fm/premium_high/liquiddubstep.pls"},
		286: {"Electropop", "http://listen.di.fm/premium_high/electropop.pls"},
		92:  {"Disco House", "http://listen.di.fm/premium_high/discohouse.pls"},
		183: {"Classic EuroDisco", "http://listen.di.fm/premium_high/classiceurodisco.pls"},
		350: {"IDM", "http://listen.di.fm/premium_high/idm.pls"},
		53:  {"Future Synthpop", "http://listen.di.fm/premium_high/futuresynthpop.pls"},
		117: {"Latin House", "http://listen.di.fm/premium_high/latinhouse.pls"},
		124: {"Oldschool Acid", "http://listen.di.fm/premium_high/oldschoolacid.pls"},
	},
	"jazzradio.com": map[int]*Channel{
		413: {"Modern Big Band", "http://listen.jazzradio.com/premium_high/modernbigband.pls"},
		328: {"Jazz Ballads", "http://listen.jazzradio.com/premium_high/jazzballads.pls"},
		115: {"Current Jazz", "http://listen.jazzradio.com/premium_high/currentjazz.pls"},
		84:  {"Smooth Jazz", "http://listen.jazzradio.com/premium_high/smoothjazz.pls"},
		116: {"Smooth Jazz 24'7", "http://listen.jazzradio.com/premium_high/smoothjazz247.pls"},
		112: {"Paris Café", "http://listen.jazzradio.com/premium_high/pariscafe.pls"},
		103: {"Trumpet Jazz", "http://listen.jazzradio.com/premium_high/trumpetjazz.pls"},
		199: {"Mellow Smooth Jazz", "http://listen.jazzradio.com/premium_high/mellowsmoothjazz.pls"},
		412: {"Mellow Piano Jazz", "http://listen.jazzradio.com/premium_high/mellowpianojazz.pls"},
		82:  {"Mellow Jazz", "http://listen.jazzradio.com/premium_high/mellowjazz.pls"},
		102: {"Saxophone Jazz", "http://listen.jazzradio.com/premium_high/saxophonejazz.pls"},
		78:  {"Cool Jazz", "http://listen.jazzradio.com/premium_high/cooljazz.pls"},
		75:  {"Classic Jazz", "http://listen.jazzradio.com/premium_high/classicjazz.pls"},
		113: {"Gypsy Jazz", "http://listen.jazzradio.com/premium_high/gypsyjazz.pls"},
		301: {"Dave Koz & Friends", "http://listen.jazzradio.com/premium_high/davekoz.pls"},
		170: {"Smooth Lounge", "http://listen.jazzradio.com/premium_high/smoothlounge.pls"},
		73:  {"Straight-Ahead", "http://listen.jazzradio.com/premium_high/straightahead.pls"},
		83:  {"Piano Jazz", "http://listen.jazzradio.com/premium_high/pianojazz.pls"},
		134: {"Bass Jazz", "http://listen.jazzradio.com/premium_high/bassjazz.pls"},
		81:  {"Guitar Jazz", "http://listen.jazzradio.com/premium_high/guitarjazz.pls"},
		300: {"Flamenco Jazz", "http://listen.jazzradio.com/premium_high/flamencojazz.pls"},
		135: {"Vibraphone Jazz", "http://listen.jazzradio.com/premium_high/vibraphonejazz.pls"},
		74:  {"Bebop", "http://listen.jazzradio.com/premium_high/bebop.pls"},
		77:  {"Hard Bop", "http://listen.jazzradio.com/premium_high/hardbop.pls"},
		97:  {"Piano Trios", "http://listen.jazzradio.com/premium_high/pianotrios.pls"},
		85:  {"Bossa Nova", "http://listen.jazzradio.com/premium_high/bossanova.pls"},
		196: {"Smooth Bossa Nova", "http://listen.jazzradio.com/premium_high/smoothbossanova.pls"},
		87:  {"Fusion Lounge", "http://listen.jazzradio.com/premium_high/fusionlounge.pls"},
		79:  {"Contemporary Vocals", "http://listen.jazzradio.com/premium_high/vocaljazz.pls"},
		99:  {"Smooth Vocals", "http://listen.jazzradio.com/premium_high/smoothvocals.pls"},
		96:  {"Vocal Legends", "http://listen.jazzradio.com/premium_high/vocallegends.pls"},
		86:  {"Smooth Uptempo", "http://listen.jazzradio.com/premium_high/smoothuptempo.pls"},
		76:  {"Swing & Big Band", "http://listen.jazzradio.com/premium_high/swingnbigband.pls"},
		80:  {"Latin Jazz", "http://listen.jazzradio.com/premium_high/latinjazz.pls"},
		98:  {"Timeless Classics", "http://listen.jazzradio.com/premium_high/timelessclassics.pls"},
		95:  {"Sinatra Style", "http://listen.jazzradio.com/premium_high/sinatrastyle.pls"},
		200: {"Blues Rock", "http://listen.jazzradio.com/premium_high/bluesrock.pls"},
		89:  {"Blues", "http://listen.jazzradio.com/premium_high/blues.pls"},
	},
	"radiotunes.com": map[int]*Channel{
		61:  {"Love Music", "http://listen.radiotunes.com/premium_high/lovemusic.pls"},
		21:  {"Top Hits", "http://listen.radiotunes.com/premium_high/tophits.pls"},
		20:  {"Smooth Jazz", "http://listen.radiotunes.com/premium_high/smoothjazz.pls"},
		22:  {"80s Hits", "http://listen.radiotunes.com/premium_high/the80s.pls"},
		52:  {"Solo Piano", "http://listen.radiotunes.com/premium_high/solopiano.pls"},
		18:  {"New Age", "http://listen.radiotunes.com/premium_high/newage.pls"},
		111: {"Vocal Smooth Jazz", "http://listen.radiotunes.com/premium_high/vocalsmoothjazz.pls"},
		120: {"Relaxation", "http://listen.radiotunes.com/premium_high/relaxation.pls"},
		118: {"Smooth Jazz 24'7", "http://listen.radiotunes.com/premium_high/smoothjazz247.pls"},
		46:  {"Classic Rock", "http://listen.radiotunes.com/premium_high/classicrock.pls"},
		132: {"Soft Rock", "http://listen.radiotunes.com/premium_high/softrock.pls"},
		173: {"Smooth Lounge", "http://listen.radiotunes.com/premium_high/smoothlounge.pls"},
		197: {"Café de Paris", "http://listen.radiotunes.com/premium_high/cafedeparis.pls"},
		422: {"Chill & Tropical House", "http://listen.radiotunes.com/premium_high/chillntropicalhouse.pls"},
		24:  {"70s Hits", "http://listen.radiotunes.com/premium_high/hit70s.pls"},
		297: {"Mellow Smooth Jazz", "http://listen.radiotunes.com/premium_high/mellowsmoothjazz.pls"},
		39:  {"Oldies", "http://listen.radiotunes.com/premium_high/oldies.pls"},
		109: {"Dreamscapes", "http://listen.radiotunes.com/premium_high/dreamscapes.pls"},
		17:  {"Mostly Classical", "http://listen.radiotunes.com/premium_high/classical.pls"},
		141: {"80s Rock Hits", "http://listen.radiotunes.com/premium_high/80srock.pls"},
		334: {"Lounge", "http://listen.radiotunes.com/premium_high/lounge.pls"},
		228: {"80s Dance", "http://listen.radiotunes.com/premium_high/80sdance.pls"},
		41:  {"Uptempo Smooth Jazz", "http://listen.radiotunes.com/premium_high/uptemposmoothjazz.pls"},
		358: {"00s Hits", "http://listen.radiotunes.com/premium_high/hit00s.pls"},
		188: {"Mellow Jazz", "http://listen.radiotunes.com/premium_high/mellowjazz.pls"},
		48:  {"DaTempo Lounge", "http://listen.radiotunes.com/premium_high/datempolounge.pls"},
		121: {"Vocal New Age", "http://listen.radiotunes.com/premium_high/vocalnewage.pls"},
		49:  {"Alternative Rock", "http://listen.radiotunes.com/premium_high/altrock.pls"},
		407: {"Smooth Beats", "http://listen.radiotunes.com/premium_high/smoothbeats.pls"},
		423: {"Indie Dance", "http://listen.radiotunes.com/premium_high/indiedance.pls"},
		23:  {"Roots Reggae", "http://listen.radiotunes.com/premium_high/rootsreggae.pls"},
		71:  {"Dance Hits", "http://listen.radiotunes.com/premium_high/dancehits.pls"},
		25:  {"Country", "http://listen.radiotunes.com/premium_high/country.pls"},
		119: {"Nature", "http://listen.radiotunes.com/premium_high/nature.pls"},
		54:  {"Bossa Nova", "http://listen.radiotunes.com/premium_high/bossanova.pls"},
		299: {"00s R&B", "http://listen.radiotunes.com/premium_high/00srnb.pls"},
		303: {"Meditation", "http://listen.radiotunes.com/premium_high/meditation.pls"},
		186: {"90s Hits", "http://listen.radiotunes.com/premium_high/hit90s.pls"},
		229: {"90s R&B", "http://listen.radiotunes.com/premium_high/90srnb.pls"},
		214: {"60s Hits", "http://listen.radiotunes.com/premium_high/hit60s.pls"},
		19:  {"Classical Guitar", "http://listen.radiotunes.com/premium_high/guitar.pls"},
		273: {"Old School Funk & Soul", "http://listen.radiotunes.com/premium_high/oldschoolfunknsoul.pls"},
		128: {"Modern Blues", "http://listen.radiotunes.com/premium_high/modernblues.pls"},
		27:  {"Salsa", "http://listen.radiotunes.com/premium_high/salsa.pls"},
		420: {"Romántica Latina", "http://listen.radiotunes.com/premium_high/romanticalatina.pls"},
		187: {"Smooth Bossa Nova", "http://listen.radiotunes.com/premium_high/smoothbossanova.pls"},
		298: {"Dave Koz & Friends", "http://listen.radiotunes.com/premium_high/davekoz.pls"},
		417: {"Latin Pop Hits", "http://listen.radiotunes.com/premium_high/latinpophits.pls"},
		406: {"Sleep Relaxation", "http://listen.radiotunes.com/premium_high/sleeprelaxation.pls"},
		55:  {"Piano Jazz", "http://listen.radiotunes.com/premium_high/pianojazz.pls"},
		227: {"60s Rock", "http://listen.radiotunes.com/premium_high/60srock.pls"},
		414: {"Bolero", "http://listen.radiotunes.com/premium_high/bolero.pls"},
		50:  {"Movie Soundtracks", "http://listen.radiotunes.com/premium_high/soundtracks.pls"},
		108: {"Romantica", "http://listen.radiotunes.com/premium_high/romantica.pls"},
		335: {"Vocal Chillout", "http://listen.radiotunes.com/premium_high/vocalchillout.pls"},
		43:  {"World", "http://listen.radiotunes.com/premium_high/world.pls"},
		330: {"Chillout", "http://listen.radiotunes.com/premium_high/chillout.pls"},
		336: {"Vocal Lounge", "http://listen.radiotunes.com/premium_high/vocallounge.pls"},
		343: {"Classical Period", "http://listen.radiotunes.com/premium_high/classicalperiod.pls"},
		331: {"Downtempo Lounge", "http://listen.radiotunes.com/premium_high/downtempolounge.pls"},
		305: {"Urban Pop Hits", "http://listen.radiotunes.com/premium_high/urbanpophits.pls"},
		93:  {"American Songbook", "http://listen.radiotunes.com/premium_high/americansongbook.pls"},
		51:  {"Contemporary Christian", "http://listen.radiotunes.com/premium_high/christian.pls"},
		354: {"80s Alt & New Wave", "http://listen.radiotunes.com/premium_high/80saltnnewwave.pls"},
		129: {"Metal", "http://listen.radiotunes.com/premium_high/metal.pls"},
		306: {"Relaxing Ambient Piano", "http://listen.radiotunes.com/premium_high/relaxingambientpiano.pls"},
		139: {"Pop Rock", "http://listen.radiotunes.com/premium_high/poprock.pls"},
		356: {"Blues Rock", "http://listen.radiotunes.com/premium_high/bluesrock.pls"},
		130: {"Hard Rock", "http://listen.radiotunes.com/premium_high/hardrock.pls"},
		322: {"Slow R&B", "http://listen.radiotunes.com/premium_high/slowjams.pls"},
		342: {"Baroque Period", "http://listen.radiotunes.com/premium_high/baroque.pls"},
		344: {"Mozart", "http://listen.radiotunes.com/premium_high/mozart.pls"},
		26:  {"Jazz Classics", "http://listen.radiotunes.com/premium_high/jazzclassics.pls"},
		72:  {"Bebop Jazz", "http://listen.radiotunes.com/premium_high/bebop.pls"},
		42:  {"Urban Hits", "http://listen.radiotunes.com/premium_high/urbanjamz.pls"},
		38:  {"Classic Hip-Hop", "http://listen.radiotunes.com/premium_high/classicrap.pls"},
		140: {"Club Bollywood", "http://listen.radiotunes.com/premium_high/clubbollywood.pls"},
		415: {"Cuban Lounge", "http://listen.radiotunes.com/premium_high/cubanlounge.pls"},
		94:  {"Classical Piano Trios", "http://listen.radiotunes.com/premium_high/classicalpianotrios.pls"},
		329: {"Ambient", "http://listen.radiotunes.com/premium_high/ambient.pls"},
		307: {"Disco Party", "http://listen.radiotunes.com/premium_high/discoparty.pls"},
		37:  {"Indie Rock", "http://listen.radiotunes.com/premium_high/indierock.pls"},
		131: {"Modern Rock", "http://listen.radiotunes.com/premium_high/modernrock.pls"},
		418: {"Latin Rock", "http://listen.radiotunes.com/premium_high/latinrock.pls"},
		332: {"EDM Fest", "http://listen.radiotunes.com/premium_high/edmfest.pls"},
		333: {"EuroDance", "http://listen.radiotunes.com/premium_high/eurodance.pls"},
		202: {"Classic Motown", "http://listen.radiotunes.com/premium_high/classicmotown.pls"},
		345: {"Romantic Period", "http://listen.radiotunes.com/premium_high/romantic.pls"},
		110: {"Jpop", "http://listen.radiotunes.com/premium_high/jpop.pls"},
		304: {"Reggaeton", "http://listen.radiotunes.com/premium_high/reggaeton.pls"},
		416: {"Flamenco", "http://listen.radiotunes.com/premium_high/flamenco.pls"},
		421: {"Tango", "http://listen.radiotunes.com/premium_high/tango.pls"},
		419: {"Norteña", "http://listen.radiotunes.com/premium_high/nortena.pls"},
	},
	"rockradio.com": map[int]*Channel{
		408: {"00s Rock", "http://listen.rockradio.com/premium_high/00srock.pls"},
		409: {"70s Rock", "http://listen.rockradio.com/premium_high/70srock.pls"},
		410: {"Alternative Rock", "http://listen.rockradio.com/premium_high/alternativerock.pls"},
		143: {"Classic Rock", "http://listen.rockradio.com/premium_high/classicrock.pls"},
		201: {"Blues Rock", "http://listen.rockradio.com/premium_high/bluesrock.pls"},
		189: {"Classic Metal", "http://listen.rockradio.com/premium_high/classicmetal.pls"},
		154: {"80s Rock", "http://listen.rockradio.com/premium_high/80srock.pls"},
		226: {"60s Rock", "http://listen.rockradio.com/premium_high/60srock.pls"},
		164: {"Symphonic Metal", "http://listen.rockradio.com/premium_high/symphonicmetal.pls"},
		150: {"Hard Rock", "http://listen.rockradio.com/premium_high/hardrock.pls"},
		152: {"Soft Rock", "http://listen.rockradio.com/premium_high/softrock.pls"},
		272: {"Industrial", "http://listen.rockradio.com/premium_high/industrial.pls"},
		166: {"90s Rock", "http://listen.rockradio.com/premium_high/90srock.pls"},
		160: {"Modern Rock", "http://listen.rockradio.com/premium_high/modernrock.pls"},
		192: {"Thrash Metal", "http://listen.rockradio.com/premium_high/thrashmetal.pls"},
		169: {"Hair Bands", "http://listen.rockradio.com/premium_high/hairbands.pls"},
		195: {"90s Alternative", "http://listen.rockradio.com/premium_high/alternative90s.pls"},
		167: {"Classic Hard Rock", "http://listen.rockradio.com/premium_high/classichardrock.pls"},
		153: {"Pop Rock", "http://listen.rockradio.com/premium_high/poprock.pls"},
		194: {"80s Alternative", "http://listen.rockradio.com/premium_high/alternative80s.pls"},
		191: {"Progressive Rock", "http://listen.rockradio.com/premium_high/progressiverock.pls"},
		193: {"Rock Ballads", "http://listen.rockradio.com/premium_high/rockballads.pls"},
		161: {"Punk Rock", "http://listen.rockradio.com/premium_high/punkrock.pls"},
		148: {"Metal", "http://listen.rockradio.com/premium_high/metal.pls"},
		149: {"Heavy Metal", "http://listen.rockradio.com/premium_high/heavymetal.pls"},
		222: {"Melodic Death Metal", "http://listen.rockradio.com/premium_high/melodicdeathmetal.pls"},
		287: {"Grunge", "http://listen.rockradio.com/premium_high/grunge.pls"},
		155: {"Death Metal", "http://listen.rockradio.com/premium_high/deathmetal.pls"},
		163: {"Power Metal", "http://listen.rockradio.com/premium_high/powermetal.pls"},
		165: {"Nu Metal", "http://listen.rockradio.com/premium_high/numetal.pls"},
		158: {"Metalcore", "http://listen.rockradio.com/premium_high/metalcore.pls"},
		144: {"Indie Rock", "http://listen.rockradio.com/premium_high/indierock.pls"},
		159: {"Screamo-Emo", "http://listen.rockradio.com/premium_high/screamoemo.pls"},
		157: {"Black Metal", "http://listen.rockradio.com/premium_high/blackmetal.pls"},
	},
}

Channels represents the available channels keyed by station and channel identifier.

View Source
var ErrNotFound = errors.New("tune: channel not found")

ErrNotFound represents a channel not found error.

Functions

This section is empty.

Types

type Channel

type Channel struct {
	Name     string
	Playlist string
}

Channel represents a channel on a station.

type Config

type Config struct {
	Addr      string
	ListenKey string
	PublicDir string
}

Config represents the core configuration parameters.

type Core

type Core struct {
	Config Config
	Events chan Event
	// contains filtered or unexported fields
}

Core represents the central manager of application activity.

func NewCore

func NewCore(config Config) (*Core, error)

NewCore returns a new *Core.

func (*Core) Play

func (c *Core) Play(station string, id int) error

Play stops the current channel, if any, and plays the channel identified by id.

func (*Core) Stop

func (c *Core) Stop() error

Stop stops the current channel, if any.

type Event

type Event struct {
	Station string `json:"station,omitempty"`
	Channel string `json:"channel,omitempty"`
	Track   string `json:"track,omitempty"`
}

Event represents a track change event.

Directories

Path Synopsis
cmd
tune command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL