Fix object downloading
This commit is contained in:
parent
28518bb461
commit
64b2bf0b08
3 changed files with 231 additions and 2 deletions
189
@types/crunchyAndroidObject.d.ts
vendored
Normal file
189
@types/crunchyAndroidObject.d.ts
vendored
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
import { ImageType, Images, Image } from './objectInfo';
|
||||
|
||||
export interface CrunchyAndroidObject {
|
||||
__class__: string;
|
||||
__href__: string;
|
||||
__resource_key__: string;
|
||||
__links__: Actions;
|
||||
__actions__: Actions;
|
||||
total: number;
|
||||
items: AndroidObject[];
|
||||
}
|
||||
|
||||
export interface Actions {
|
||||
}
|
||||
|
||||
export interface AndroidObject {
|
||||
__class__: string;
|
||||
__href__: string;
|
||||
__links__: Links;
|
||||
__actions__: Actions;
|
||||
id: string;
|
||||
external_id: string;
|
||||
channel_id: string;
|
||||
title: string;
|
||||
description: string;
|
||||
promo_title: string;
|
||||
promo_description: string;
|
||||
type: string;
|
||||
slug: string;
|
||||
slug_title: string;
|
||||
images: Images;
|
||||
movie_listing_metadata?: MovieListingMetadata;
|
||||
movie_metadata?: MovieMetadata;
|
||||
playback?: string;
|
||||
episode_metadata?: EpisodeMetadata;
|
||||
streams_link?: string;
|
||||
season_metadata?: SeasonMetadata;
|
||||
linked_resource_key: string;
|
||||
isSelected?: boolean;
|
||||
f_num: string;
|
||||
s_num: string;
|
||||
}
|
||||
|
||||
export interface Links {
|
||||
'episode/season': LinkData;
|
||||
'episode/series': LinkData;
|
||||
resource: LinkData;
|
||||
'resource/channel': LinkData;
|
||||
streams: LinkData;
|
||||
}
|
||||
|
||||
export interface LinkData {
|
||||
href: string;
|
||||
}
|
||||
|
||||
export interface EpisodeMetadata {
|
||||
audio_locale: Locale;
|
||||
availability_ends: Date;
|
||||
availability_notes: string;
|
||||
availability_starts: Date;
|
||||
available_date: null;
|
||||
available_offline: boolean;
|
||||
closed_captions_available: boolean;
|
||||
duration_ms: number;
|
||||
eligible_region: string;
|
||||
episode: string;
|
||||
episode_air_date: Date;
|
||||
episode_number: number;
|
||||
extended_maturity_rating: Record<unknown>;
|
||||
free_available_date: Date;
|
||||
identifier: string;
|
||||
is_clip: boolean;
|
||||
is_dubbed: boolean;
|
||||
is_mature: boolean;
|
||||
is_premium_only: boolean;
|
||||
is_subbed: boolean;
|
||||
mature_blocked: boolean;
|
||||
maturity_ratings: string[];
|
||||
premium_available_date: Date;
|
||||
premium_date: null;
|
||||
season_id: string;
|
||||
season_number: number;
|
||||
season_slug_title: string;
|
||||
season_title: string;
|
||||
sequence_number: number;
|
||||
series_id: string;
|
||||
series_slug_title: string;
|
||||
series_title: string;
|
||||
subtitle_locales: Locale[];
|
||||
tenant_categories?: string[];
|
||||
upload_date: Date;
|
||||
versions: EpisodeMetadataVersion[];
|
||||
}
|
||||
|
||||
export interface MovieListingMetadata {
|
||||
availability_notes: string;
|
||||
available_date: null;
|
||||
available_offline: boolean;
|
||||
duration_ms: number;
|
||||
extended_description: string;
|
||||
extended_maturity_rating: Record<unknown>;
|
||||
first_movie_id: string;
|
||||
free_available_date: Date;
|
||||
is_dubbed: boolean;
|
||||
is_mature: boolean;
|
||||
is_premium_only: boolean;
|
||||
is_subbed: boolean;
|
||||
mature_blocked: boolean;
|
||||
maturity_ratings: string[];
|
||||
movie_release_year: number;
|
||||
premium_available_date: Date;
|
||||
premium_date: null;
|
||||
subtitle_locales: Locale[];
|
||||
tenant_categories: string[];
|
||||
}
|
||||
|
||||
export interface MovieMetadata {
|
||||
availability_notes: string;
|
||||
available_offline: boolean;
|
||||
closed_captions_available: boolean;
|
||||
duration_ms: number;
|
||||
extended_maturity_rating: Record<unknown>;
|
||||
is_dubbed: boolean;
|
||||
is_mature: boolean;
|
||||
is_premium_only: boolean;
|
||||
is_subbed: boolean;
|
||||
mature_blocked: boolean;
|
||||
maturity_ratings: string[];
|
||||
movie_listing_id: string;
|
||||
movie_listing_slug_title: string;
|
||||
movie_listing_title: string;
|
||||
}
|
||||
|
||||
export interface SeasonMetadata {
|
||||
audio_locale: Locale;
|
||||
audio_locales: Locale[];
|
||||
extended_maturity_rating: Record<unknown>;
|
||||
identifier: string;
|
||||
is_mature: boolean;
|
||||
mature_blocked: boolean;
|
||||
maturity_ratings: string[];
|
||||
season_display_number: string;
|
||||
season_sequence_number: number;
|
||||
subtitle_locales: Locale[];
|
||||
versions: SeasonMetadataVersion[];
|
||||
}
|
||||
|
||||
export interface SeasonMetadataVersion {
|
||||
audio_locale: Locale;
|
||||
guid: string;
|
||||
original: boolean;
|
||||
variant: string;
|
||||
}
|
||||
export interface SeriesMetadata {
|
||||
audio_locales: Locale[];
|
||||
availability_notes: string;
|
||||
episode_count: number;
|
||||
extended_description: string;
|
||||
extended_maturity_rating: Record<unknown>;
|
||||
is_dubbed: boolean;
|
||||
is_mature: boolean;
|
||||
is_simulcast: boolean;
|
||||
is_subbed: boolean;
|
||||
mature_blocked: boolean;
|
||||
maturity_ratings: string[];
|
||||
season_count: number;
|
||||
series_launch_year: number;
|
||||
subtitle_locales: Locale[];
|
||||
tenant_categories?: string[];
|
||||
}
|
||||
|
||||
export enum Locale {
|
||||
enUS = 'en-US',
|
||||
esLA = 'es-LA',
|
||||
es419 = 'es-419',
|
||||
esES = 'es-ES',
|
||||
ptBR = 'pt-BR',
|
||||
frFR = 'fr-FR',
|
||||
deDE = 'de-DE',
|
||||
arME = 'ar-ME',
|
||||
arSA = 'ar-SA',
|
||||
itIT = 'it-IT',
|
||||
ruRU = 'ru-RU',
|
||||
trTR = 'tr-TR',
|
||||
hiIN = 'hi-IN',
|
||||
zhCN = 'zh-CN',
|
||||
koKR = 'ko-KR',
|
||||
jaJP = 'ja-JP',
|
||||
}
|
||||
13
@types/objectInfo.d.ts
vendored
13
@types/objectInfo.d.ts
vendored
|
|
@ -7,6 +7,7 @@ export interface ObjectInfo {
|
|||
}
|
||||
|
||||
export interface CrunchyObject {
|
||||
__links__?: Links;
|
||||
channel_id: string;
|
||||
slug: string;
|
||||
images: Images;
|
||||
|
|
@ -31,6 +32,18 @@ export interface CrunchyObject {
|
|||
s_num: string;
|
||||
}
|
||||
|
||||
export interface Links {
|
||||
'episode/season': LinkData;
|
||||
'episode/series': LinkData;
|
||||
resource: LinkData;
|
||||
'resource/channel': LinkData;
|
||||
streams: LinkData;
|
||||
}
|
||||
|
||||
export interface LinkData {
|
||||
href: string;
|
||||
}
|
||||
|
||||
export interface EpisodeMetadata {
|
||||
audio_locale: Locale;
|
||||
availability_ends: Date;
|
||||
|
|
|
|||
31
crunchy.ts
31
crunchy.ts
|
|
@ -39,6 +39,7 @@ import { ServiceClass } from './@types/serviceClassInterface';
|
|||
import { CrunchyAndroidStreams } from './@types/crunchyAndroidStreams';
|
||||
import { CrunchyAndroidEpisodes, CrunchyEpisode } from './@types/crunchyAndroidEpisodes';
|
||||
import { parse } from './modules/module.transform-mpd';
|
||||
import { CrunchyAndroidObject } from './@types/crunchyAndroidObject';
|
||||
|
||||
export type sxItem = {
|
||||
language: langsData.LanguageItem,
|
||||
|
|
@ -964,7 +965,20 @@ export default class Crunchy implements ServiceClass {
|
|||
};
|
||||
|
||||
// reqs
|
||||
const objectReq = await this.req.getData(`${api.cms}/objects/${doEpsFilter.values.join(',')}?preferred_audio_language=ja-JP`, AuthHeaders);
|
||||
const objectReqOpts = [
|
||||
api.beta_cms,
|
||||
this.cmsToken.cms.bucket,
|
||||
'/objects/',
|
||||
doEpsFilter.values.join(','),
|
||||
'?',
|
||||
new URLSearchParams({
|
||||
'Policy': this.cmsToken.cms.policy,
|
||||
'Signature': this.cmsToken.cms.signature,
|
||||
'Key-Pair-Id': this.cmsToken.cms.key_pair_id,
|
||||
}),
|
||||
].join('');
|
||||
const objectReq = await this.req.getData(objectReqOpts, AuthHeaders);
|
||||
//const objectReq = await this.req.getData(`${api.cms}/objects/${doEpsFilter.values.join(',')}?preferred_audio_language=ja-JP`, AuthHeaders);
|
||||
if(!objectReq.ok || !objectReq.res){
|
||||
console.error('Objects Request FAILED!');
|
||||
if(objectReq.error && objectReq.error.res && objectReq.error.res.body){
|
||||
|
|
@ -976,7 +990,13 @@ export default class Crunchy implements ServiceClass {
|
|||
return [];
|
||||
}
|
||||
|
||||
const objectInfo = JSON.parse(objectReq.res.body) as ObjectInfo;
|
||||
//const objectInfo = JSON.parse(objectReq.res.body) as ObjectInfo;
|
||||
const objectInfoAndroid = JSON.parse(objectReq.res.body) as CrunchyAndroidObject;
|
||||
const objectInfo: ObjectInfo = {
|
||||
total: objectInfoAndroid.total,
|
||||
data: objectInfoAndroid.items,
|
||||
meta: {}
|
||||
};
|
||||
if(earlyReturn){
|
||||
return objectInfo;
|
||||
}
|
||||
|
|
@ -1041,6 +1061,13 @@ export default class Crunchy implements ServiceClass {
|
|||
}
|
||||
selectedMedia.push(epMeta);
|
||||
item.isSelected = true;
|
||||
} else if (item.__links__) {
|
||||
epMeta.data[0].playback = item.__links__.streams.href;
|
||||
if(!item.playback) {
|
||||
item.playback = item.__links__.streams.href;
|
||||
}
|
||||
selectedMedia.push(epMeta);
|
||||
item.isSelected = true;
|
||||
}
|
||||
await this.logObject(item, 2);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue