mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-22 23:51:41 +02:00
2018-08-28 Fred Gleason <fredg@paravelsystems.com>
* Added support for the Spinitron v2 API in the 'spinitron_plus' RLM [Pull Request #000211].
This commit is contained in:
parent
65e7559009
commit
83fa79a84d
@ -16672,3 +16672,6 @@
|
|||||||
2018-08-28 Fred Gleason <fredg@paravelsystems.com>
|
2018-08-28 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Added an optional third argument to the 'Add Next' ['PX'] RML
|
* Added an optional third argument to the 'Add Next' ['PX'] RML
|
||||||
to allow specication of the transition type.
|
to allow specication of the transition type.
|
||||||
|
2018-08-28 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Added support for the Spinitron v2 API in the 'spinitron_plus'
|
||||||
|
RLM [Pull Request #000211].
|
||||||
|
@ -18,6 +18,12 @@
|
|||||||
; 'Spinitron1' and working up consecutively
|
; 'Spinitron1' and working up consecutively
|
||||||
[Spinitron1]
|
[Spinitron1]
|
||||||
|
|
||||||
|
; MajorVersion
|
||||||
|
;
|
||||||
|
; The major version of the Spinitron API to be used. Choices are '1'
|
||||||
|
; or '2'.
|
||||||
|
MajorVersion=1
|
||||||
|
|
||||||
; Station;
|
; Station;
|
||||||
;
|
;
|
||||||
; The station to be used for the Spinitron account to which to log the
|
; The station to be used for the Spinitron account to which to log the
|
||||||
@ -27,13 +33,21 @@ Station=wxyz
|
|||||||
; Username
|
; Username
|
||||||
;
|
;
|
||||||
; Username for the Spinitron account to which to log the play-out.
|
; Username for the Spinitron account to which to log the play-out.
|
||||||
|
; (This setting is only needed for Spinitron major version 1).
|
||||||
Username=user@example.com
|
Username=user@example.com
|
||||||
|
|
||||||
; Password
|
; Password
|
||||||
;
|
;
|
||||||
; The password of the Spinitron account to which to log the play-out.
|
; The password of the Spinitron account to which to log the play-out.
|
||||||
|
; (This setting is only needed for Spinitron major version 1).
|
||||||
Password=changeme
|
Password=changeme
|
||||||
|
|
||||||
|
; APIKey
|
||||||
|
;
|
||||||
|
; API key for the Spinitron v2 account to which to log the play-out.
|
||||||
|
; (This setting is only needed for Spinitron major version 2).
|
||||||
|
APIKey=change_me_please
|
||||||
|
|
||||||
; PlaylistMode
|
; PlaylistMode
|
||||||
;
|
;
|
||||||
; Set the Spinitron playlist mode to use when sending updates.
|
; Set the Spinitron playlist mode to use when sending updates.
|
||||||
|
@ -43,9 +43,11 @@
|
|||||||
#define RLM_SPINITRON_PLUS_LOGGER_NAME "Rivendell"
|
#define RLM_SPINITRON_PLUS_LOGGER_NAME "Rivendell"
|
||||||
|
|
||||||
int rlm_spinitron_plus_devs;
|
int rlm_spinitron_plus_devs;
|
||||||
|
int *rlm_spinitron_plus_major_versions;
|
||||||
char *rlm_spinitron_plus_stations;
|
char *rlm_spinitron_plus_stations;
|
||||||
char *rlm_spinitron_plus_usernames;
|
char *rlm_spinitron_plus_usernames;
|
||||||
char *rlm_spinitron_plus_passwords;
|
char *rlm_spinitron_plus_passwords;
|
||||||
|
char *rlm_spinitron_plus_api_keys;
|
||||||
int *rlm_spinitron_plus_playlist_modes;
|
int *rlm_spinitron_plus_playlist_modes;
|
||||||
char *rlm_spinitron_plus_titles;
|
char *rlm_spinitron_plus_titles;
|
||||||
char *rlm_spinitron_plus_artists;
|
char *rlm_spinitron_plus_artists;
|
||||||
@ -171,9 +173,11 @@ void rlm_spinitron_plus_RLMStart(void *ptr,const char *arg)
|
|||||||
int i=1;
|
int i=1;
|
||||||
|
|
||||||
rlm_spinitron_plus_devs=0;
|
rlm_spinitron_plus_devs=0;
|
||||||
|
rlm_spinitron_plus_major_versions=NULL;
|
||||||
rlm_spinitron_plus_stations=NULL;
|
rlm_spinitron_plus_stations=NULL;
|
||||||
rlm_spinitron_plus_usernames=NULL;
|
rlm_spinitron_plus_usernames=NULL;
|
||||||
rlm_spinitron_plus_passwords=NULL;
|
rlm_spinitron_plus_passwords=NULL;
|
||||||
|
rlm_spinitron_plus_api_keys=NULL;
|
||||||
rlm_spinitron_plus_playlist_modes=NULL;
|
rlm_spinitron_plus_playlist_modes=NULL;
|
||||||
rlm_spinitron_plus_titles=NULL;
|
rlm_spinitron_plus_titles=NULL;
|
||||||
rlm_spinitron_plus_artists=NULL;
|
rlm_spinitron_plus_artists=NULL;
|
||||||
@ -193,6 +197,12 @@ void rlm_spinitron_plus_RLMStart(void *ptr,const char *arg)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
while(strlen(station)>0) {
|
while(strlen(station)>0) {
|
||||||
|
rlm_spinitron_plus_major_versions=realloc(rlm_spinitron_plus_major_versions,
|
||||||
|
(rlm_spinitron_plus_devs+1)*(rlm_spinitron_plus_devs+1)*sizeof(int));
|
||||||
|
strcpy(rlm_spinitron_plus_stations+256*rlm_spinitron_plus_devs,station);
|
||||||
|
rlm_spinitron_plus_major_versions[rlm_spinitron_plus_devs]=
|
||||||
|
RLMGetIntegerValue(ptr,arg,section,"MajorVersion",1);
|
||||||
|
|
||||||
rlm_spinitron_plus_stations=realloc(rlm_spinitron_plus_stations,
|
rlm_spinitron_plus_stations=realloc(rlm_spinitron_plus_stations,
|
||||||
(rlm_spinitron_plus_devs+1)*(rlm_spinitron_plus_devs+1)*256);
|
(rlm_spinitron_plus_devs+1)*(rlm_spinitron_plus_devs+1)*256);
|
||||||
strcpy(rlm_spinitron_plus_stations+256*rlm_spinitron_plus_devs,station);
|
strcpy(rlm_spinitron_plus_stations+256*rlm_spinitron_plus_devs,station);
|
||||||
@ -210,6 +220,12 @@ void rlm_spinitron_plus_RLMStart(void *ptr,const char *arg)
|
|||||||
RLMGetStringValue(ptr,arg,section,"Password",""));
|
RLMGetStringValue(ptr,arg,section,"Password",""));
|
||||||
rlm_spinitron_plus_EncodeString(rlm_spinitron_plus_passwords+256*rlm_spinitron_plus_devs,255);
|
rlm_spinitron_plus_EncodeString(rlm_spinitron_plus_passwords+256*rlm_spinitron_plus_devs,255);
|
||||||
|
|
||||||
|
rlm_spinitron_plus_api_keys=realloc(rlm_spinitron_plus_api_keys,
|
||||||
|
(rlm_spinitron_plus_devs+1)*(rlm_spinitron_plus_devs+1)*256);
|
||||||
|
strcpy(rlm_spinitron_plus_api_keys+256*rlm_spinitron_plus_devs,
|
||||||
|
RLMGetStringValue(ptr,arg,section,"APIKey",""));
|
||||||
|
rlm_spinitron_plus_EncodeString(rlm_spinitron_plus_api_keys+256*rlm_spinitron_plus_devs,255);
|
||||||
|
|
||||||
pmode=3;
|
pmode=3;
|
||||||
strcpy(mode,RLMGetStringValue(ptr,arg,section,"PlaylistMode",""));
|
strcpy(mode,RLMGetStringValue(ptr,arg,section,"PlaylistMode",""));
|
||||||
if(strcasecmp(mode,"full")==0) {
|
if(strcasecmp(mode,"full")==0) {
|
||||||
@ -275,8 +291,10 @@ void rlm_spinitron_plus_RLMStart(void *ptr,const char *arg)
|
|||||||
void rlm_spinitron_plus_RLMFree(void *ptr)
|
void rlm_spinitron_plus_RLMFree(void *ptr)
|
||||||
{
|
{
|
||||||
free(rlm_spinitron_plus_stations);
|
free(rlm_spinitron_plus_stations);
|
||||||
|
free(rlm_spinitron_plus_major_versions);
|
||||||
free(rlm_spinitron_plus_usernames);
|
free(rlm_spinitron_plus_usernames);
|
||||||
free(rlm_spinitron_plus_passwords);
|
free(rlm_spinitron_plus_passwords);
|
||||||
|
free(rlm_spinitron_plus_api_keys);
|
||||||
free(rlm_spinitron_plus_playlist_modes);
|
free(rlm_spinitron_plus_playlist_modes);
|
||||||
free(rlm_spinitron_plus_titles);
|
free(rlm_spinitron_plus_titles);
|
||||||
free(rlm_spinitron_plus_artists);
|
free(rlm_spinitron_plus_artists);
|
||||||
@ -358,20 +376,34 @@ void rlm_spinitron_plus_RLMPadDataSent(void *ptr,const struct rlm_svc *svc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(strlen(now->rlm_title)!=0) {
|
if(strlen(now->rlm_title)!=0) {
|
||||||
snprintf(msg,8192,
|
if(rlm_spinitron_plus_major_versions[i]==2) { /* Use v2 API */
|
||||||
"https://spinitron.com/member/logthis.php?un=%s&pw=%s&sn=%s&aw=%s&dn=%s&ln=%s&sc=%s&se=%s&df=%s&st=%s&sd=%d&pm=%d",
|
snprintf(msg,8192,
|
||||||
rlm_spinitron_plus_usernames+256*i,
|
"https://spinitron.com/api/spin/create-v1?access-token=%s&sn=%s&aw=%s&dn=%s&ln=%s&sc=%s&se=%s&sd=%d",
|
||||||
rlm_spinitron_plus_passwords+256*i,
|
rlm_spinitron_plus_api_keys+256*i,
|
||||||
title,
|
title,
|
||||||
artist,
|
artist,
|
||||||
album,
|
album,
|
||||||
label,
|
label,
|
||||||
composer,
|
composer,
|
||||||
notes,
|
notes,
|
||||||
RLM_SPINITRON_PLUS_LOGGER_NAME,
|
now->rlm_len/1000);
|
||||||
rlm_spinitron_plus_stations+256*i,
|
}
|
||||||
now->rlm_len/1000,
|
else { /* Default to v1 API */
|
||||||
pm);
|
snprintf(msg,8192,
|
||||||
|
"https://spinitron.com/member/logthis.php?un=%s&pw=%s&sn=%s&aw=%s&dn=%s&ln=%s&sc=%s&se=%s&df=%s&st=%s&sd=%d&pm=%d",
|
||||||
|
rlm_spinitron_plus_usernames+256*i,
|
||||||
|
rlm_spinitron_plus_passwords+256*i,
|
||||||
|
title,
|
||||||
|
artist,
|
||||||
|
album,
|
||||||
|
label,
|
||||||
|
composer,
|
||||||
|
notes,
|
||||||
|
RLM_SPINITRON_PLUS_LOGGER_NAME,
|
||||||
|
rlm_spinitron_plus_stations+256*i,
|
||||||
|
now->rlm_len/1000,
|
||||||
|
pm);
|
||||||
|
}
|
||||||
if(fork()==0) {
|
if(fork()==0) {
|
||||||
execlp("curl","curl",msg,(char *)NULL);
|
execlp("curl","curl",msg,(char *)NULL);
|
||||||
RLMLog(ptr,LOG_WARNING,"rlm_spinitron_plus: unable to execute curl(1)");
|
RLMLog(ptr,LOG_WARNING,"rlm_spinitron_plus: unable to execute curl(1)");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user