Skip to content

Commit

Permalink
Added StartPlayAlbumOrTitle
Browse files Browse the repository at this point in the history
  • Loading branch information
bschirrmeister committed Apr 2, 2023
1 parent 3772453 commit 4550558
Show file tree
Hide file tree
Showing 5 changed files with 153 additions and 1 deletion.
13 changes: 13 additions & 0 deletions AmazonSkill/IntentSchema.json
Expand Up @@ -9,6 +9,19 @@
],
"intent": "StartPlay"
},
{
"slots": [
{
"name": "{AlbumOrTitle}",
"type": "SEARCHAlbumOrTitle"
},
{
"name": "{ArtistName}",
"type": "SEARCHArtistName"
}
],
"intent": "StartPlayAlbumOrTitle"
},
{
"intent": "ResumePlay"
},
Expand Down
69 changes: 68 additions & 1 deletion AmazonSkill/Model.json
Expand Up @@ -24,6 +24,23 @@
"abspiel {Searching}"
]
},
{
"name": "StartPlayAlbumOrTitle",
"slots": [
{
"name": "AlbumOrTitle",
"type": "SEARCHAlbumOrTitle"
},
{
"name": "ArtistName",
"type": "SEARCHArtistName"
}
],
"samples": [
"spiele {AlbumOrTitle} von {ArtistName}",
"spiel {AlbumOrTitle} von {ArtistName}"
]
},
{
"name": "ResumePlay",
"slots": [],
Expand Down Expand Up @@ -114,8 +131,58 @@
}
}
]
},
{
"name": "SEARCHAlbumOrTitle",
"values": [
{
"name": {
"value": "Epica"
}
},
{
"name": {
"value": "Within Temptaion"
}
},
{
"name": {
"value": "Origa"
}
},
{
"name": {
"value": "An Cafe"
}
}
]
},
{
"name": "SEARCHArtistName",
"values": [
{
"name": {
"value": "Epica"
}
},
{
"name": {
"value": "Within Temptaion"
}
},
{
"name": {
"value": "Origa"
}
},
{
"name": {
"value": "An Cafe"
}
}
]
}
]
}
}
}
}
29 changes: 29 additions & 0 deletions radio/radio.go
Expand Up @@ -277,6 +277,35 @@ func radioHandler(echoReq *alexa.EchoRequest, echoResp *alexa.EchoResponse) {
speech := fmt.Sprintf("<speak>%s</speak>", card)
echoResp.OutputSpeechSSML(speech).Card("Network Music Player", card)
}
}
case "StartPlayAlbumOrTitle":
log.Printf("StartPlayAlbumOrTitle intent")
SEARCHAlbumOrTitle := strings.TrimSpace(echoReq.Request.Intent.Slots["AlbumOrTitle"].Value)
SEARCHArtistName := strings.TrimSpace(echoReq.Request.Intent.Slots["ArtistName"].Value)
SearchString := SEARCHAlbumOrTitle + " von " + SEARCHArtistName
log.Println("====>", SearchString)
log.Println("====>", SEARCHAlbumOrTitle, SEARCHArtistName)

if SearchString != "" {
shared.UpdateActualPlayingAlbumOrTitle(echoReq.Context.System.Device.DeviceId, SEARCHAlbumOrTitle, SEARCHArtistName)
nextTrackID := shared.GetNextTrackID(echoReq.Context.System.Device.DeviceId)
nextFileName := shared.GetTrackFileName(nextTrackID)

if nextFileName != "" {
directive := makeAudioPlayDirective(nextFileName, false, nextTrackID)
log.Println("URL:", directive.AudioItem.Stream.Url)

card := fmt.Sprintf(getRandomResponse(responses.Searching), SearchString) // ich such ja schon %s raus
speech := fmt.Sprintf("<speak>%s</speak>", card)
echoResp.OutputSpeechSSML(speech).Card("Network Music Player", card)

echoResp.Response.Directives = append(echoResp.Response.Directives, directive)
} else {
card := fmt.Sprintf(getRandomResponse(responses.CantFind), SearchString) // Ich konnte für %s absolut nix finden!
speech := fmt.Sprintf("<speak>%s</speak>", card)
echoResp.OutputSpeechSSML(speech).Card("Network Music Player", card)
}

} else {
goto AskUser
}
Expand Down
7 changes: 7 additions & 0 deletions shared/database.go
Expand Up @@ -173,6 +173,13 @@ func UpdateActualPlaying(deviceID, searching string) {
}
}

func UpdateActualPlayingAlbumOrTitle(deviceID, searchAlbumOrTitle string, searchArtist string) {
_, err := Database.Exec("CALL spUpdateActualPlayingAlbumOrTitle(?,?,?);", deviceID, searchAlbumOrTitle, searchArtist)
if err != nil {
log.Println("DB Error UpdateActualPlayingAlbumOrTitle:", err)
}
}

func GetNextTrackID(deviceID string) (TrackID int) {
isRandom := 0

Expand Down
36 changes: 36 additions & 0 deletions sql/create.sql
Expand Up @@ -239,6 +239,42 @@ BEGIN
END//
DELIMITER ;

-- Exportiere Struktur von Prozedur spUpdateActualPlayingAlbumOrTitle
DROP PROCEDURE IF EXISTS `spUpdateActualPlayingAlbumOrTitle`;
DELIMITER //
CREATE PROCEDURE `spUpdateActualPlayingAlbumOrTitle`(
IN `deviceid` VARCHAR(250),
IN `searchAlbumOrTitle` VARCHAR(500),
IN `searchArtist` VARCHAR(500)

)
READS SQL DATA
BEGIN
IF (SELECT 1 = 1 FROM DeVice WHERE DV_id = deviceid) THEN
BEGIN
SET searchAlbumOrTitle = CONCAT('%', searchAlbumOrTitle, '%');
SET searchArtist = CONCAT('%', searchArtist, '%');
DELETE FROM ActualPlaying WHERE AP_DV_id = deviceid;

DROP TABLE IF EXISTS tmppl;
CREATE TEMPORARY TABLE tmppl (`tmp_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `tmp_TKid` INT(10) UNSIGNED NOT NULL, PRIMARY KEY (`tmp_id`));

INSERT INTO tmppl
SELECT null, TracK.TK_id
FROM TracK
LEFT JOIN ArtisT ON TK_AT_id = AT_id
LEFT JOIN AlbuM ON TK_AM_id = AM_id
WHERE TK_Name LIKE searchArtist OR TK_Comment LIKE searchAlbumOrTitle OR AT_Name LIKE searchAlbumOrTitle OR AM_Name LIKE searchAlbumOrTitle
ORDER BY AT_id, AM_Index, AM_id, TK_Index, TK_id;

INSERT INTO ActualPlaying
SELECT deviceid, tmppl.tmp_TKid, tmppl.tmp_id, 0 FROM tmppl;
END;
END IF;
END//
DELIMITER ;


-- Exportiere Struktur von Tabelle TracK
DROP TABLE IF EXISTS `TracK`;
CREATE TABLE IF NOT EXISTS `TracK` (
Expand Down

0 comments on commit 4550558

Please sign in to comment.