Documentation ¶
Index ¶
- func StandardHeaders() http.Header
- type Client
- func (c Client) PlaybackInformation(id string) (p PlaybackInformation, err error)
- func (c Client) Playlist(sessionKey int, eabID string) (p Playlist, err error)
- func (c Client) Search(query string) (s SearchResults, err error)
- func (c Client) Season(id string, season int) (s Season, err error)
- func (c Client) ServerConfig() (co Config, err error)
- type Config
- type PlaybackInformation
- type Playlist
- type PlaylistRequest
- type PlaylistRequestAudio
- type PlaylistRequestCodecs
- type PlaylistRequestDRM
- type PlaylistRequestEncryption
- type PlaylistRequestManifest
- type PlaylistRequestPlayback
- type PlaylistRequestSegments
- type PlaylistRequestValues
- type PlaylistRequestVideo
- type SearchResults
- type Season
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func StandardHeaders ¶
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func NewClient ¶
Returns a Client object that will use the provided Hulu session cookie to interact with the Hulu API.
func NewDefaultClient ¶
Returns a Client object using a default HTTP client with a timeout of 10s.
func (Client) PlaybackInformation ¶
func (c Client) PlaybackInformation(id string) (p PlaybackInformation, err error)
This allows us to get the EAB ID for a given plain ID. The EAB ID is necessary to call Playlist.
func (Client) Playlist ¶
Playlist returns information containing the Widevine license endpoint, the MPD file URL, and information relating to subtitles (Hulu calls them transcripts).
func (Client) Search ¶
func (c Client) Search(query string) (s SearchResults, err error)
Queries the Hulu entity search API endpoint for shows and movies. This can return content that you do not have the right subscription for (like stuff requiring an HBO subscription) so be mindful of that.
func (Client) Season ¶
Returns the season information containing the episode list in a given season for a given show.
func (Client) ServerConfig ¶
The /config endpoint returns a large hex encoded string. This string then has to be decoded using a hardcoded key from Hulu. The decoded data is JSON containing a bunch of configuration options for the player. More importantly, it contains the KeyID field which is needed to call Playlist.
type Config ¶
type Config struct { PassThroughQos string `json:"pass_through_qos"` Kinko string `json:"kinko"` PackageID int `json:"package_id"` API string `json:"api"` QosBeacon string `json:"qos_beacon"` NielsenAppName string `json:"nielsen_app_name"` FeedbackCategory int `json:"feedbackCategory"` PlusPlanID int `json:"plus_plan_id"` FirehoseEndpoint string `json:"firehose_endpoint"` PbAutoresumeTimeout int `json:"pb_autoresume_timeout"` SashProductDescription string `json:"sash_product_description"` PlaylistEndpoint string `json:"playlist_endpoint"` NielsenAppID string `json:"nielsen_app_id"` PackageGroupID int `json:"package_group_id"` FlexActionEndpoint string `json:"flex_action_endpoint"` PlaybackRequestTimeout int `json:"playback_request_timeout"` Asset string `json:"asset"` NoahSignupExceptionMessage []string `json:"noah_signup_exception_message"` PbInterval int `json:"pb_interval"` PackageGroupIDFrontPorch int `json:"package_group_id_front_porch"` FlagsContext struct { FlagStateValid bool `json:"flag_state_valid"` UILink string `json:"ui_link"` Key string `json:"key"` SealTokenState string `json:"seal_token_state"` } `json:"flags_context"` SashProductTitle string `json:"sash_product_title"` TrackTiersDeepPlayerState int `json:"track_tiers_deep_player_state"` UserAccountURL string `json:"userAccountURL"` Pgid int `json:"pgid"` GeokResponse string `json:"geok_response"` UserInfoURL string `json:"user_info_url"` ChangePlanURL string `json:"changePlanURL"` Profiles struct { PromptAfterIdleMs int `json:"prompt_after_idle_ms"` } `json:"profiles"` AutoplayIdleTimeout int `json:"autoplay_idle_timeout"` NielsenSfCode string `json:"nielsen_sf_code"` PlusLandingURL string `json:"plusLandingURL"` NielsenAppVersion string `json:"nielsen_app_version"` PlayerProgressReportInterval int `json:"player_progress_report_interval"` ProductInstrumentationV2 struct { MetricsAgent struct { Endpoint string `json:"endpoint"` MaxHitRetries int `json:"max_hit_retries"` SamplingRatios struct { ServiceCall float64 `json:"service_call"` } `json:"sampling_ratios"` MsPerEvent int `json:"ms_per_event"` Enabled bool `json:"enabled"` MaxHitQueueMs int `json:"max_hit_queue_ms"` EventFilterConfig struct { } `json:"event_filter_config"` OnlineAssetMaxBeaconQueueMs int `json:"online_asset_max_beacon_queue_ms"` DownloadedAssetMaxBeaconQueueMs int `json:"downloaded_asset_max_beacon_queue_ms"` EventWhitelist []string `json:"event_whitelist"` NonInteractiveEvents []string `json:"non_interactive_events"` BucketSize int `json:"bucket_size"` } `json:"metrics_agent"` ConvivaAgent struct { FatalErrors []string `json:"fatal_errors"` Staging bool `json:"staging"` Token string `json:"token"` Enabled bool `json:"enabled"` GatewayURL string `json:"gateway_url"` } `json:"conviva_agent"` MetricsTracker struct { } `json:"metrics_tracker"` RateLimiting struct { SegmentDownloadHit int `json:"segment_download_hit"` } `json:"rate_limiting"` AdobeAgent struct { AppMeasurementTrackingServer string `json:"app_measurement_tracking_server"` VisitorMcid string `json:"visitor_mcid"` Enabled bool `json:"enabled"` AppMeasurementRsid string `json:"app_measurement_rsid"` VisitorTrackingServer string `json:"visitor_tracking_server"` HeartbeatTrackingServer string `json:"heartbeat_tracking_server"` } `json:"adobe_agent"` MoatAgent struct { Enabled bool `json:"enabled"` } `json:"moat_agent"` AdobeAgentV2 struct { AppMeasurementTrackingServer string `json:"app_measurement_tracking_server"` VisitorMcid string `json:"visitor_mcid"` Enabled bool `json:"enabled"` AppMeasurementRsid string `json:"app_measurement_rsid"` VisitorTrackingServer string `json:"visitor_tracking_server"` HeartbeatTrackingServer string `json:"heartbeat_tracking_server"` } `json:"adobe_agent_v2"` } `json:"product_instrumentation_v2"` FeedbackURL string `json:"feedbackURL"` IsAnonProxy bool `json:"is_anon_proxy"` NielsenEnabled string `json:"nielsen_enabled"` EurekaNamespace string `json:"eureka_namespace"` ReportGeocheckURL string `json:"reportGeocheckURL"` PbTracker string `json:"pb_tracker"` MetricsAgent struct { MaxBatchesBuffered int `json:"max_batches_buffered"` MaxBatchSize int `json:"max_batch_size"` Enabled bool `json:"enabled"` EventFilterConfig struct { ServiceCall struct { EventRules []struct { RuleType string `json:"rule_type"` RuleFilter struct { Type string `json:"type,omitempty"` Dimension string `json:"dimension,omitempty"` Value string `json:"value,omitempty"` Filters []struct { Type string `json:"type,omitempty"` Dimension string `json:"dimension,omitempty"` Value string `json:"value,omitempty"` } `json:"filters,omitempty"` } `json:"rule_filter,omitempty"` } `json:"event_rules"` } `json:"service_call"` Log struct { EventRules []struct { RuleType string `json:"rule_type"` RuleFilter struct { Filter struct { Type string `json:"type"` Filters []struct { Type string `json:"type"` Dimension string `json:"dimension"` Value string `json:"value"` } `json:"filters"` } `json:"filter"` Type string `json:"type"` } `json:"rule_filter"` } `json:"event_rules"` } `json:"log"` } `json:"event_filter_config"` Endpoint string `json:"endpoint"` FlushInterval int `json:"flush_interval"` } `json:"metrics_agent"` Iball string `json:"iball"` HuluMbr string `json:"hulu_mbr"` NoahSignupExceptionShows []struct { ID int `json:"id"` Title string `json:"title"` } `json:"noah_signup_exception_shows"` BeaconConfig string `json:"beacon_config"` Sapi string `json:"sapi"` Csel string `json:"csel"` ProfileBitrates []int `json:"profile_bitrates"` PlusLearnMoreURL string `json:"plusLearnMoreURL"` NoahProductDescription string `json:"noah_product_description"` SauronAccessToken string `json:"sauron_access_token"` EurekaApplicationID string `json:"eureka_application_id"` GeokLocation string `json:"geok_location"` PlusInviteURL string `json:"plusInviteURL"` HothHost string `json:"hoth_host"` PlaybackRequestRetries int `json:"playback_request_retries"` BadgingConfig []struct { Text string `json:"text"` State string `json:"state"` Style string `json:"style"` } `json:"badging_config"` AdServer string `json:"ad_server"` RtBeacon string `json:"rt_beacon"` EndpointUrls struct { PlaylistV4 string `json:"playlist_v4"` PlaylistV5 string `json:"playlist_v5"` PlaylistV6 string `json:"playlist_v6"` UserStateV5 string `json:"user_state_v5"` WatchDownloadV1 string `json:"watch_download_v1"` DvrRecordingsV1 string `json:"dvr_recordings_v1"` UserV1 string `json:"user_v1"` FlexActionV1 string `json:"flex_action_v1"` BrowseV5 string `json:"browse_v5"` UserBookmarksV1 string `json:"user_bookmarks_v1"` GuideV0 string `json:"guide_v0"` UserTastesV5 string `json:"user_tastes_v5"` VortexV0 string `json:"vortex_v0"` ConvivaV0 string `json:"conviva_v0"` DvrRecordingSettingsV1 string `json:"dvr_recording_settings_v1"` DvrV1 string `json:"dvr_v1"` ConfigV0 string `json:"config_v0"` EmuV0 string `json:"emu_v0"` SauronV1 string `json:"sauron_v1"` PlaybackFeaturesV0 string `json:"playback_features_v0"` OfflinePlaylistV1 string `json:"offline_playlist_v1"` AuthV1 string `json:"auth_v1"` AuthV2 string `json:"auth_v2"` OnboardingV5 string `json:"onboarding_v5"` AuthAppleAuthnRequestV0 string `json:"auth_apple_authn_request_v0"` GlobalNavV1 string `json:"global_nav_v1"` } `json:"endpoint_urls"` IapGracefulDegradationEnabled bool `json:"iap_graceful_degradation_enabled"` KeyExpiration int `json:"key_expiration"` Beacon string `json:"beacon"` Key string `json:"key"` EurekaApplicationName string `json:"eureka_application_name"` DeviceID int `json:"device_id"` PackageIDFrontPorch int `json:"package_id_front_porch"` PlaybackFeaturesEndpoint string `json:"playback_features_endpoint"` NoahSignupExceptionURL string `json:"noah_signup_exception_url"` ExpirationNoticeHours int `json:"expiration_notice_hours"` ForgotPasswordURL string `json:"forgotPasswordURL"` SauronEndpoint string `json:"sauron_endpoint"` PassThroughMetric string `json:"pass_through_metric"` BanyaSec string `json:"banya_sec"` Nydus string `json:"nydus"` Flags struct { HuluClientStandardPromptTheme bool `json:"hulu-client-standard-prompt-theme"` HuluClientTwoFactorVerify bool `json:"hulu-client-two-factor-verify"` HuluClientGatewayDeviceRanking bool `json:"hulu-client-gateway-device-ranking"` HuluWebDemoPlayerVersion struct { HitchMobilePlaybackProdHuluCom string `json:"hitch-mobile-playback.prod.hulu.com"` CoviewingProdHuluCom string `json:"coviewing.prod.hulu.com"` EndcardProdHuluCom string `json:"endcard.prod.hulu.com"` LocalhostProdHuluCom string `json:"localhost.prod.hulu.com"` OneplayerProdHuluCom string `json:"oneplayer.prod.hulu.com"` DevelopProdHuluCom string `json:"develop.prod.hulu.com"` } `json:"hulu-web-demo-player-version"` HuluWebChromecastSdkPlayerVersion struct { Player string `json:"player"` Options struct { MultiKey bool `json:"multi-key"` Hdr bool `json:"hdr"` Touchstone bool `json:"touchstone"` } `json:"options"` Sdk string `json:"sdk"` } `json:"hulu-web-chromecast-sdk-player-version"` HuluClientRokuInstantSignupEnabled bool `json:"hulu-client-roku-instant-signup-enabled"` HuluClientEndCardFg1 bool `json:"hulu-client-end-card-fg1"` HuluClientPinProtectionEnabled bool `json:"hulu-client-pin-protection-enabled"` HuluClientPerformanceTracking bool `json:"hulu-client-performance-tracking"` HuluWebSmokeSitePlayerVersion struct { Nonsub string `json:"nonsub"` Sub string `json:"sub"` } `json:"hulu-web-smoke-site-player-version"` HuluWebSmokeChromecastSdkPlayerVersion struct { Player string `json:"player"` Options struct { MultipleKey bool `json:"multiple-key"` MultiKey bool `json:"multi-key"` Touchstone bool `json:"touchstone"` } `json:"options"` Sdk string `json:"sdk"` } `json:"hulu-web-smoke-chromecast-sdk-player-version"` HuluClientNeverBlockSvodEnabled bool `json:"hulu-client-never-block-svod-enabled"` HuluClientUpdatedLocationPrompt bool `json:"hulu-client-updated-location-prompt"` HuluClientFlexWelcomeEnabled bool `json:"hulu-client-flex-welcome-enabled"` HuluClientEventPurchaseEnabled bool `json:"hulu-client-event-purchase-enabled"` HuluWebDevelopProdSitePlayerOptions struct { CreditEndCardDuration string `json:"credit_end_card_duration"` SkipButtonDuration string `json:"skip_button_duration"` EnablePinchZoom bool `json:"enable_pinch_zoom"` EnabledAdobeAgent bool `json:"enabled_adobe_agent"` EnabledQueuedSeek bool `json:"enabled_queued_seek"` } `json:"hulu-web-develop-prod-site-player-options"` HuluClientExperienceBrandedPageThemeSupport string `json:"hulu-client-experience-branded-page-theme-support"` HuluClientSignupOnDeviceEnabled bool `json:"hulu-client-signup-on-device-enabled"` HuluClientNonNumericSeasons bool `json:"hulu-client-non-numeric-seasons"` HuluClientFlexTimeoutsMs int `json:"hulu-client-flex-timeouts-ms"` HuluClientDvrRecordingsGroups bool `json:"hulu-client-dvr-recordings-groups"` HuluClientPlayerBasicsFg1 bool `json:"hulu-client-player-basics-fg-1"` HuluClientEventPurchasePollingTimeout int `json:"hulu-client-event-purchase-polling-timeout"` HuluClientNewDvrFeatures bool `json:"hulu-client-new-dvr-features"` HuluClientFeatureMultikey bool `json:"hulu-client-feature-multikey"` HuluClientPostPurchaseCollectionID int `json:"hulu-client-post-purchase-collection-id"` HuluClientPlanSelectExtraCopy struct { ShowExtraCopy bool `json:"showExtraCopy"` } `json:"hulu-client-plan-select-extra-copy"` HuluWebSmokeChromecastPlayerOptions struct { Touchstone bool `json:"touchstone"` } `json:"hulu-web-smoke-chromecast-player-options"` HuluClientCompassViewAllEnabled bool `json:"hulu-client-compass-view-all-enabled"` HuluClientForcedDcsCapabilities []string `json:"hulu-client-forced-dcs-capabilities"` HuluWebSitePlayerOptions struct { CreditEndCardDuration string `json:"credit_end_card_duration"` EnabledBrightline bool `json:"enabled_brightline"` EnabledAdobeAgent bool `json:"enabled_adobe_agent"` EnabledQueuedSeek bool `json:"enabled_queued_seek"` } `json:"hulu-web-site-player-options"` HuluClientInAppAccountManagementAddOnsEnabled bool `json:"hulu-client-in-app-account-management-add-ons-enabled"` HuluClientCompassEnabled bool `json:"hulu-client-compass-enabled"` HuluClientFeaturePxsSurveyEnabled bool `json:"hulu-client-feature-pxs-survey-enabled"` HuluClientTrailheadBannerTheme bool `json:"hulu-client-trailhead-banner-theme"` HuluClientAvMetadataBadgingEnabled bool `json:"hulu-client-av-metadata-badging-enabled"` HuluClientIdleTimeMs int `json:"hulu-client-idle-time-ms"` HuluWebDevelopProdSitePlayerVersion struct { Nonsub string `json:"nonsub"` Sub string `json:"sub"` } `json:"hulu-web-develop-prod-site-player-version"` HuluClientPlayerProgressReportInterval int `json:"hulu-client-player-progress-report-interval"` HuluClientDeviceTokenLoggingEnabled bool `json:"hulu-client-device-token-logging-enabled"` HuluClientInAppAccountManagementEnabled bool `json:"hulu-client-in-app-account-management-enabled"` HuluClientEventPurchaseIdentityVerificationPollingInterval int `json:"hulu-client-event-purchase-identity-verification-polling-interval"` HuluClientCheckProgramRecordability bool `json:"hulu-client-check-program-recordability"` HuluClientAutoAccountLinkEnabled bool `json:"hulu-client-auto-account-link-enabled"` HuluWebSmokeSitePlayerOptions struct { CreditEndCardDuration string `json:"credit_end_card_duration"` EnabledAdobeAgent bool `json:"enabled_adobe_agent"` EnabledQueuedSeek bool `json:"enabled_queued_seek"` } `json:"hulu-web-smoke-site-player-options"` HuluClientFliptray2 bool `json:"hulu-client-fliptray-2"` HuluClientOneplayer bool `json:"hulu-client-oneplayer"` HuluClientFeaturePxsSurveyConfig struct { PxsShowPercentage float64 `json:"pxs_show_percentage"` PxsAutoDismissSeconds int `json:"pxs_auto_dismiss_seconds"` PxsShowFrequencyDays int `json:"pxs_show_frequency_days"` } `json:"hulu-client-feature-pxs-survey-config"` HuluWebBrowseFlags struct { EditorialActionsEnabled bool `json:"editorialActionsEnabled"` ContextMenuActionV2Enabled bool `json:"contextMenuActionV2Enabled"` VideoTileEnabled bool `json:"videoTileEnabled"` EnableWebp bool `json:"enableWebp"` VariationName string `json:"variationName"` } `json:"hulu-web-browse-flags"` HuluClientDetailsCastAndCrew bool `json:"hulu-client-details-cast-and-crew"` HuluClientPlanSelectChartEnabled bool `json:"hulu-client-plan-select-chart-enabled"` HuluClientEndpointURLConfiguration bool `json:"hulu-client-endpoint-url-configuration"` HuluClientDvrMsbd bool `json:"hulu-client-dvr-msbd"` HuluClientMyStuffDecoupled bool `json:"hulu-client-my-stuff-decoupled"` HuluWebSitePlayerVersion struct { Nonsub string `json:"nonsub"` Sub string `json:"sub"` } `json:"hulu-web-site-player-version"` HuluClientTealiumEventsEnabled bool `json:"hulu-client-tealium-events-enabled"` HuluWebChromecastPlayerOptions struct { OverrideAdUnits string `json:"overrideAdUnits"` Touchstone bool `json:"touchstone"` } `json:"hulu-web-chromecast-player-options"` HuluClientEventPurchasePollingBaseInterval int `json:"hulu-client-event-purchase-polling-base-interval"` HuluClientBrandedCollections bool `json:"hulu-client-branded-collections"` HuluClientSignupOnWebEnabled bool `json:"hulu-client-signup-on-web-enabled"` HuluClientCompassSitemapEnabled bool `json:"hulu-client-compass-sitemap-enabled"` HuluClientAdobeMetrics bool `json:"hulu-client-adobe-metrics"` HuluClientGatewayAdLegalDisclaimer string `json:"hulu-client-gateway-ad-legal-disclaimer"` HuluClientFeatureChannelFlipping bool `json:"hulu-client-feature-channel-flipping"` HuluClientFeaturePlaybackCdnSorting bool `json:"hulu-client-feature-playback-cdn-sorting"` HuluClientLoginMfa bool `json:"hulu-client-login-mfa"` HuluClientLinksharingAppsflyer bool `json:"hulu-client-linksharing-appsflyer"` HuluClientFeatureHdr bool `json:"hulu-client-feature-hdr"` } `json:"flags"` NoahProductTitle string `json:"noah_product_title"` CriterionCollection int `json:"criterion_collection"` KeyID int `json:"key_id"` }
type PlaybackInformation ¶
type PlaybackInformation struct { Type string `json:"_type"` Browse struct { TargetType string `json:"target_type"` TargetID string `json:"target_id"` TargetTheme string `json:"target_theme"` Params struct { } `json:"params"` Type string `json:"type"` } `json:"browse"` EabID string `json:"eab_id"` Href string `json:"href"` ID string `json:"id"` HrefType string `json:"href_type"` RestrictionLevel string `json:"restriction_level"` }
type Playlist ¶
type Playlist struct { UseManifestBreaks bool `json:"use_manifest_breaks"` Adstate string `json:"adstate"` Breaks []interface{} `json:"breaks"` ContentEabID string `json:"content_eab_id"` TranscriptsUrls struct { Smi struct { En string `json:"en"` } `json:"smi"` Webvtt struct { En string `json:"en"` } `json:"webvtt"` Ttml struct { En string `json:"en"` } `json:"ttml"` } `json:"transcripts_urls"` TranscriptsEncryptionKey string `json:"transcripts_encryption_key"` VideoMetadata struct { AspectRatio string `json:"aspect_ratio"` EndCreditsTime string `json:"end_credits_time"` FrameRate int `json:"frame_rate"` HasBug string `json:"has_bug"` HasCaptions bool `json:"has_captions"` HasNetworkPreRoll bool `json:"has_network_pre_roll"` Interstitials string `json:"interstitials"` Language string `json:"language"` Length int `json:"length"` Segments string `json:"segments"` ID int `json:"id"` AssetID int `json:"asset_id"` Markers interface{} `json:"markers"` TranscriptsDefaultOn bool `json:"transcripts_default_on"` RatingBugBig string `json:"rating_bug_big"` RatingBugSmall string `json:"rating_bug_small"` } `json:"video_metadata"` TranscriptsEncryptionIv string `json:"transcripts_encryption_iv"` Breakhash string `json:"breakhash"` AdBreakTimes []int `json:"ad_break_times"` TranscriptsDefaultOn bool `json:"transcripts_default_on"` ResumePosition int `json:"resume_position"` RecordingOffset int `json:"recording_offset"` InitialPosition int `json:"initial_position"` DashPrServer string `json:"dash_pr_server"` WvServer string `json:"wv_server"` AudioTracks []struct { Language string `json:"language"` Role string `json:"role"` CodecsString string `json:"codecs_string"` Channels int `json:"channels"` } `json:"audio_tracks"` MbrManifest string `json:"mbr_manifest"` StreamURL string `json:"stream_url"` ThumbnailEndpoint string `json:"thumbnail_endpoint"` AssetPlaybackType string `json:"asset_playback_type"` SauronID string `json:"sauron_id"` ViewTTLMillis int `json:"view_ttl_millis"` SauronToken string `json:"sauron_token"` SauronTokenTTL int `json:"sauron_token_ttl"` SauronTokenTTLMs int `json:"sauron_token_ttl_ms"` }
type PlaylistRequest ¶
type PlaylistRequest struct { DeviceIdentifier string `json:"device_identifier"` DeejayDeviceID int `json:"deejay_device_id"` Version int `json:"version"` AllCdn bool `json:"all_cdn"` ContentEabID string `json:"content_eab_id"` Region string `json:"region"` XlinkSupport bool `json:"xlink_support"` DeviceAdID string `json:"device_ad_id"` LimitAdTracking bool `json:"limit_ad_tracking"` IgnoreKidsBlock bool `json:"ignore_kids_block"` Language string `json:"language"` GUID string `json:"guid"` Rv int `json:"rv"` Kv int `json:"kv"` Unencrypted bool `json:"unencrypted"` IncludeT2RevenueBeacon string `json:"include_t2_revenue_beacon"` CpSessionID string `json:"cp_session_id"` InterfaceVersion string `json:"interface_version"` NetworkMode string `json:"network_mode"` PlayIntent string `json:"play_intent"` Playback PlaylistRequestPlayback `json:"playback"` }
type PlaylistRequestAudio ¶
type PlaylistRequestAudio struct {
Codecs PlaylistRequestCodecs `json:"codecs"`
}
type PlaylistRequestCodecs ¶
type PlaylistRequestCodecs struct { Values []PlaylistRequestValues `json:"values"` SelectionMode string `json:"selection_mode"` }
type PlaylistRequestDRM ¶
type PlaylistRequestDRM struct { Values []PlaylistRequestValues `json:"values"` SelectionMode string `json:"selection_mode"` }
type PlaylistRequestManifest ¶
type PlaylistRequestManifest struct { Type string `json:"type"` HTTPS bool `json:"https"` MultipleCdns bool `json:"multiple_cdns"` PatchUpdates bool `json:"patch_updates"` HuluTypes bool `json:"hulu_types"` LiveDai bool `json:"live_dai"` MultiplePeriods bool `json:"multiple_periods"` Xlink bool `json:"xlink"` SecondaryAudio bool `json:"secondary_audio"` LiveFragmentDelay int `json:"live_fragment_delay"` }
type PlaylistRequestPlayback ¶
type PlaylistRequestPlayback struct { Version int `json:"version"` Video PlaylistRequestVideo `json:"video"` Audio PlaylistRequestAudio `json:"audio"` DRM PlaylistRequestDRM `json:"drm"` Manifest PlaylistRequestManifest `json:"manifest"` Segments PlaylistRequestSegments `json:"segments"` }
type PlaylistRequestSegments ¶
type PlaylistRequestSegments struct { Values []PlaylistRequestValues `json:"values"` SelectionMode string `json:"selection_mode"` }
type PlaylistRequestValues ¶
type PlaylistRequestValues struct { Type string `json:"type,omitempty"` Profile string `json:"profile,omitempty"` Level string `json:"level,omitempty"` Framerate int `json:"framerate,omitempty"` Version string `json:"version,omitempty"` SecurityLevel string `json:"security_level,omitempty"` Encryption *PlaylistRequestEncryption `json:"encryption,omitempty"` HTTPS bool `json:"https,omitempty"` }
type PlaylistRequestVideo ¶
type PlaylistRequestVideo struct {
Codecs PlaylistRequestCodecs `json:"codecs"`
}
type SearchResults ¶
type SearchResults struct { Groups []struct { Category string `json:"category"` Results []struct { Type string `json:"_type"` MetricsInfo struct { TargetID string `json:"target_id"` TargetType string `json:"target_type"` TargetName string `json:"target_name"` SelectionTrackingID string `json:"selection_tracking_id"` } `json:"metrics_info"` Personalization struct { BowieContext string `json:"bowie_context"` Eab string `json:"eab"` } `json:"personalization"` DeviceContextFailure bool `json:"device_context_failure"` ViewTemplate string `json:"view_template"` Visuals struct { Artwork struct { Type string `json:"_type"` Horizontal struct { Type string `json:"_type"` ArtworkType string `json:"artwork_type"` Image struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageID string `json:"image_id"` } `json:"image"` Text string `json:"text"` } `json:"horizontal"` } `json:"artwork"` Headline struct { Text string `json:"text"` Index [][]int `json:"index"` } `json:"headline"` Body struct { Text string `json:"text"` Index [][]int `json:"index"` } `json:"body"` ActionText string `json:"action_text"` PrimaryBranding struct { ID string `json:"id"` Name string `json:"name"` Artwork struct { BrandWatermarkBottomRight struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"brand.watermark.bottom.right"` BrandLogoBottomRight struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"brand.logo.bottom.right"` } `json:"artwork"` } `json:"primary_branding"` ShortSubtitle struct { Text string `json:"text"` Index []interface{} `json:"index"` } `json:"short_subtitle"` } `json:"visuals"` Actions struct { Browse struct { TargetType string `json:"target_type"` TargetID string `json:"target_id"` TargetName string `json:"target_name"` TargetTheme string `json:"target_theme"` Params struct { } `json:"params"` Href string `json:"href"` BrowseTheme string `json:"browse_theme"` MetricsInfo struct { ActionType string `json:"action_type"` TargetID string `json:"target_id"` TargetType string `json:"target_type"` TargetDisplayName string `json:"target_display_name"` } `json:"metrics_info"` Type string `json:"type"` } `json:"browse"` ContextMenu struct { Actions []struct { ActionType string `json:"action_type"` EntityName string `json:"entity_name"` EntityType string `json:"entity_type"` MetricsInfo struct { TargetID string `json:"target_id"` TargetType string `json:"target_type"` TargetDisplayName string `json:"target_display_name"` Eab string `json:"eab"` Type string `json:"_type"` } `json:"metrics_info"` Eab string `json:"eab"` } `json:"actions"` Header struct { Title string `json:"title"` Artwork struct { Type string `json:"_type"` Horizontal struct { Type string `json:"_type"` ArtworkType string `json:"artwork_type"` Image struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageID string `json:"image_id"` } `json:"image"` Text string `json:"text"` } `json:"horizontal"` Vertical struct { Type string `json:"_type"` ArtworkType string `json:"artwork_type"` Text string `json:"text"` } `json:"vertical"` } `json:"artwork"` PrimaryBranding struct { ID string `json:"id"` Name string `json:"name"` Artwork struct { BrandWatermarkBottomRight struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"brand.watermark.bottom.right"` BrandLogoBottomRight struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"brand.logo.bottom.right"` } `json:"artwork"` } `json:"primary_branding"` Action struct { ActionType string `json:"action_type"` EntityName string `json:"entity_name"` EntityType string `json:"entity_type"` MetricsInfo struct { TargetID string `json:"target_id"` TargetType string `json:"target_type"` TargetDisplayName string `json:"target_display_name"` Eab string `json:"eab"` Type string `json:"_type"` } `json:"metrics_info"` Browse struct { TargetType string `json:"target_type"` TargetID string `json:"target_id"` TargetTheme string `json:"target_theme"` Params struct { } `json:"params"` Type string `json:"type"` } `json:"browse"` TargetName string `json:"target_name"` Href string `json:"href"` } `json:"action"` } `json:"header"` } `json:"context_menu"` } `json:"actions"` EntityMetadata struct { GenreNames []string `json:"genre_names"` PremiereDate time.Time `json:"premiere_date"` Rating struct { Code string `json:"code"` } `json:"rating"` TargetName string `json:"target_name"` IsWarm bool `json:"is_warm"` } `json:"entity_metadata"` } `json:"results"` } `json:"groups"` Metadata struct { SearchResultType string `json:"search_result_type"` Explanation string `json:"explanation"` SelectionTrackingID string `json:"selection_tracking_id"` } `json:"metadata"` DeviceContextFailure bool `json:"device_context_failure"` }
type Season ¶
type Season struct { Type string `json:"_type"` ID string `json:"id"` Href string `json:"href"` P13NHref string `json:"p13n_href"` Name string `json:"name"` Theme string `json:"theme"` Artwork struct { } `json:"artwork"` DeviceContextFailure bool `json:"device_context_failure"` Items []struct { Type string `json:"_type"` ID string `json:"id"` Href string `json:"href"` Name string `json:"name"` Description string `json:"description"` Artwork struct { VideoHorizontalHero struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"video.horizontal.hero"` } `json:"artwork"` MetricsInfo struct { Type string `json:"_type"` MetricsAssetName string `json:"metrics_asset_name"` AiringType string `json:"airing_type"` ExternalIdentifiers []struct { Namespace string `json:"namespace"` ID string `json:"id"` } `json:"external_identifiers"` } `json:"metrics_info"` Personalization struct { Eab string `json:"eab"` } `json:"personalization"` DeviceContextFailure bool `json:"device_context_failure"` Browse struct { TargetType string `json:"target_type"` TargetID string `json:"target_id"` TargetTheme string `json:"target_theme"` Params struct { } `json:"params"` Href string `json:"href"` BrowseTheme string `json:"browse_theme"` Type string `json:"type"` } `json:"browse"` SeriesID string `json:"series_id"` SeriesName string `json:"series_name"` Season string `json:"season"` SeasonShortDisplayName string `json:"season_short_display_name"` Bundle struct { Type string `json:"_type"` ID int `json:"id"` EabID string `json:"eab_id"` NetworkID string `json:"network_id"` NetworkName string `json:"network_name"` Duration int `json:"duration"` Availability struct { Type string `json:"_type"` StartDate time.Time `json:"start_date"` EndDate time.Time `json:"end_date"` LocationRequirement string `json:"location_requirement"` IsAvailable bool `json:"is_available"` } `json:"availability"` BundleType string `json:"bundle_type"` Rating string `json:"rating"` OpenCreditEndPos int `json:"open_credit_end_pos"` CloseCreditStartPos int `json:"close_credit_start_pos"` Rights struct { Startover bool `json:"startover"` Recordable bool `json:"recordable"` Offline bool `json:"offline"` ClientOverride bool `json:"client_override"` } `json:"rights"` CpID int `json:"cp_id"` AllEtag string `json:"all_etag"` RightsEtag string `json:"rights_etag"` AiringsEtag string `json:"airings_etag"` StreamEtag string `json:"stream_etag"` RightsTTL int `json:"rights_ttl"` AiringsTTL int `json:"airings_ttl"` StreamTTL int `json:"stream_ttl"` PackageID int `json:"package_id"` AvFeatures []string `json:"av_features"` } `json:"bundle"` Number string `json:"number"` PrimaryBranding struct { ID string `json:"id"` Name string `json:"name"` Artwork struct { BrandWatermark struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"brand.watermark"` BrandWatermarkDark struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"brand.watermark.dark"` BrandWatermarkTopRight struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"brand.watermark.top.right"` BrandLogo struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"brand.logo"` NetworkTile struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"network.tile"` BrandWatermarkBottomRight struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"brand.watermark.bottom.right"` BrandLogoTopRight struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"brand.logo.top.right"` BrandLogoBottomRight struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"brand.logo.bottom.right"` } `json:"artwork"` } `json:"primary_branding"` Rating struct { Code string `json:"code"` } `json:"rating"` GenreNames []string `json:"genre_names"` PremiereDate time.Time `json:"premiere_date"` Duration int `json:"duration"` IsFirstRun bool `json:"is_first_run"` SeriesArtwork struct { DetailVerticalHero struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"detail.vertical.hero"` TitleTreatmentHorizontal struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"title.treatment.horizontal"` ProgramTile struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"program.tile"` ProgramVerticalTile struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"program.vertical.tile"` TitleTreatmentStacked struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"title.treatment.stacked"` DetailHorizontalHero struct { Path string `json:"path"` Accent struct { Hue int `json:"hue"` Classification string `json:"classification"` } `json:"accent"` ImageType string `json:"image_type"` ImageID string `json:"image_id"` } `json:"detail.horizontal.hero"` } `json:"series_artwork"` RestrictionLevel string `json:"restriction_level"` Exclusivity string `json:"exclusivity"` Actions []interface{} `json:"actions"` } `json:"items"` Pagination struct { CurrentOffset int `json:"current_offset"` TotalCount int `json:"total_count"` } `json:"pagination"` SeriesGroupingMetadata struct { SeriesGroupingType string `json:"series_grouping_type"` SeasonNumber int `json:"season_number"` GroupingName string `json:"groupingName"` Unknown bool `json:"unknown"` } `json:"series_grouping_metadata"` }