mirror of
				https://github.com/reality/dbot.git
				synced 2025-10-31 04:37:31 +01:00 
			
		
		
		
	
						commit
						566c91a2b6
					
				
							
								
								
									
										5
									
								
								modules/radio/config.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								modules/radio/config.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| { | ||||
|     "stream": "", | ||||
|     "announce": [ { "server": "aberwiki", "name": "#dbot" } ], | ||||
|     "outputPrefix": "\u00033radio\u000f" | ||||
| } | ||||
							
								
								
									
										68
									
								
								modules/radio/radio.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								modules/radio/radio.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,68 @@ | ||||
| /** | ||||
|  * Module Name: Radio | ||||
|  * Description: Various icecast functionality. | ||||
|  */ | ||||
| 
 | ||||
| var _ = require('underscore')._, | ||||
|     icecast = require('icecast-stack'); | ||||
| 
 | ||||
| var radio = function(dbot) { | ||||
|     this.listening = false; | ||||
|     this.data = false; | ||||
|     this.stream = false; | ||||
|     this.internalAPI = { | ||||
|         'startRadio': function() { | ||||
|             var stream = icecast.createReadStream(this.config.stream); | ||||
|             this.stream = stream; | ||||
| 
 | ||||
|             stream.on('connect', function() { | ||||
|                 this.listening = true; | ||||
|             }.bind(this)); | ||||
| 
 | ||||
|             stream.on('response', function(res) { | ||||
|                 this.data = res.headers; | ||||
|                 _.each(this.config.announce, function(a) { | ||||
|                     dbot.say(a.server, a.name, dbot.t('now_online', { | ||||
|                         'name': res.headers['icy-name'], | ||||
|                         'desc': res.headers['icy-description'], | ||||
|                         'url': res.headers['icy-url'] | ||||
|                     })); | ||||
|                 }); | ||||
|             }.bind(this)); | ||||
| 
 | ||||
|             stream.on('metadata', function(metadata) { | ||||
|                 var title = icecast.parseMetadata(metadata).StreamTitle; | ||||
|                 _.each(this.config.announce, function(a) { | ||||
|                     dbot.say(a.server, a.name, dbot.t('now_playing', { | ||||
|                         'name': this.data['icy-name'], | ||||
|                         'song': title, | ||||
|                         'url': this.data['icy-url'] | ||||
|                     })); | ||||
|                 }, this); | ||||
|             }.bind(this)); | ||||
| 
 | ||||
|             stream.on('end', function() { | ||||
|                 this.stream.end(); | ||||
|                 this.listening = false; | ||||
|             }.bind(this)); | ||||
|         }.bind(this), | ||||
| 
 | ||||
|         'getRadio': function() { | ||||
|             dbot.api.timers.addTimer(20000, function() { | ||||
|                 if(this.listening == false) { | ||||
|                     this.internalAPI.startRadio(); | ||||
|                 } | ||||
|             }.bind(this)); | ||||
|         }.bind(this) | ||||
|     }; | ||||
|     this.onLoad = function() { | ||||
|         this.internalAPI.getRadio(); | ||||
|     }.bind(this); | ||||
|     this.onDestroy = function() { | ||||
|         this.stream.abort(); | ||||
|     }.bind(this); | ||||
| }; | ||||
| 
 | ||||
| exports.fetch = function(dbot) { | ||||
|     return new radio(dbot); | ||||
| }; | ||||
							
								
								
									
										8
									
								
								modules/radio/strings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								modules/radio/strings.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| { | ||||
|     "now_online": { | ||||
|         "en": "Now Online: {name} - {desc} - {url}" | ||||
|     }, | ||||
|     "now_playing": { | ||||
|         "en": "Now Playing: {name} - {song} - {url}" | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 thieson
						thieson