Skip to content

Commit

Permalink
Allow playing restricted series
Browse files Browse the repository at this point in the history
  • Loading branch information
zisra committed Apr 18, 2023
1 parent 745d920 commit a5a3b1e
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 32 deletions.
55 changes: 39 additions & 16 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,40 +46,63 @@ if (selectedMovie.type === 'movie') {
const { selectedSeason } = await prompts({
type: 'number',
name: 'selectedSeason',
message: `Season (1-${selectedMovie.totalSeasons})`,
message:
selectedMovie.totalSeasons === null
? 'No seasons found. Enter season number'
: `Season (1-${selectedMovie.totalSeasons})`,
min: 1,
max: selectedMovie.totalSeasons,
validate: (value) =>
(value && value > 0 && value <= selectedMovie.totalSeasons) ??
'Invalid season',
max:
selectedMovie.totalSeasons === null
? undefined
: selectedMovie.totalSeasons,
validate: (value) => (value && value > 0) ?? 'Invalid season',
});

const { episodes } = await seasonInfo({
imdbID,
season: selectedSeason,
});

const { selectedEpisode } = await prompts({
type: 'select',
name: 'selectedEpisode',
message: 'Episode',
choices: episodes.map((episode, index) => ({
title: `${index + 1}${episode.title}`,
value: episode,
})),
});
let selectedEpisode: any;
if (episodes === null) {
selectedEpisode = await prompts({
type: 'number',
name: 'selectedEpisode',
message: 'No episodes found. Enter episode number',
validate: (value) => (value && value > 0) ?? 'Invalid episode number',
});

selectedEpisode = selectedEpisode.selectedEpisode;
} else {
selectedEpisode = await prompts({
type: 'select',
name: 'selectedEpisode',
message: 'Episode',
choices: episodes.map((episode, index) => ({
title: `${index + 1}${episode.title}`,
value: episode,
})),
});

selectedEpisode = selectedEpisode.selectedEpisode;
}

selectedMovie = {
type: 'series',
title: selectedMovie.title,
year: selectedMovie.year.split('–')[0],
season: selectedSeason,
episode: episodes.map((e) => e.title).indexOf(selectedEpisode.title) + 1,
episode:
episodes === null
? selectedEpisode
: episodes.map((e) => e.title).indexOf(selectedEpisode.title) + 1,
};

console.log('\n');
console.log(
`${selectedMovie.title}${selectedMovie.year}${selectedEpisode.title}`
`${selectedMovie.title}${selectedMovie.year}${
selectedEpisode.title || `Episode ${selectedMovie.episode}`
}`
);
} catch (err) {
console.log(error(err.message));
Expand Down
2 changes: 1 addition & 1 deletion src/providers/FlixHQ.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const execute = async ({
const foundItem = searchResults.results.find((v) => {
if (v.type !== 'Movie' && v.type !== 'TV Series') return false;

return compareTitle(v.title, title) && v.releaseDate === year;
return compareTitle(v.title, title) && v.releaseDate == year;
});

if (!foundItem) {
Expand Down
2 changes: 1 addition & 1 deletion src/providers/SuperStream.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ const execute = async ({
setProgress(0.5);

const superstreamEntry = searchRes.find(
(res: any) => compareTitle(res.title, title) && res.year === Number(year)
(res: any) => compareTitle(res.title, title) && res.year == year
);

if (!superstreamEntry) {
Expand Down
26 changes: 12 additions & 14 deletions src/utils/movieInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,12 @@ export async function movieInfo({ imdbID }) {
throw new Error('No movie found with the selected IMDb ID');
}

if (type === 'series' && totalSeasons === 'N/A') {
throw new Error('No seasons found for the selected IMDb ID');
}

return {
title,
year,
type,
response,
totalSeasons: parseInt(totalSeasons),
totalSeasons: totalSeasons === 'N/A' ? null : parseInt(totalSeasons),
};
}

Expand All @@ -41,14 +37,16 @@ export async function seasonInfo({ imdbID, season }) {
}

return {
episodes: episodes.map((episode) => {
{
return {
title: episode.Title,
imdbID: episode.imdbID,
released: new Date(episode.Released).getFullYear(),
};
}
}),
episodes: episodes
? episodes.map((episode) => {
{
return {
title: episode.Title,
imdbID: episode.imdbID,
released: new Date(episode.Released).getFullYear(),
};
}
})
: null,
};
}
2 changes: 2 additions & 0 deletions src/utils/normalizeTitle.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
export function normalizeTitle(title: string): string {
return title
.replace(/the movie/i, '')
.replace(/the series/i, '')
.trim()
.toLowerCase()
.replace(/['":]/g, '')
Expand Down

0 comments on commit a5a3b1e

Please sign in to comment.