Move date filtering into main add movie intent

This commit is contained in:
Joseph Schmitt 2016-10-30 00:13:39 -04:00
parent e63769c379
commit eaf8f70c4f
5 changed files with 65 additions and 46 deletions

View File

@ -2,15 +2,6 @@
"intents": [
{
"intent": "AddMovie",
"slots": [
{
"name": "movieName",
"type": "AMAZON.LITERAL"
}
]
},
{
"intent": "AddMovieDate",
"slots": [
{
"name": "movieName",
@ -28,6 +19,10 @@
{
"name": "movieName",
"type": "AMAZON.LITERAL"
},
{
"name": "releaseDate",
"type": "AMAZON.DATE"
}
]
},

View File

@ -5,26 +5,26 @@ AddMovie add {The Avengers|movieName}
AddMovie add {The Dark Knight|movieName}
AddMovie add {Live or Let Die|movieName}
AddMovieDate add {The Godfather|movieName} came out in {releaseDate}
AddMovieDate add {Star Wars|movieName} came out in {releaseDate}
AddMovieDate add {Star Wars Episode Four A New Hope|movieName} came out in {releaseDate}
AddMovieDate add {The Avengers|movieName} came out in {releaseDate}
AddMovieDate add {The Dark Knight|movieName} came out in {releaseDate}
AddMovieDate add {Live or Let Die|movieName} came out in {releaseDate}
AddMovie add {The Godfather|movieName} came out in {releaseDate}
AddMovie add {Star Wars|movieName} came out in {releaseDate}
AddMovie add {Star Wars Episode Four A New Hope|movieName} came out in {releaseDate}
AddMovie add {The Avengers|movieName} came out in {releaseDate}
AddMovie add {The Dark Knight|movieName} came out in {releaseDate}
AddMovie add {Live or Let Die|movieName} came out in {releaseDate}
AddMovieDate add {The Godfather|movieName} from {releaseDate}
AddMovieDate add {Star Wars|movieName} from {releaseDate}
AddMovieDate add {Star Wars Episode Four A New Hope|movieName} from {releaseDate}
AddMovieDate add {The Avengers|movieName} from {releaseDate}
AddMovieDate add {The Dark Knight|movieName} from {releaseDate}
AddMovieDate add {Live or Let Die|movieName} from {releaseDate}
AddMovie add {The Godfather|movieName} from {releaseDate}
AddMovie add {Star Wars|movieName} from {releaseDate}
AddMovie add {Star Wars Episode Four A New Hope|movieName} from {releaseDate}
AddMovie add {The Avengers|movieName} from {releaseDate}
AddMovie add {The Dark Knight|movieName} from {releaseDate}
AddMovie add {Live or Let Die|movieName} from {releaseDate}
AddMovieDate add {The Godfather|movieName} released in {releaseDate}
AddMovieDate add {Star Wars|movieName} released in {releaseDate}
AddMovieDate add {Star Wars Episode Four A New Hope|movieName} released in {releaseDate}
AddMovieDate add {The Avengers|movieName} released in {releaseDate}
AddMovieDate add {The Dark Knight|movieName} released in {releaseDate}
AddMovieDate add {Live or Let Die|movieName} released in {releaseDate}
AddMovie add {The Godfather|movieName} released in {releaseDate}
AddMovie add {Star Wars|movieName} released in {releaseDate}
AddMovie add {Star Wars Episode Four A New Hope|movieName} released in {releaseDate}
AddMovie add {The Avengers|movieName} released in {releaseDate}
AddMovie add {The Dark Knight|movieName} released in {releaseDate}
AddMovie add {Live or Let Die|movieName} released in {releaseDate}
FindMovie is {The Godfather|movieName} on the list
FindMovie is {Star Wars|movieName} on the list
@ -53,3 +53,24 @@ FindMovie if {Star Wars Episode Four A New Hope|movieName} is already
FindMovie if {The Avengers|movieName} is already
FindMovie if {The Dark Knight|movieName} is already
FindMovie if {Live or Let Die| movieName} is already
FindMovie is {The Godfather|movieName} came out in {releaseDate} on the list
FindMovie is {Star Wars|movieName} came out in {releaseDate} on the list
FindMovie is {Star Wars Episode Four A New Hope|movieName} came out in {releaseDate} on the list
FindMovie is {The Avengers|movieName} came out in {releaseDate} on the list
FindMovie is {The Dark Knight|movieName} came out in {releaseDate} on the list
FindMovie is {Live or Let Die|movieName} came out in {releaseDate} on the list
FindMovie if {The Godfather|movieName} from {releaseDate} is on the list
FindMovie if {Star Wars|movieName} from {releaseDate} is on the list
FindMovie if {Star Wars Episode Four A New Hope|movieName} from {releaseDate} is on the list
FindMovie if {The Avengers|movieName} from {releaseDate} is on the list
FindMovie if {The Dark Knight|movieName} from {releaseDate} is on the list
FindMovie if {Live or Let Die|movieName} from {releaseDate} is on the list
FindMovie is {The Godfather|movieName} released in {releaseDate} already
FindMovie is {Star Wars|movieName} released in {releaseDate} already
FindMovie is {Star Wars Episode Four A New Hope|movieName} released in {releaseDate} already
FindMovie is {The Avengers|movieName} released in {releaseDate} already
FindMovie is {The Dark Knight|movieName} released in {releaseDate} already
FindMovie is {Live or Let Die|movieName} released in {releaseDate} already

View File

@ -5,7 +5,8 @@ import CouchPotato from 'node-couchpotato';
import {
buildPrompt,
sendSearchResponse,
formatSearchResults
formatSearchResults,
parseDate
} from './utils.js';
import {
@ -57,23 +58,12 @@ export function handleFindMovieIntent(req, resp) {
export function handleAddMovieIntent(req, resp) {
const movieName = req.slot('movieName');
cp.movie.search(movieName, NUM_RESULTS).then(function (movies) {
movies = formatSearchResults(movies);
sendSearchResponse(movies, movieName, resp);
});
//Async response
return false;
}
export function handleAddMovieDateIntent(req, resp) {
const movieName = req.slot('movieName');
const releaseDate = new Date(req.slot('releaseDate')).getUTCFullYear();
const releaseDate = parseDate(req.slot('releaseDate'));
const filterFn = (movie) => movie.year === releaseDate.year;
// Grab more results since we'll end up filtering by date
cp.movie.search(movieName, NUM_RESULTS * 2).then(function (movies) {
movies = formatSearchResults(movies).filter((movie) => movie.year == releaseDate);
movies = formatSearchResults(movies, releaseDate ? filterFn : undefined);
sendSearchResponse(movies, movieName, resp);
});

View File

@ -5,7 +5,6 @@ import Alexa from 'alexa-app';
import handleLaunchIntent, {
handleFindMovieIntent,
handleAddMovieIntent,
handleAddMovieDateIntent,
handleYesIntent,
handleNoIntent,
handleCancelIntent,
@ -17,7 +16,6 @@ const app = new Alexa.app('couchPotato');
app.launch(handleLaunchIntent);
app.intent('FindMovie', handleFindMovieIntent);
app.intent('AddMovie', handleAddMovieIntent);
app.intent('AddMovieDate', handleAddMovieDateIntent);
app.intent('AMAZON.YesIntent', handleYesIntent);
app.intent('AMAZON.NoIntent', handleNoIntent);
app.intent('AMAZON.CancelIntent', handleCancelIntent);

View File

@ -29,7 +29,7 @@ export function sendSearchResponse(movies, movieName, resp) {
.send();
}
export function formatSearchResults(movies) {
export function formatSearchResults(movies, filterFn = () => { return true }) {
if (movies) {
return movies.map((movie) => {
return {
@ -39,8 +39,23 @@ export function formatSearchResults(movies) {
titles: movie.titles,
imdb: movie.imdb
}
});
}).filter(filterFn);
}
return [];
}
export function parseDate(dateStr) {
if (!dateStr) {
return null;
}
const parts = dateStr.split('-');
const date = new Date(dateStr);
return {
year: date.getUTCFullYear(),
month: parts.length > 1 ? date.getUTCMonth() + 1 : null,
date: parts.length > 2 ? date.getUTCDate() + 1 : null
};
}