diff --git a/android/app/src/main/assets/phone/companion.html b/android/app/src/main/assets/phone/companion.html index bb00512..3be9050 100644 --- a/android/app/src/main/assets/phone/companion.html +++ b/android/app/src/main/assets/phone/companion.html @@ -70,6 +70,9 @@ nav div{max-width:460px;margin:0 auto;display:flex} nav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;font-size:11px;color:var(--muted)} nav button i{display:flex;align-items:center;justify-content:center;width:46px;height:28px;border-radius:999px} nav button.on{color:var(--accent);font-weight:700}nav button.on i{background:var(--surface)} +.kbar{position:fixed;left:0;right:0;bottom:calc(64px + env(safe-area-inset-bottom));z-index:3;background:var(--deep);border-top:1px solid var(--surface);padding:10px 16px} +.kbarin{max-width:460px;margin:0 auto} +main.kpad{padding-bottom:230px} .toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:var(--accent);color:var(--on-accent);padding:9px 16px;border-radius:999px;font-weight:700;font-size:13px;z-index:9;display:none;max-width:90vw;text-align:center} .empty{color:var(--muted);text-align:center;padding:30px 10px} @@ -229,101 +232,199 @@ function rooms() { return h; } function more() { + // More, reorganised (design/companion/build-create-v3.py): who's watching as faces, what needs you with a count, your + // channels as tiles, and settings as a short list. const yours = state.channels, pr = state.profiles, kids = pr?.current?.kind === 'Kids'; - const who = pr ? `
Who's watching
${pr.profiles.map(p => ``).join('')}
-
${pr.current ? esc(pr.current.name) + ' is watching on the TV.' : 'Nobody chosen yet on the TV.'}${kids ? ' Making channels and the Director are for Adult.' : ''}
` : ''; - if (kids) return head('More') + who + `
About
Orbit Companion runs on the TV itself, over your home Wi-Fi. It works while Orbit is open on the TV.
`; - return head('More') + who + `
Director's Chair
- -
Your channels
- ${(yours?.channels || []).map(c => `
${c.number}${c.on ? 'On' : 'Off'}
-
${esc(c.name)}
${esc(c.styleTitle)} · ${esc(c.hoursLabel)}
-
`).join('')} - ${!yours || yours.next ? '' : '
Every number from 701 to 799 is taken.
'} - ${standalone() ? '' : ''} -
Look
-
- ${(state.looks || []).map(l => ``).join('')}
-
Following the TV, each room's remote wears that room's look. Pick one to keep it on this phone instead, whatever the TV is set to.
-
About
Orbit Companion runs on the TV itself, over your home Wi-Fi. Nothing to install, no account. It works while Orbit is open on the TV. - To stop this phone, remove it in Settings › Rooms and phones.
`; + const colours = ['#45B8F5', '#FF4FA3', '#6EDCAA', '#FFB347', '#B98CFF']; + let h = head('More'); + if (pr) h += `
Who's watching
${pr.profiles.map((p, i) => ``).join('')} + ${pr.pinSet ? 'Adult needs the PIN' : ''}
`; + if (kids) return h + `
Kids is watching. Making channels and the Director are for Adult.
`; + const waiting = state.directorCount; + h += ``; + h += `
Your channels
+
${(yours?.channels || []).map(c => ``).join('')} + ${!yours || yours.next ? `` : ''}
`; + const line = (label, value, attr, first) => ``; + h += `
Settings
+ ${line('Look', keptLook() ? esc(keptLook()) : 'Follows the TV', 'data-klook="1"', true)} + ${standalone() ? '' : line('Add to home screen', '', 'data-home="1"')} + ${line('About Orbit Companion', '', 'data-kabout="1"')}
`; + return h; } -// Create a channel (phase 3, from design/companion v2): five steps, Name, Shows, Style, Hours and Review, in the TV's look. -// It saves through the same route as before, so the TV makes it exactly as Settings › Create your own does. -const STYLES = [['Shaped','Shaped by the Director',"Recommended. Daytime, evening and late, like Orbit's own channels, with your core shows more often"],['Standard','Standard TV',"Shows take turns all day, episodes in order"],['Shuffled','Shuffled','Episodes in a mixed order, every one before any repeats'], +// Create a channel, refined (Paul, 7 November 2026, design/companion/build-create-v3.py): start quick (the Director builds it) +// or custom; one search for titles, collections, networks and genres; a collection page; the day in folding parts; and a +// review where anything can be changed and two endings that never interrupt what's on. Long lists scroll; the action bar +// stays at the foot and picks are kept. It saves through the same route as before. +const STYLES = [['Shaped','Shaped by the Director',"Daytime, evening and late, like Orbit's own channels, with your core shows more often"],['Standard','Standard TV',"Shows take turns all day, episodes in order"],['Shuffled','Shuffled','Episodes in a mixed order, every one before any repeats'], ['Blocks','Blocks','A timetable: each show at its own times, every day'],['Marathon','Marathon','One show at a time, several episodes back to back']]; const HOURS = [[null,'All day'],[{from:18,to:0},'Evenings, 18:00 to midnight'],[{from:6,to:12},'Mornings, 06:00 to noon'],[{from:9,to:17},'Daytime, 09:00 to 17:00']]; -const STEPS = ['Name','Shows','Style','Hours','Review']; +const STEPS = ['Shows','Shape','When','Review']; +const VIEWS = {shows: 0, collection: 0, shape: 1, when: 2, review: 3}; const SLOTS = [['Daytime','06:00 to 17:00'],['Evening','17:00 to 22:00'],['Late','22:00 to 06:00']]; +const WEEK_HOURS = {Daytime: 77, Evening: 35, Late: 56}; const sameHours = (a, b) => JSON.stringify(a ?? null) === JSON.stringify(b ?? null); +const room = () => state.now?.room || 'the TV'; +const backArrow = ''; +const fold = open => ``; +const tick = on => `${on ? '✓' : ''}`; + +function cTop(title) { + const c = state.create, i = VIEWS[c.view]; + const bar = i === undefined ? '' : `
${STEPS.map((n, k) => `
+
${n}
`).join('')}
`; + return `
${esc(title)}
` + bar; +} +// The action bar: fixed above the tabs, so the next step is always in reach however long the list. +function cBar(primary, attr, secondary, attr2, note) { + return `
${note ? `
${note}
` : ''} +
${secondary ? `` : ''}
`; +} +function rowTitle(x, on, sub) { + return ``; +} +const chosenNote = () => { const n = state.create.draft.shows.length; return n ? `${n} chosen · see them` : 'Nothing chosen yet'; }; +function searchBox(placeholder) { + const c = state.create; + return `
+
`; +} +function searchResults() { + const c = state.create, r = c.results, d = c.draft; if (!r) return ''; + const label = s => `
${s}
`; + let h = ''; + if (r.collections.length) h += label('Collections') + r.collections.map(k => ``).join(''); + if (r.networks.length) h += label('Networks and studios') + r.networks.map(k => ``).join(''); + if (r.genres.length) h += label('Genres') + `
${r.genres.map(g => ``).join('')}
`; + if (r.titles.length) h += label('Titles') + r.titles.map(x => rowTitle(x, d.shows.some(y => y.id === x.id))).join(''); + if (!h) h = '
Nothing in your library matches that. Try a show, a collection like Crunchyroll, a network or a genre.
'; + return h; +} + function create() { const c = state.create, d = c.draft; - if (c.done) return `
✓
-
${esc(c.done.name)} is ready on ${c.done.number}
-
${esc(c.done.message || '')}
- ${c.watching ? `
${esc(c.watching)}
` : ''} - - -
`; - const bar = `
${STEPS.map((n, i) => `
-
${n}
`).join('')}
`; - const top = `
${d.number ? 'Edit ' + esc(d.name) : 'Create a channel'}
` + bar; const note = c.note ? `
${esc(c.note)}
` : ''; - let body = '', next = ''; - if (c.step === 0) { - body = `
Name it
It goes in Yours${d.number ? ' as ' + d.number : ''}. Keep it short, like 90s Sci-Fi.
- `; - next = ''; - } else if (c.step === 1) { - const offered = c.offered.filter(s => !d.shows.some(x => x.id === s.id) && !d.skipped.includes(s.id)); - const row = (s, on) => ``; - const b = c.browse, f = state.facets; - const chip = (key, value, label) => ``; - const finder = c.mode === 'browse' ? (!f ? '
Reading your library…
' : ` -
Type
${chip('type', '', 'Both')}${chip('type', 'Series', 'Shows')}${chip('type', 'Movie', 'Films')}
-
Genre
${chip('genre', '', 'Any')}${f.genres.map(g => chip('genre', g, g)).join('')}
-
Network or studio
${chip('studio', '', 'Any')}${f.studios.map(g => chip('studio', g, g)).join('')}
-
Age
${chip('rating', '', 'Any')}${f.ratings.map(g => chip('rating', g, g)).join('')}
- `) : ` -
-
`; - body = `
Pick the shows
${d.shows.length} chosen
-
` + finder + note + - d.shows.map(s => row(s, true)).join('') + offered.map(s => row(s, false)).join('') + - (offered.length ? `
${c.mode === 'browse' ? 'Matching titles in your library, newest first.' : 'The Director suggests these from what you described and the shows you chose.'} Tap to add.
` : ''); - next = ``; - } else if (c.step === 2) { - body = `
How it plays
It shapes what's planned from then on, never what's already booked.
` + - STYLES.map(([k, t, l]) => ``).join('') + '
'; - // Shaped: the Director's layout, to change. Tap a show to move it to the next slot; the star marks a core show. - if (d.style === 'Shaped') { - const sh = c.shape; - if (sh && !Object.keys(d.slots).length) body += `
The Director's layout
Your picks are all one kind, so they play all day rather than being split into daytime, evening and late. ★ Core shows still come round more often.
-
${d.shows.map(x => `
${esc(x.title)}
`).join('')}
`; - else body += !sh ? '
The Director is laying it out…
' : `
The Director's layout
` + - SLOTS.map(([slot, hours]) => { const mine = d.shows.filter(x => (d.slots[x.id] || 'Evening') === slot); - return `

${slot}${hours}

${mine.length ? mine.map(x => `
- -
`).join('') - : '
Nothing here: these hours share all your shows.
'}
`; }).join('') + - '
★ Core shows come round more often. Everything can be changed later.
'; - } - next = ''; - } else if (c.step === 3) { - body = `
When it's on
Outside its hours the channel shows a "back at" card.
` + - HOURS.map(([h, l], i) => ``).join('') + '
'; - next = ''; - } else { - body = `
Review
${esc(d.name)}
-
Yours${d.number ? ' · ' + d.number : ''} · ${STYLES.find(s => s[0] === d.style)[1]} · ${HOURS.find(([h]) => sameHours(h, d.hours))?.[1] || 'Set hours'}
- ${d.shows.slice(0, 8).map(s => `
${d.core.includes(s.id) ? '★ ' : ''}${esc(s.title)}${d.style === 'Shaped' ? ` · ${esc(d.slots[s.id] || 'Evening')}` : ''}
`).join('')}${d.shows.length > 8 ? `
and ${d.shows.length - 8} more
` : ''}
` + - (c.week ? `
${esc(c.week)}
` : c.shape === null ? '' : '') + clashCard() + note; - next = ``; + if (c.done) return doneView(); + if (c.view === 'start') { + return cTop(d.number ? 'Edit ' + d.name : 'New channel') + `
How would you like to start?
+
+
Let the Director build itQUICK
+
Say what you fancy. It finds the shows in your library, lays out the day, and you check it.
+ +
Try:${(c.tries || []).map(t => ``).join('')}
+
+
Build it yourselfCUSTOM
+
Pick every show: search titles, open a collection, or a network. The Director still helps with the day.
` + note + + cBar(c.busy ? 'Looking…' : 'Build it for me', 'data-kquick="1"', 'Myself', 'data-kcustom="1"'); } - return top + body + `
${next}
`; + if (c.view === 'shows') { + const head = c.quick ? `
“${esc(d.description)}”
Untick any you don't want. Add your own with the search.
` : ''; + const picked = c.quick ? (c.results ? `
The Director's picks
` : '') + d.shows.map(x => rowTitle(x, true)).join('') : ''; + return cTop(c.quick ? `The Director picked ${d.shows.length}` : 'Pick the shows') + head + searchBox(c.quick ? 'Add a show: search your library' : 'Search titles, collections, networks, genres') + + note + searchResults() + picked + cBar('Next: shape the day', `data-knext="shape" ${d.shows.length ? '' : 'disabled style="flex:1;opacity:.5"'}`, null, null, chosenNote()); + } + if (c.view === 'collection') { + const k = c.col, rf = k.refine; + const items = (k.items || []).filter(x => (!rf.type || x.type === rf.type) && (!rf.band || x.band === rf.band)); + const chosenHere = items.filter(x => d.shows.some(y => y.id === x.id)).length; + const chip = (key, value, label) => ``; + return cTop(k.name) + `
+
Collection · ${(k.total || 0).toLocaleString()} titles
+
${k.complete ? 'Read in full from your library' : 'Still being read: more will appear'}
+
${(k.found || 0).toLocaleString()} in your library copy
+
+ + ${k.refineOpen ? `
Type
${chip('type', '', 'Both')}${chip('type', 'Series', 'Shows')}${chip('type', 'Movie', 'Films')}
+
Age
${chip('band', '', 'Any')}${chip('band', 'Kids', 'Kids')}${chip('band', 'Family', 'Family')}${chip('band', 'Teen', 'Teen')}${chip('band', 'Adult', 'Grown-up')}${chip('band', 'Unknown', 'Unrated')}
` : ''} + ${note}${items.slice(0, k.shown || 60).map(x => rowTitle(x, d.shows.some(y => y.id === x.id))).join('')} + ${items.length > (k.shown || 60) ? `` : ''}` + + cBar('Done with this collection', 'data-kcoldone="1"', null, null, `${chosenHere} of these chosen · ${chosenNote()}`); + } + if (c.view === 'shape') return cTop('Shape the day') + shapeView() + note + cBar('Next: when it’s on', 'data-knext="when"', null, null, d.style === 'Shaped' ? '★ comes round more often' : ''); + if (c.view === 'when') { + return cTop('When it’s on') + `
Hours
` + + HOURS.map(([h, l], i) => ``).join('') + seasonPicker() + note + + cBar('Next: review', 'data-knext="review"'); + } + if (c.view === 'review') return reviewView() + note; + return ''; } + +function shapeView() { + const c = state.create, d = c.draft, sh = c.shape; + if (d.style !== 'Shaped') return `
${esc(STYLES.find(s => s[0] === d.style)[1])}: ${esc(STYLES.find(s => s[0] === d.style)[2])}. Change the style on Review.
`; + if (!sh) return '
The Director is laying out the day…
'; + let h = ''; + if (sh.suggestedCore?.length && !d.core.length && !c.coreSet) h += `
The Director would star ${sh.suggestedCore.map(id => esc(d.shows.find(x => x.id === id)?.title || '')).join(', ')} to come round more often. +
`; + if (!Object.keys(d.slots).length) return h + `
Your picks are all one kind, so they play all day rather than being split into daytime, evening and late.
` + + d.shows.map(x => `
${esc(x.title)}
`).join(''); + h += `
The Director balanced this for you. Open a part of the day to star a show or move it.${sh.notes?.length ? ' ' + esc(sh.notes.slice(0, 2).join(' ')) : ''}
`; + const hoursOf = id => (sh.runHours || {})[id] || 0; + for (const [slot, span] of SLOTS) { + const mine = d.shows.filter(x => (d.slots[x.id] || 'Evening') === slot), open = c.open?.[slot]; + const hrs = Math.round(mine.reduce((a, x) => a + hoursOf(x.id), 0)), need = WEEK_HOURS[slot], frac = Math.min(1, hrs / (need * 3)); + h += `
+ ${open ? (mine.length ? mine.map(x => `
+ +
${esc(x.title)}
+
`).join('') + : '
Nothing here: these hours share the daytime and evening shows.
') : ''}
`; + } + return h; +} + +function reviewView() { + const c = state.create, d = c.draft, sh = c.shape; + const style = STYLES.find(s => s[0] === d.style)[1].replace(' by the Director', ''); + const hours = HOURS.find(([h]) => sameHours(h, d.hours))?.[1]?.split(',')[0] || 'All day'; + const pillBtn = (label, attr) => ``; + let h = cTop('Review') + `
+
+ ${d.number || state.channels?.next || ''}
+ ${!d.name && c.suggestedName ? `
The Director suggests ${esc(c.suggestedName)}
` : ''} +
${pillBtn(esc(style), 'data-kstyles="1"')}${pillBtn(esc(hours), 'data-kgo="when"')}${pillBtn(d.season ? seasonLabel(d.season) : 'All year', 'data-kgo="when"')}
+ ${c.styleOpen ? `
${STYLES.map(([k, t, l]) => ``).join('')}
` : ''}
`; + // The week, in plain words. + const total = sh?.hours; + if (total) { + const perDay = d.hours ? ((d.hours.to || 24) - d.hours.from + 24) % 24 || 24 : 24, weeks = total / perDay / 7; + h += `
Your week${Math.round(total).toLocaleString()} hours
+
+
${esc(c.week || '')}
`; + } else if (c.week) h += `
${esc(c.week)}
`; + if (d.style === 'Shaped' && Object.keys(d.slots).length && sh?.runHours) { + h += `
Balance
${SLOTS.map(([slot]) => { + const hrs = d.shows.filter(x => (d.slots[x.id] || 'Evening') === slot).reduce((a, x) => a + (sh.runHours[x.id] || 0), 0), f = Math.min(1, hrs / WEEK_HOURS[slot]); + return `
${slot}
`; }).join('')}
`; + } + h += clashCard(); + h += `
Nothing changes on ${esc(room())} until you say. Create channel saves it and starts planning. Create & watch next switches to it after the programme on now.
`; + return h + `
+
`; +} + +function doneView() { + const c = state.create, k = c.done; + return `
✓
+
${esc(k.name)} is ready on ${k.number}
+
${esc(k.message || '')}
+ ${c.watching ? `
${esc(c.watching)}
` : ''} + ${k.queued ? '' : ``} +
`; +} + // Who's watching (phase 3): Kids goes straight in; Adult asks for the PIN on the phone when one's set, as the TV does. async function switchTo(id, pin) { buzz(); @@ -352,9 +453,73 @@ async function checkClashes() { try { c.clashes = (await api('/api/clashes', {shows: c.draft.shows.map(x => ({id: x.id, title: x.title})), number: c.draft.number})).clashes; } catch (e) { c.clashes = {}; } render(); } -function startCreate(draft) { draft.slots = draft.slots || {}; draft.core = draft.core || []; state.create = {step: 0, draft, offered: [], note: '', busy: false, mode: 'describe', browse: {type: '', genre: '', studio: '', rating: ''}, shape: null}; render(); } +// The season: off unless you choose it. The Director may suggest one (Christmas titles: November and December). +const MONTHS = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; +const seasonLabel = w => `${w.fromDay} ${MONTHS[w.fromMonth - 1]} to ${w.toDay} ${MONTHS[w.toMonth - 1]}`; +function seasonPicker() { + const c = state.create, d = c.draft, w = d.season, sug = c.shape?.suggestedSeason; + const sel = (key, max, value) => ``; + return `
Season
+ + + ${w ? `
From ${sel('fromDay', 31, w.fromDay)} ${sel('fromMonth', 12, w.fromMonth)} to ${sel('toDay', 31, w.toDay)} ${sel('toMonth', 12, w.toMonth)}
` : ''} + ${sug && !w ? `
The Director suggests ${esc(sug.label)}, as most of these are Christmas titles.
` : ''}`; +} +function startCreate(draft) { + draft.slots = draft.slots || {}; draft.core = draft.core || []; + state.create = {view: draft.number ? 'shows' : 'start', draft, results: null, query: '', busy: false, note: '', shape: null, open: {}, quick: false, + tries: (state.collections || []).slice(0, 2).map(k => k.name).concat(['Cosy Christmas films']).slice(0, 3)}; + render(); scrollTo(0, 0); + if (!state.collections) api('/api/collections').then(r => { state.collections = r.collections; if (state.create?.view === 'start') { const typed = $('#kdesc'); if (typed) state.create.draft.description = typed.value; state.create.tries = r.collections.slice(0, 2).map(k => k.name).concat(['Cosy Christmas films']); render(); } }).catch(() => {}); +} +// Name the Director suggests: the collection's own name, or the description in a few words. +const suggestName = text => text.replace(/\s+/g, ' ').trim().split(' ').slice(0, 3).map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ').slice(0, 40); +function goTo(view) { const c = state.create; c.view = view; c.note = ''; render(); scrollTo(0, 0); + if (view === 'shape' || (view === 'review' && !c.shape) || view === 'when') shapeShows(); if (view === 'review') checkClashes(); } +async function runSearch() { + const c = state.create; c.query = ($('#kq')?.value || '').trim(); if (c.query.length < 2 || c.busy) return; + c.busy = true; render(); + try { c.results = await api('/api/search?q=' + encodeURIComponent(c.query)); } catch (e) { c.note = e.message; } + c.busy = false; render(); +} +async function openCollection(name) { + const c = state.create; c.busy = true; c.view = 'collection'; c.col = {name, refine: {type: '', band: ''}, items: [], shown: 60}; c.suggestedName = c.suggestedName || name; render(); scrollTo(0, 0); + try { const r = await api('/api/browse?collection=' + encodeURIComponent(name)); Object.assign(c.col, {items: r.items, complete: r.complete, total: r.total, found: r.found}); } + catch (e) { c.note = e.message; } + c.busy = false; render(); +} +// Quick: the Director picks. A collection named in the description is taken whole; otherwise its suggestions. +async function quickBuild() { + const c = state.create, d = c.draft; d.description = ($('#kdesc')?.value || '').trim(); if (!d.description || c.busy) return; + c.busy = true; render(); + try { + const col = (state.collections || []).find(k => k.name.toLowerCase() === d.description.toLowerCase()); + let picks; + if (col) { const r = await api('/api/browse?collection=' + encodeURIComponent(col.name)); picks = r.items.slice(0, 200); c.suggestedName = col.name; } + else { picks = await api('/api/suggest?d=' + encodeURIComponent(d.description) + '&chosen=&skipped='); c.suggestedName = suggestName(d.description); } + if (!picks.length) { c.note = 'Nothing in your library fits that yet. Try other words, a collection or a network, or build it yourself.'; c.busy = false; render(); return; } + d.shows = picks; c.quick = true; c.results = null; c.busy = false; goTo('shows'); + } catch (e) { c.note = e.message; c.busy = false; render(); } +} +function chosenSheet() { + const d = state.create.draft; + openSheet(`
${d.shows.length} chosen
${d.shows.map(x => `
${esc(x.title)}
+
`).join('')}
`); +} // Smart setup: what the library has to browse by, and the Director's layout for the chosen shows. -async function loadFacets() { if (state.facets) return; try { state.facets = await api('/api/facets'); } catch (e) { state.create.note = e.message; } render(); } +async function loadFacets() { + if (!state.facets) try { state.facets = await api('/api/facets'); } catch (e) { state.create.note = e.message; } + if (!state.collections) try { state.collections = (await api('/api/collections')).collections; } catch (e) { state.collections = []; } + render(); +} +// From a collection: its actual members from the library, to add all at once or one by one. +async function browseCollection(name) { + const c = state.create; c.collection = name; c.busy = true; render(); + try { const r = await api('/api/browse?collection=' + encodeURIComponent(name)); c.offered = r.items; c.colInfo = {found: r.found, total: r.total, complete: r.complete}; + c.note = r.items.length ? '' : 'None of that collection is in the library copy yet.'; } + catch (e) { c.note = e.message; c.colInfo = null; } + c.busy = false; render(); +} async function browseShows() { const c = state.create; if (c.busy) return; c.busy = true; render(); const q = Object.entries(c.browse).filter(([, v]) => v).map(([k, v]) => k + '=' + encodeURIComponent(v)).join('&'); @@ -396,13 +561,16 @@ async function watchNew(when) { } c.trying = false; if (c.watching === 'Planning its first programmes…') c.watching = "It's still planning. Try again in a minute, or find it in the Guide."; render(); } -async function makeChannel() { - const c = state.create, d = c.draft; if (c.busy) return; c.busy = true; render(); +async function makeChannel(ending) { + const c = state.create, d = c.draft; if (c.busy) return; + d.name = ($('#kname')?.value || d.name || '').trim(); if (!d.name) { toast('Give it a name first'); return; } + c.busy = true; render(); try { const r = await api('/api/channels', {number: d.number, name: d.name, description: d.description, style: d.style, hours: d.hours, shows: d.shows, - slots: d.style === 'Shaped' ? d.slots : undefined, core: d.style === 'Shaped' ? d.core : undefined}); - // Made: offer to watch it now, or straight after the programme on the TV (Paul, 7 November 2026). - c.done = {number: r.number, name: d.name, message: r.message, edit: !!d.number}; c.busy = false; render(); load('more'); } - catch (e) { c.note = e.message; c.busy = false; render(); } + slots: d.style === 'Shaped' ? d.slots : undefined, core: d.style === 'Shaped' ? d.core : undefined, season: d.season || null}); + c.done = {number: r.number, name: d.name, message: r.message, edit: !!d.number}; c.busy = false; render(); load('more'); + // Create & watch next: queued for after the programme on now, never interrupting it (Paul, 7 November 2026). + if (ending === 'next') { await watchNew('next'); } + } catch (e) { c.note = e.message; c.busy = false; render(); } } // The Director's Chair on the phone (phase 3): Drive-In event ideas to approve, defer or dismiss, and titles to place on a @@ -445,7 +613,7 @@ function offerHome() { } function render() { tabs(); - $('#app').className = tab === 'remote' ? 'fit' : ''; + $('#app').className = tab === 'remote' ? 'fit' : tab === 'more' && state.create ? 'kpad' : ''; $('#app').innerHTML = tab === 'more' && state.create ? create() : tab === 'more' && state.chair ? director() : ({remote, guide, catchup, rooms, more})[tab](); } function openSheet(html) { $('#sheetIn').innerHTML = html; $('#sheet').classList.add('open'); $('#shade').classList.add('open'); } @@ -459,7 +627,8 @@ async function load(what) { if (what === 'catchup') state.catchup = await api('/api/catchup'); if (what === 'rooms') state.rooms = await api('/api/rooms'); if (what === 'more') { const [l, c, p] = await Promise.all([api('/api/looks'), api('/api/channels').catch(() => null), api('/api/profiles').catch(() => null)]); - state.looks = l.looks; state.channels = c; state.profiles = p; look(state.now?.look); } + state.looks = l.looks; state.channels = c; state.profiles = p; look(state.now?.look); + if (p?.current?.kind !== 'Kids') api('/api/director').then(r => { state.directorCount = r.ready ? r.ideas.filter(i => i.decision !== 'approved').length + r.choices.length : 0; if (tab === 'more' && !state.create && !state.chair) render(); }).catch(() => {}); } if (what === 'director') state.director = await api('/api/director'); offline = false; } catch (e) { if (!offline) toast(e.message === 'Failed to fetch' ? "Orbit isn't open on the TV" : e.message); offline = true; } @@ -469,8 +638,20 @@ async function load(what) { let offline = false; const send = (path, body, done) => { buzz(); api(path, body).then(j => { done?.(j); setTimeout(() => load('now'), 600); }).catch(e => toast(e.message === 'Failed to fetch' ? "Orbit isn't open on the TV" : e.message)); }; +document.addEventListener('keydown', e => { + if (e.key !== 'Enter') return; + if (e.target.id === 'kq') { e.preventDefault(); runSearch(); } + if (e.target.id === 'kdesc') { e.preventDefault(); quickBuild(); } +}); +document.addEventListener('change', e => { + const mv = e.target.dataset?.kmove; + if (mv && state.create) { const c = state.create; c.draft.slots[mv] = e.target.value; c.moved = {...(c.moved || {}), [mv]: true}; render(); return; } + const k = e.target.dataset?.cseason; if (!k || !state.create?.draft.season) return; + state.create.draft.season[k] = +e.target.value; render(); +}); document.addEventListener('click', e => { - const b = e.target.closest('button,[data-tab]'); if (!b) return; + const b = e.target.closest('button,[data-tab],a[data-kseechosen],a[data-kusename]'); if (!b) return; + if (b.tagName === 'A') e.preventDefault(); const d = b.dataset; if (d.tab) { if (d.tab !== 'more' || tab === 'more') { state.create = null; state.chair = false; } tab = d.tab; try { localStorage.setItem('orbit.tab', tab); } catch {} closeSheet(); render(); if (tab !== 'remote') load(tab); return; } if (d.key) send('/api/key', {key: d.key}); @@ -478,7 +659,7 @@ document.addEventListener('click', e => { if (d.ch) send('/api/channel', {step: +d.ch}); if (d.sheet) openSheet(moreControls()); if (d.go) send('/api/section', {section: d.go}, () => { closeSheet(); toast('On the TV now'); }); - if (d.look !== undefined) { try { d.look ? localStorage.setItem('orbit.look', d.look) : localStorage.removeItem('orbit.look'); } catch {} look(state.now?.look); render(); return; } + if (d.look !== undefined) { closeSheet(); try { d.look ? localStorage.setItem('orbit.look', d.look) : localStorage.removeItem('orbit.look'); } catch {} look(state.now?.look); render(); return; } if (d.director) { state.chair = true; state.director = null; render(); load('director'); return; } if (d.chairback) { state.chair = false; render(); return; } if (d.idea) { const cut = d.idea.lastIndexOf(':'), signature = d.idea.slice(0, cut), decision = d.idea.slice(cut + 1); send('/api/director/idea', {signature, decision}, j => { toast(j.message); load('director'); }); return; } @@ -486,6 +667,44 @@ document.addEventListener('click', e => { if (d.drop) { send('/api/director/drop', {id: d.drop}, j => { toast(j.message); state.director.choices = state.director.choices.filter(c => c.id !== d.drop); render(); }); return; } if (d.profile) { switchTo(d.profile); return; } if (d.pinok) { switchTo(d.pinok, $('#pin').value); return; } + if (d.kback) { const c = state.create, v = c.view; + if (v === 'start' || (v === 'shows' && c.draft.number)) state.create = null; + else if (v === 'collection') c.view = 'shows'; else if (v === 'shows') c.view = c.draft.number ? 'shows' : 'start'; + else c.view = {shape: 'shows', when: 'shape', review: 'when'}[v]; + render(); scrollTo(0, 0); return; } + if (d.klook) { openSheet(`
Look
Following the TV, each room's remote wears that room's look. Pick one to keep it on this phone instead.
+
+ ${(state.looks || []).map(l => ``).join('')}
`); return; } + if (d.kabout) { openSheet(`
Orbit Companion
It runs on the TV itself, over your home Wi-Fi: nothing to install, no account. It works while Orbit is open on the TV. To stop this phone, remove it in Settings › Rooms and phones on the TV.
`); return; } + if (d.kquick) { quickBuild(); return; } + if (d.ktry) { $('#kdesc').value = d.ktry; quickBuild(); return; } + if (d.kcustom) { const c = state.create; c.quick = false; c.view = 'shows'; render(); setTimeout(() => $('#kq')?.focus(), 50); return; } + if (d.ksearch) { runSearch(); return; } + if (d.ktoggle) { const dr = state.create.draft, id = d.ktoggle, c = state.create; + if (dr.shows.some(x => x.id === id)) dr.shows = dr.shows.filter(x => x.id !== id); + else { const x = [...(c.results?.titles || []), ...(c.col?.items || [])].find(x => x.id === id); if (x) dr.shows.push(x); } + render(); return; } + if (d.kcol) { openCollection(d.kcol); return; } + if (d.knet) { const c = state.create; c.busy = true; render(); + api('/api/browse?studio=' + encodeURIComponent(d.knet)).then(items => { c.results = {collections: [], networks: [], genres: [], titles: items}; c.query = d.knet; }).catch(e => c.note = e.message).finally(() => { c.busy = false; render(); }); return; } + if (d.kgenre) { const c = state.create; c.busy = true; render(); + api('/api/browse?genre=' + encodeURIComponent(d.kgenre)).then(items => { c.results = {collections: [], networks: [], genres: [], titles: items}; c.query = d.kgenre; }).catch(e => c.note = e.message).finally(() => { c.busy = false; render(); }); return; } + if (d.kaddall) { const c = state.create, rf = c.col.refine; + const items = c.col.items.filter(x => (!rf.type || x.type === rf.type) && (!rf.band || x.band === rf.band)); + items.forEach(x => { if (!c.draft.shows.some(y => y.id === x.id)) c.draft.shows.push(x); }); toast(`Added ${items.length}`); render(); return; } + if (d.krefine) { state.create.col.refineOpen = !state.create.col.refineOpen; render(); return; } + if (d.kref) { const cut = d.kref.indexOf(':'), k = d.kref.slice(0, cut), v = d.kref.slice(cut + 1); state.create.col.refine[k] = v; render(); return; } + if (d.kmore) { state.create.col.shown = (state.create.col.shown || 60) + 60; render(); return; } + if (d.kcoldone) { state.create.view = 'shows'; render(); scrollTo(0, 0); return; } + if (d.knext) { goTo(d.knext); return; } + if (d.kfold) { const c = state.create; c.open = {...c.open, [d.kfold]: !c.open?.[d.kfold]}; render(); return; } + if (d.kgo) { state.create.draft.name = ($('#kname')?.value || state.create.draft.name || '').trim(); goTo(d.kgo); return; } + if (d.kstyles) { const c = state.create; c.draft.name = ($('#kname')?.value || c.draft.name || '').trim(); c.styleOpen = !c.styleOpen; render(); return; } + if (d.kstyle) { const c = state.create; c.draft.name = ($('#kname')?.value || c.draft.name || '').trim(); c.draft.style = d.kstyle; c.styleOpen = false; render(); if (d.kstyle === 'Shaped') shapeShows(); return; } + if (d.kusename) { state.create.draft.name = state.create.suggestedName; render(); return; } + if (d.kseechosen) { chosenSheet(); return; } + if (d.kunpick) { const dr = state.create.draft; dr.shows = dr.shows.filter(x => x.id !== d.kunpick); chosenSheet(); render(); return; } + if (d.kmake) { makeChannel(d.kmake); return; } if (d.create) { startCreate({name: '', description: '', style: 'Shaped', hours: null, shows: [], skipped: []}); return; } if (d.edit) { const ch = state.channels?.channels.find(x => x.number === +d.edit); if (!ch) return; api('/api/shows?number=' + ch.number).then(shows => { @@ -501,15 +720,22 @@ document.addEventListener('click', e => { if (d.cnext) { const c = state.create; if (c.step === 0) { c.draft.name = ($('#cname')?.value || '').trim(); if (!c.draft.name) { toast('Give it a name first'); return; } } if (c.step === 1 && !c.draft.shows.length) return; - c.step++; c.note = ''; render(); scrollTo(0, 0); if (c.step === 2 && c.draft.style === 'Shaped') shapeShows(); if (c.step === 4) { checkClashes(); shapeShows(); } return; } + c.step++; c.note = ''; render(); scrollTo(0, 0); if ((c.step === 2 && c.draft.style === 'Shaped') || (c.step === 3 && !c.shape)) shapeShows(); if (c.step === 4) { checkClashes(); shapeShows(); } return; } if (d.csuggest) { suggestShows(); return; } if (d.ctoggle) { const dr = state.create.draft, id = d.ctoggle; if ($('#cdesc')) dr.description = $('#cdesc').value.trim(); if (dr.shows.some(s => s.id === id)) dr.shows = dr.shows.filter(s => s.id !== id); else { const s = state.create.offered.find(s => s.id === id); if (s) dr.shows.push(s); } render(); return; } if (d.cstyle) { state.create.draft.style = d.cstyle; render(); if (d.cstyle === 'Shaped') shapeShows(); return; } + if (d.ccol) { browseCollection(d.ccol); return; } + if (d.caddall) { const c = state.create; c.offered.forEach(x => { if (!c.draft.shows.some(y => y.id === x.id)) c.draft.shows.push(x); }); toast(`Added ${c.offered.length}`); render(); return; } + if (d.cstarok) { const c = state.create; c.draft.core = c.shape.suggestedCore.slice(); c.coreSet = true; render(); return; } + if (d.cstarno) { const c = state.create; c.shape.suggestedCore = []; c.coreSet = true; render(); return; } + if (d.cseasonoff) { state.create.draft.season = null; render(); return; } + if (d.cseasonon) { state.create.draft.season = state.create.draft.season || state.create.shape?.suggestedSeason && {...state.create.shape.suggestedSeason} || {fromMonth: 11, fromDay: 1, toMonth: 12, toDay: 31}; delete state.create.draft.season.label; render(); return; } + if (d.cseasonsug) { const sg = {...state.create.shape.suggestedSeason}; delete sg.label; state.create.draft.season = sg; render(); return; } if (d.cmode) { state.create.mode = d.cmode; state.create.offered = []; render(); if (d.cmode === 'browse') loadFacets(); return; } - if (d.cb) { const cut = d.cb.indexOf(':'), k = d.cb.slice(0, cut), v = d.cb.slice(cut + 1); state.create.browse[k] = state.create.browse[k] === v ? '' : v; render(); return; } + if (d.cb) { state.create.collection = null; state.create.colInfo = null; const cut = d.cb.indexOf(':'), k = d.cb.slice(0, cut), v = d.cb.slice(cut + 1); state.create.browse[k] = state.create.browse[k] === v ? '' : v; render(); return; } if (d.cbrowse) { browseShows(); return; } if (d.cslot) { const c = state.create, i = SLOTS.findIndex(s => s[0] === (c.draft.slots[d.cslot] || 'Evening')); c.draft.slots[d.cslot] = SLOTS[(i + 1) % 3][0]; c.moved = {...(c.moved || {}), [d.cslot]: true}; render(); return; } diff --git a/android/app/src/main/java/tv/orbit/classic/CatalogueStore.kt b/android/app/src/main/java/tv/orbit/classic/CatalogueStore.kt index b1dd731..88ec5a9 100644 --- a/android/app/src/main/java/tv/orbit/classic/CatalogueStore.kt +++ b/android/app/src/main/java/tv/orbit/classic/CatalogueStore.kt @@ -187,6 +187,15 @@ internal class CatalogueStore(context: Context, private val file: File) : Catalo buildList { while (c.moveToNext()) add(ShapeRow(c.getString(0), c.getString(1), c.getString(2), if (c.isNull(3)) null else c.getInt(3), c.getString(4), c.getString(5).split('|').filter { it.isNotBlank() }.toSet())) } } } + /** Networks and studios whose names contain [text], with how many titles each has: for Create's one search. Read only. */ + @Synchronized fun studiosMatching(text: String, limit: Int = 5): List> { + val q = text.trim().take(60); if (q.length < 2) return emptyList() + val counts = HashMap() + readableDatabase.rawQuery("SELECT studios FROM items WHERE type IN ('Movie','Series') AND studios LIKE ?", arrayOf("%$q%")).use { c -> + while (c.moveToNext()) c.getString(0).split('|').filter { it.contains(q, ignoreCase = true) }.forEach { counts.merge(it, 1, Int::plus) } + } + return counts.entries.sortedByDescending { it.value }.take(limit).map { it.key to it.value } + } /** Films' running times by item, for Smart setup's hours estimate. Read only. */ @Synchronized fun runTimes(ids: Collection): Map = ids.distinct().chunked(400).flatMap { chunk -> readableDatabase.rawQuery("SELECT id, runtime_ms FROM items WHERE runtime_ms IS NOT NULL AND id IN (${chunk.joinToString(",") { "?" }})", chunk.toTypedArray()).use { c -> diff --git a/android/app/src/main/java/tv/orbit/classic/ChannelIdentities.kt b/android/app/src/main/java/tv/orbit/classic/ChannelIdentities.kt index 2eddca2..94b0b5c 100644 --- a/android/app/src/main/java/tv/orbit/classic/ChannelIdentities.kt +++ b/android/app/src/main/java/tv/orbit/classic/ChannelIdentities.kt @@ -560,15 +560,23 @@ internal const val CHRISTMAS_NUMBER = 310 * Orbit Christmas is seasonal (Paul, 6 November 2026: "from today ... off from 1st January"): on from 1 November to * 31 December, and nowhere in the guide or Home the rest of the year. */ -internal fun inSeason(number: Int, timeMs: Long, zone: java.time.ZoneId = java.time.ZoneId.systemDefault()): Boolean = - number != CHRISTMAS_NUMBER || java.time.Instant.ofEpochMilli(timeMs).atZone(zone).monthValue >= 11 +internal fun inSeason(number: Int, timeMs: Long, zone: java.time.ZoneId = java.time.ZoneId.systemDefault()): Boolean { + val date = java.time.Instant.ofEpochMilli(timeMs).atZone(zone).toLocalDate() + if (number == CHRISTMAS_NUMBER) return date.monthValue >= 11 + // A channel of your own with a season you chose. + return CustomChannels.of(number)?.season?.covers(date) ?: true +} /** * How far a seasonal channel may be booked: Orbit Christmas books nothing that starts from 1 January (it planned about a * week into January before, out of sight). Null for every other channel. */ internal fun seasonEndMs(number: Int, timeMs: Long, zone: java.time.ZoneId = java.time.ZoneId.systemDefault()): Long? { - if (number != CHRISTMAS_NUMBER) return null + if (number != CHRISTMAS_NUMBER) { + val season = CustomChannels.of(number)?.season ?: return null + val date = java.time.Instant.ofEpochMilli(timeMs).atZone(zone).toLocalDate() + return if (season.covers(date)) season.endAfter(date, zone) else timeMs + } val day = java.time.Instant.ofEpochMilli(timeMs).atZone(zone) if (day.monthValue < 11) return timeMs return java.time.LocalDate.of(day.year + 1, 1, 1).atStartOfDay(zone).toInstant().toEpochMilli() diff --git a/android/app/src/main/java/tv/orbit/classic/ChannelSchedule.kt b/android/app/src/main/java/tv/orbit/classic/ChannelSchedule.kt index 2a86852..28bb78a 100644 --- a/android/app/src/main/java/tv/orbit/classic/ChannelSchedule.kt +++ b/android/app/src/main/java/tv/orbit/classic/ChannelSchedule.kt @@ -60,6 +60,8 @@ internal data class ChannelProgramming(val number: Int, val name: String, val se * the channel's brief. Null keeps equal turns. Only Orbit Three has it (approved 4 November 2026). */ val tierWeights: Map? = null, + /** Weighted channels only: how long a file rests before it airs again, where the pool allows ([SAME_FILE_MS] unless set). */ + val fileRestMs: Long = SAME_FILE_MS, /** A film channel's everyday blocks rest each film for a share of how long their own films take to play through ([adaptiveRestMs]). */ val adaptiveFilmRest: Boolean = false, /** diff --git a/android/app/src/main/java/tv/orbit/classic/ChannelScheduler.kt b/android/app/src/main/java/tv/orbit/classic/ChannelScheduler.kt index 0a6efa7..765e834 100644 --- a/android/app/src/main/java/tv/orbit/classic/ChannelScheduler.kt +++ b/android/app/src/main/java/tv/orbit/classic/ChannelScheduler.kt @@ -102,6 +102,9 @@ internal class ChannelScheduler(private val store: ScheduleStore, Log.i("OrbitSchedule", "evidence asked=${ids.distinct().size} missing=${missing.size} read=$read failedBatches=$failed") // Emby's collections, for verified franchise links: resumable from where the last read stopped, a bounded number per run. val collections = store.collectionsFile() + // Read before collections were paged (every one stopped at 300): set aside once and read again in full. + if (collections.exists() && collections.useLines { lines -> lines.firstOrNull()?.contains("\"complete\"") != true }) + collections.renameTo(java.io.File(collections.path + ".before-paged")) val done = if (collections.exists()) collections.useLines { it.count() } else 0 var start = done; var sets = 0; var total = -1 try { @@ -360,7 +363,7 @@ internal class ChannelScheduler(private val store: ScheduleStore, (if (number == PREMIERE_NUMBER && premieres.isNotEmpty()) approvedDebutSlots(premieres) else emptyList()) val plan = topUpPlan(existing, base, pool?.series?.let { withoutFailed(it + premiereRotation(number, premieres, now).filter { p -> it.none { s -> s.id == p.id } }, store.loadFailed(userId)) }, now, programming.filmRestMs, programming.finishTogether, programming.dayParts, avoid = { show, startMs, endMs -> others(show, startMs, endMs) }, shuffle = programming.shuffleEpisodes, mixed = programming::mixes, - weightOf = programming.tierWeights?.let { programming::weightOf }, adaptiveRest = programming.adaptiveFilmRest, stories = programming.storyGrouping, shorts = programming.shorts, marathon = programming.marathon, + weightOf = programming.tierWeights?.let { programming::weightOf }, adaptiveRest = programming.adaptiveFilmRest, fileRestMs = programming.fileRestMs, stories = programming.storyGrouping, shorts = programming.shorts, marathon = programming.marathon, fixed = fixed, held = seasonalHeld().let { seasonal -> val premiere = premiereHeld(number); { f: PoolSeries, at: Long -> seasonal(f, at) || premiere(f, at) } }, seasonEndMs = seasonEndMs(number, now)) ?: throw EmbyCheckException("${programming.name} has no episodes to schedule.") diff --git a/android/app/src/main/java/tv/orbit/classic/CreateChannel.kt b/android/app/src/main/java/tv/orbit/classic/CreateChannel.kt index d27feaf..f4314f2 100644 --- a/android/app/src/main/java/tv/orbit/classic/CreateChannel.kt +++ b/android/app/src/main/java/tv/orbit/classic/CreateChannel.kt @@ -52,7 +52,24 @@ internal class ChannelMaker( /** For each title, the other channels already showing it (Paul, 7 November 2026: "check conflicts with the rest of the channels"). */ val carriedBy: (picks: Map, number: Int?) -> Map> = { _, _ -> emptyMap() }, /** How long the picks run all told, in milliseconds, or null when the library can't say. */ - val runTime: suspend (List) -> Long? = { null }) + val runTime: suspend (List) -> Long? = { null }, + /** Your Emby collections, for Browse › From a collection: each one's name, members and whether all of them were read. */ + val collections: suspend () -> List = { emptyList() }, + /** Titles by item from the catalogue alone, quickly, for listing a collection. */ + val rowsOf: suspend (List) -> List = { emptyList() }, + /** Networks and studios by name, with their title counts. */ + val studios: suspend (String) -> List> = { emptyList() }) + +/** One of the library's collections as Orbit read it. [complete] is false when it stopped short of [total]. */ +internal class LibraryCollection(val name: String, val members: List, val total: Int, val complete: Boolean) + +/** The collections the Chair keeps a copy of, read from its file; nothing when it hasn't read them yet. */ +internal fun readCollections(file: java.io.File): List = if (!file.exists()) emptyList() else + file.readLines().mapNotNull { line -> runCatching { org.json.JSONObject(line) }.getOrNull() }.map { o -> + val members = o.optJSONArray("members")?.let { a -> (0 until a.length()).map { a.getString(it) } }.orEmpty() + // Read before paging, every collection stopped at 300: treat one of exactly that size as possibly cut short. + LibraryCollection(o.optString("name"), members, o.optInt("total", members.size), if (o.has("complete")) o.optBoolean("complete") else members.size < 300) + }.filter { it.name.isNotBlank() && it.members.isNotEmpty() }.distinctBy { it.name }.sortedBy { it.name.lowercase() } internal enum class CreateStep(val title: String) { Start("Create a channel"), Name("Name and number"), Shows("Shows and films"), Style("How it plays"), Hours("When it's on") } @@ -157,7 +174,10 @@ internal fun CreateChannelFlow(maker: ChannelMaker, editing: CustomChannel?, onD OrbitButton(if (working) "Making it…" else if (editing != null) "Save changes" else "Create and switch on", Modifier.width(260.dp), enabled = !working) { working = true scope.launch { - val channel = CustomChannel(number, name.trim(), style, hours, description.trim(), chosen.map { it.title }) + // Editing on the TV keeps what the phone set: the season, and a shaped layout while the shows and style stay. + val kept = editing?.takeIf { it.style == style && it.shows.toSet() == chosen.map { c -> c.title }.toSet() } + val channel = CustomChannel(number, name.trim(), style, hours, description.trim(), chosen.map { it.title }, + slots = kept?.slots.orEmpty(), core = kept?.core.orEmpty(), season = editing?.season) onDone(runCatching { maker.create(channel, chosen) }.getOrElse { "That channel couldn't be made. Try again." }) } } diff --git a/android/app/src/main/java/tv/orbit/classic/CustomChannels.kt b/android/app/src/main/java/tv/orbit/classic/CustomChannels.kt index 12555d0..767c12b 100644 --- a/android/app/src/main/java/tv/orbit/classic/CustomChannels.kt +++ b/android/app/src/main/java/tv/orbit/classic/CustomChannels.kt @@ -40,24 +40,30 @@ internal data class CustomChannel(val number: Int, val name: String, val style: /** The shows' titles in the order they were added: Blocks' timetable follows it. The shows themselves are the accepted choices. */ val shows: List = emptyList(), /** Shaped only: each title's slot, and the core titles. */ - val slots: Map = emptyMap(), val core: Set = emptySet()) { + val slots: Map = emptyMap(), val core: Set = emptySet(), + /** On air only through this part of the year, if you chose one (Paul, 7 November 2026: an optional choice, with dates). */ + val season: SeasonWindow? = null) { init { require(number in YOURS_FIRST..YOURS_LAST && name.isNotBlank() && name.length <= 40) } fun toJson(): JSONObject = JSONObject().put("number", number).put("name", name).put("style", style.name).put("description", description) .put("hours", hours?.let { JSONObject().put("from", it.fromHour).put("to", it.toHour) } ?: JSONObject.NULL).put("shows", JSONArray(shows)) - .put("slots", JSONObject(slots.mapValues { it.value.name })).put("core", JSONArray(core.toList())) + .put("slots", JSONObject(slots.mapValues { it.value.name })).put("core", JSONArray(core.toList())).put("season", season?.toJson() ?: JSONObject.NULL) companion object { fun fromJson(o: JSONObject) = CustomChannel(o.getInt("number"), o.getString("name").take(40), runCatching { PlayStyle.valueOf(o.optString("style")) }.getOrDefault(PlayStyle.Standard), o.optJSONObject("hours")?.let { OnHours(it.getInt("from").coerceIn(0, 23), it.getInt("to").coerceIn(0, 24)) }, o.optString("description").take(120), o.optJSONArray("shows")?.let { a -> (0 until minOf(a.length(), 200)).map { a.getString(it).take(160) } }.orEmpty(), o.optJSONObject("slots")?.let { m -> m.keys().asSequence().take(200).mapNotNull { k -> runCatching { k.take(160) to Slot.valueOf(m.getString(k)) }.getOrNull() }.toMap() }.orEmpty(), - o.optJSONArray("core")?.let { a -> (0 until minOf(a.length(), 20)).map { a.getString(it).take(160) }.toSet() }.orEmpty()) + o.optJSONArray("core")?.let { a -> (0 until minOf(a.length(), 20)).map { a.getString(it).take(160) }.toSet() }.orEmpty(), + SeasonWindow.of(o.optJSONObject("season"))) } } /** Short episodes on a channel of your own: the same slots as ToonZ's, under a plain name. */ internal val YoursShorts = ShortsRule { _, _ -> "Shorts" } +/** How long a shaped channel's films and episodes rest before airing again. */ +internal const val SHAPED_FILE_REST_MS = 6 * 24 * 60 * 60_000L + /** How many episodes a marathon runs before the next show takes over. */ internal const val MARATHON_RUN = 4 @@ -105,6 +111,9 @@ internal fun programmingOf(channel: CustomChannel): ChannelProgramming = Channel storyGrouping = channel.style == PlayStyle.Standard || channel.style == PlayStyle.Shaped, shorts = if (channel.style == PlayStyle.Standard || channel.style == PlayStyle.Shaped) YoursShorts else null, tierWeights = if (channel.style == PlayStyle.Shaped && channel.core.isNotEmpty()) shapedWeights(channel.core) else null, + // A shaped channel's films and episodes rest most of a week before airing again, where it has enough to fill it (the + // Crunchyroll test: with a day's rest, its films came round every three days). + fileRestMs = if (channel.style == PlayStyle.Shaped) SHAPED_FILE_REST_MS else SAME_FILE_MS, marathon = if (channel.style == PlayStyle.Marathon) MARATHON_RUN else 0) /** diff --git a/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt b/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt index 2c56226..d0c5b83 100644 --- a/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt +++ b/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt @@ -543,12 +543,18 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea showsOf = { number -> withContext(Dispatchers.IO) { scheduleStore.loadChoices(active.accountId, number).accepted } }, browse = { genre, studio, ratings, type -> withContext(Dispatchers.IO) { catalogue.browseRows(genre, studio, ratings, type) } }, facets = { withContext(Dispatchers.IO) { catalogue.facets() } }, - shapeOf = { ids -> withContext(Dispatchers.IO) { catalogue.shapeRows(ids) } }, - runTime = { rows -> withContext(Dispatchers.IO) { - val films = rows.filter { it.type == "Movie" }.let { f -> catalogue.runTimes(f.map { it.id }).values.sum() } - val series = rows.filter { it.type == "Series" }.take(40).map { active.seriesRunTime(it.id) } - if (series.any { it == null }) null else films + series.sumOf { it ?: 0L } + // With each title's running time where the library can say (films from the catalogue, up to 60 series from Emby), + // so the Director balances the day by hours, not just by counts. + shapeOf = { ids -> withContext(Dispatchers.IO) { + val rows = catalogue.shapeRows(ids); val films = catalogue.runTimes(rows.filter { it.type == "Movie" }.map { it.id }) + var asked = 0 + rows.map { r -> val ms = if (r.type == "Movie") films[r.id] else if (asked++ < 60) active.seriesRunTime(r.id) else null + ShapeRow(r.id, r.type, r.title, r.year, r.rating, r.genres, ms) } } }, + collections = { withContext(Dispatchers.IO) { readCollections(scheduleStore.collectionsFile()) } }, + rowsOf = { ids -> withContext(Dispatchers.IO) { catalogue.shapeRows(ids) } }, + studios = { text -> withContext(Dispatchers.IO) { catalogue.studiosMatching(text) } }, + runTime = { rows -> rows.takeIf { r -> r.isNotEmpty() && r.all { it.runMs != null } }?.sumOf { it.runMs ?: 0L } }, carriedBy = { picks, number -> titlesCarriedBy(picks, scheduledChannels.values.filter { it.number != number }) }, create = { asked, shows -> // Shaped on the TV, or from the phone without a layout: the Director lays it out from the catalogue. diff --git a/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackProtocol.kt b/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackProtocol.kt index 95ef7e0..6ff2ae7 100644 --- a/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackProtocol.kt +++ b/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackProtocol.kt @@ -46,6 +46,10 @@ internal object PlaybackUrls { internal const val PLAYBACK_INFO_TIMEOUT_MS = 45_000 /** A temporary session is owned by the sample screen, never by persistent storage. */ +/** Collections are read a page at a time, up to this many members each. */ +internal const val COLLECTION_PAGE = 500 +internal const val COLLECTION_MAX = 5000 + internal class EmbySampleSession(private val transport: EmbyTransport, private var token: String?, private val userId: String, sample: EmbySample) { var sample: EmbySample = sample @@ -286,10 +290,20 @@ internal class EmbySampleSession(private val transport: EmbyTransport, private v val rows = body.optJSONArray("Items") val sets = (0 until (rows?.length() ?: 0)).mapNotNull { rows!!.optJSONObject(it) }.filter { EmbyClient.validId(it.optString("Id")) } return sets.map { set -> - val members = transport.execute(EmbyRequest("GET", "/Items?UserId=$userId&ParentId=${set.optString("Id")}&Limit=300&Fields=ProviderIds&EnableImages=false&EnableUserData=false", - token = currentToken(), readTimeoutMs = WHOLE_SERIES_TIMEOUT_MS)).let { r -> EmbyClient.expectSuccess(r.status, false); EmbyClient.parse(r.body).optJSONArray("Items") } + // Every member, a page at a time (Paul, 7 November 2026: it stopped at 300, so big collections were cut short), up to + // COLLECTION_MAX; "complete" says whether all of them were read. + val members = ArrayList(); var total = 0 + while (members.size < COLLECTION_MAX) { + val page = transport.execute(EmbyRequest("GET", "/Items?UserId=$userId&ParentId=${set.optString("Id")}&StartIndex=${members.size}&Limit=$COLLECTION_PAGE&SortBy=SortName&SortOrder=Ascending&Fields=ProviderIds&EnableImages=false&EnableUserData=false", + token = currentToken(), readTimeoutMs = WHOLE_SERIES_TIMEOUT_MS)).let { r -> EmbyClient.expectSuccess(r.status, false); EmbyClient.parse(r.body) } + val items = page.optJSONArray("Items") + total = page.optInt("TotalRecordCount", members.size + (items?.length() ?: 0)) + val ids = (0 until (items?.length() ?: 0)).mapNotNull { items!!.optJSONObject(it)?.optString("Id")?.takeIf(EmbyClient::validId) } + members += ids + if (ids.size < COLLECTION_PAGE || members.size >= total) break + } JSONObject().put("id", set.optString("Id")).put("name", EmbyClient.clean(set.optString("Name"), 120)) - .put("members", org.json.JSONArray((0 until (members?.length() ?: 0)).mapNotNull { members!!.optJSONObject(it)?.optString("Id")?.takeIf(EmbyClient::validId) })) + .put("members", org.json.JSONArray(members.take(COLLECTION_MAX))).put("total", total).put("complete", members.size >= total) } to body.optInt("TotalRecordCount", sets.size) } diff --git a/android/app/src/main/java/tv/orbit/classic/PhoneLink.kt b/android/app/src/main/java/tv/orbit/classic/PhoneLink.kt index 4a40f1e..f2e79da 100644 --- a/android/app/src/main/java/tv/orbit/classic/PhoneLink.kt +++ b/android/app/src/main/java/tv/orbit/classic/PhoneLink.kt @@ -310,7 +310,31 @@ internal object PhoneLink { val (genres, studios) = runBlocking { h.maker.facets() } json(out, 200, JSONObject().put("genres", JSONArray(genres)).put("studios", JSONArray(studios)).put("ratings", JSONArray(RatingGroups.keys.toList()))) } - "GET /api/browse" -> { + // Create's one search (Paul, 7 November 2026: "search could include the collections"): titles, collections, networks + // and genres together. + "GET /api/search" -> { + val q = r.query["q"].orEmpty().trim().take(80) + if (q.length < 2) return json(out, 200, JSONObject().put("collections", JSONArray()).put("networks", JSONArray()).put("genres", JSONArray()).put("titles", JSONArray())) + val cols = runBlocking { h.maker.collections() }.filter { it.name.contains(q, ignoreCase = true) }.sortedBy { !it.name.startsWith(q, ignoreCase = true) }.take(5) + val nets = runBlocking { h.maker.studios(q) } + val genres = runBlocking { h.maker.facets() }.first.filter { it.contains(q, ignoreCase = true) }.take(4) + val titles = runBlocking { h.maker.search(q) }.take(20) + json(out, 200, JSONObject() + .put("collections", JSONArray(cols.map { c -> JSONObject().put("name", c.name).put("count", c.members.size).put("total", c.total).put("complete", c.complete) })) + .put("networks", JSONArray(nets.map { (n, k) -> JSONObject().put("name", n).put("count", k) })).put("genres", JSONArray(genres)) + .put("titles", JSONArray(titles.map(::suggestionJson)))) + } + "GET /api/collections" -> { + val all = runBlocking { h.maker.collections() } + json(out, 200, JSONObject().put("collections", JSONArray(all.map { c -> JSONObject().put("name", c.name).put("count", c.members.size).put("total", c.total).put("complete", c.complete) }))) + } + "GET /api/browse" -> if (r.query["collection"] != null) { + // From a collection: its actual members, as the library lists them, not a guess from its name. + val c = runBlocking { h.maker.collections() }.firstOrNull { it.name == r.query["collection"] } ?: return json(out, 404, JSONObject().put("error", "That collection isn't in the library copy yet.")) + val rows = runBlocking { h.maker.rowsOf(c.members.take(1000)) } + json(out, 200, JSONObject().put("complete", c.complete).put("total", c.total).put("found", rows.size).put("items", JSONArray(rows.map { row -> suggestionJson(Suggestion(row.id, row.title, row.year, row.type, "", + listOfNotNull(row.genres.take(2).joinToString(", ").ifEmpty { null }, row.rating.ifEmpty { null }).joinToString(" · ").ifEmpty { "In ${c.name}" })).put("band", ratingBand(row.rating).name) }))) + } else { val rows = runBlocking { h.maker.browse(r.query["genre"]?.take(60), r.query["studio"]?.take(80), RatingGroups[r.query["rating"]].orEmpty(), r.query["type"]?.takeIf { it == "Movie" || it == "Series" }) } json(out, 200, JSONArray(rows.map { row -> suggestionJson(Suggestion(row.id, row.title, row.year, row.type, "", listOfNotNull(row.genres.take(2).joinToString(", ").ifEmpty { null }, row.rating.ifEmpty { null }).joinToString(" · ").ifEmpty { "In your library" })) })) @@ -326,8 +350,12 @@ internal object PhoneLink { val total = runCatching { runBlocking { h.maker.runTime(rows) } }.getOrNull() json(out, 200, JSONObject().put("slots", JSONObject(shape.slots.mapValues { it.value.name })).put("core", JSONArray(shape.core.toList())) .put("mixed", shape.slots.isEmpty() && rows.size >= 3) + // What the Director would suggest but leaves to you: stars on a film channel, and a season. + .put("suggestedCore", JSONArray(shape.suggestedCore.toList())).put("notes", JSONArray(shape.notes)) + .put("suggestedSeason", shape.suggestedSeason?.let { it.toJson().put("label", it.label) } ?: JSONObject.NULL) .put("week", total?.takeIf { it > 0 }?.let { weekLine(it, hoursPerDay) } ?: weekCheck(series, films) ?: JSONObject.NULL) - .put("hours", total?.let { it / 3_600_000.0 } ?: JSONObject.NULL)) + .put("hours", total?.let { it / 3_600_000.0 } ?: JSONObject.NULL) + .put("runHours", JSONObject(rows.filter { it.runMs != null }.associate { it.id to it.runMs!! / 3_600_000.0 }))) } "POST /api/clashes" -> { val o = runCatching { JSONObject(r.body) }.getOrNull() ?: return json(out, 400, JSONObject()) @@ -348,7 +376,8 @@ internal object PhoneLink { if (shows.isEmpty()) return json(out, 400, JSONObject().put("error", "Add at least one show or film.")) // Shaped: the phone's layout, by item, kept by title as the planner reads it. val titleOf = shows.associate { it.id to it.title } - val laidOut = if (channel.style != PlayStyle.Shaped) channel else channel.copy( + val seasoned = channel.copy(season = SeasonWindow.of(o.optJSONObject("season"))) + val laidOut = if (seasoned.style != PlayStyle.Shaped) seasoned else seasoned.copy( slots = o.optJSONObject("slots")?.let { m -> m.keys().asSequence().mapNotNull { id -> titleOf[id]?.let { t -> runCatching { t to Slot.valueOf(m.getString(id)) }.getOrNull() } }.toMap() }.orEmpty(), core = o.optJSONArray("core")?.let { a -> (0 until minOf(a.length(), 20)).mapNotNull { titleOf[a.getString(it)] }.toSet() }.orEmpty()) val said = runBlocking { withContext(mainDispatcher) { h.maker.create(laidOut, shows) } } diff --git a/android/app/src/main/java/tv/orbit/classic/SmartSetup.kt b/android/app/src/main/java/tv/orbit/classic/SmartSetup.kt index 593296f..4427e96 100644 --- a/android/app/src/main/java/tv/orbit/classic/SmartSetup.kt +++ b/android/app/src/main/java/tv/orbit/classic/SmartSetup.kt @@ -11,37 +11,157 @@ internal enum class Slot(val label: String, val fromHour: Int, val toHour: Int) Daytime("Daytime", 6, 17), Evening("Evening", 17, 22), Late("Late", 22, 6) } -/** What the Director reads of a title to place it: its kind, age rating, genres and year. */ -internal class ShapeRow(val id: String, val type: String, val title: String, val year: Int?, val rating: String, val genres: Set) +/** What the Director reads of a title to place it: its kind, age rating, genres and year, and its running time all told when known. */ +internal class ShapeRow(val id: String, val type: String, val title: String, val year: Int?, val rating: String, val genres: Set, val runMs: Long? = null) -/** A channel laid out: each title's slot, and the core titles. */ -internal class Shape(val slots: Map, val core: Set) +/** + * A channel laid out: each title's slot (none: it plays all day), the core titles, and what the Director would suggest but + * leaves to you ([suggestedCore], [suggestedSeason]), with [notes] saying why it moved anything. + */ +internal class Shape(val slots: Map, val core: Set, val suggestedCore: Set = emptySet(), + val suggestedSeason: SeasonWindow? = null, val notes: List = emptyList()) + +/** Who a title is for, from its age rating in whichever country's system it uses. Unknown is never taken as Kids. */ +internal enum class RatingBand { Kids, Family, Teen, Adult, Unknown } + +private val BandOf = mapOf( + // United States + "TV-Y" to RatingBand.Kids, "TV-Y7" to RatingBand.Kids, "TV-Y7-FV" to RatingBand.Kids, "TV-G" to RatingBand.Kids, "G" to RatingBand.Kids, + "TV-PG" to RatingBand.Family, "PG" to RatingBand.Family, "PG-13" to RatingBand.Teen, "TV-14" to RatingBand.Teen, + "R" to RatingBand.Adult, "TV-MA" to RatingBand.Adult, "NC-17" to RatingBand.Adult, "X" to RatingBand.Adult, + // United Kingdom + "U" to RatingBand.Kids, "UC" to RatingBand.Kids, "12A" to RatingBand.Teen, "R18" to RatingBand.Adult, + // Australia and New Zealand + "M" to RatingBand.Teen, "MA15+" to RatingBand.Adult, "R18+" to RatingBand.Adult, "RP13" to RatingBand.Teen, "RP16" to RatingBand.Adult, + // Brazil, Netherlands and others without a number + "L" to RatingBand.Kids, "AL" to RatingBand.Kids, "ALL" to RatingBand.Kids, "E" to RatingBand.Kids) + +/** + * Normalises an age rating from any country: US and UK names, Germany's FSK 0 to 18, Australia's, Brazil's BR-L to BR-18, + * and any rating that's an age (12, 16+, DE-16). NR, Not Rated, Approved or nothing at all is Unknown. + */ +internal fun ratingBand(raw: String): RatingBand { + val r = raw.trim().uppercase().removePrefix("FSK").removePrefix("FSK-").trim() + BandOf[r]?.let { return it } + val bare = r.substringAfter('-', r).trim().removeSuffix("+") + BandOf[bare]?.let { if (r.length > bare.length) return it } + val age = Regex("(\\d{1,2})").find(r)?.groupValues?.get(1)?.toIntOrNull() ?: return RatingBand.Unknown + return when { age <= 6 -> RatingBand.Kids; age <= 10 -> RatingBand.Family; age <= 14 -> RatingBand.Teen; else -> RatingBand.Adult } +} -private val LateRatings = setOf("TV-MA", "R", "NC-17", "X", "18", "R18", "MA15+") -private val DayRatings = setOf("TV-Y", "TV-Y7", "TV-Y7-FV", "TV-G", "G", "U", "PG") private val DayGenres = setOf("Children", "Kids", "Family", "Game Show", "Reality", "Talk", "Home and Garden", "Food", "Travel") -/** Where the Director would put one title. */ -internal fun slotFor(row: ShapeRow): Slot = when { - row.rating in LateRatings || "Horror" in row.genres -> Slot.Late - row.type == "Movie" && row.genres.any { it in setOf("Thriller", "Crime", "War") } -> Slot.Late - row.rating in DayRatings || row.genres.any { it in DayGenres } -> Slot.Daytime - "Animation" in row.genres && "Anime" !in row.genres -> Slot.Daytime - "Comedy" in row.genres && (row.year ?: 3000) < 2000 -> Slot.Daytime - else -> Slot.Evening +/** Genres nearly every pick shares: the channel's identity, so they say nothing about where one title belongs. */ +internal fun sharedGenres(rows: List): Set = + rows.flatMap { it.genres }.groupingBy { it }.eachCount().filter { rows.size >= 3 && it.value >= rows.size * .75 }.keys + +/** + * Where the Director would put one title, judged against the channel it's on (Paul, 7 November 2026: on an anime channel, + * Animation says nothing; the rating and tone do). The age rating comes first; genres only where they set the title apart. + */ +internal fun slotFor(row: ShapeRow, shared: Set = emptySet()): Slot { + val g = row.genres - shared + val band = ratingBand(row.rating) + return when { + band == RatingBand.Adult || "Horror" in g -> Slot.Late + row.type == "Movie" && g.any { it in setOf("Thriller", "Crime", "War") } && band != RatingBand.Kids && band != RatingBand.Family -> Slot.Late + band == RatingBand.Teen -> Slot.Evening + band == RatingBand.Kids || band == RatingBand.Family || g.any { it in DayGenres } -> Slot.Daytime + "Animation" in g && "Anime" !in row.genres -> Slot.Daytime + "Comedy" in g && (row.year ?: 3000) < 2000 -> Slot.Daytime + else -> Slot.Evening + } +} + +/** Hours a week each slot fills, all day every day. */ +private val WeekHours = mapOf(Slot.Daytime to 11 * 7.0, Slot.Evening to 5 * 7.0, Slot.Late to 8 * 7.0) + +/** Which titles may move into [to] to fill it: adult titles never leave Late, and only Kids and Family ones join the daytime. */ +private fun mayMove(row: ShapeRow, from: Slot, to: Slot): Boolean { + val band = ratingBand(row.rating) + return when (to) { + Slot.Evening -> from == Slot.Daytime + Slot.Late -> from == Slot.Evening || (from == Slot.Daytime && band != RatingBand.Kids) + Slot.Daytime -> from == Slot.Evening && (band == RatingBand.Kids || band == RatingBand.Family) + } } /** - * The whole layout: every title's slot, and up to three core titles, the newest of the evening's (or of all, with none there). - * The slots are a starting suggestion, not a rule (Paul, 7 November 2026): a channel that's nearly all one kind, an - * all-horror channel or a kids' one, isn't split up, and everything plays all day. + * The whole layout (Paul, 7 November 2026: a starting suggestion, balanced from the channel's own content): + * - A channel nearly all one kind, an all-horror channel or a kids' one, plays all day instead of being split. + * - Otherwise each title gets its slot ([slotFor]), then any slot that would run out within a week is topped up from + * one with plenty to spare, by running time when it's known, so a small evening isn't repeated night after night. + * - Core: up to three, the newest evening shows. On a film channel nothing is starred for you: the Director's choice is + * offered as [Shape.suggestedCore] to accept or not. */ internal fun shapeChannel(rows: List): Shape { - val suggested = rows.associate { it.id to slotFor(it) } + val shared = sharedGenres(rows) + val suggested = rows.associate { it.id to slotFor(it, shared) } val largest = suggested.values.groupingBy { it }.eachCount().maxOfOrNull { it.value } ?: 0 - val slots = if (rows.size >= 3 && largest >= rows.size * .75) emptyMap() else suggested - val evening = rows.filter { slots[it.id] == Slot.Evening }.ifEmpty { rows } - return Shape(slots, evening.sortedByDescending { it.year ?: 0 }.take(3).map { it.id }.toSet()) + val films = rows.count { it.type == "Movie" } + val filmChannel = rows.isNotEmpty() && films >= rows.size * .75 + val season = suggestSeason(rows) + if (rows.size >= 3 && largest >= rows.size * .75) { + val pick = rows.sortedByDescending { it.year ?: 0 }.take(3).map { it.id }.toSet() + return Shape(emptyMap(), if (filmChannel) emptySet() else pick, if (filmChannel) pick else emptySet(), season, + listOf("Nearly all of these belong in one part of the day, so they play all day rather than being split.")) + } + val slots = suggested.toMutableMap() + val notes = mutableListOf() + val byId = rows.associateBy { it.id } + // Running time per title: what's known, else a typical length for its kind. + val known = rows.mapNotNull { it.runMs } + fun hours(r: ShapeRow) = (r.runMs ?: if (r.type == "Movie") 6_300_000L else known.takeIf { it.isNotEmpty() }?.average()?.toLong() ?: 36_000_000L) / 3_600_000.0 + val total = rows.sumOf(::hours) + val scale = minOf(1.0, total / 168.0) + fun content(s: Slot) = slots.filterValues { it == s }.keys.sumOf { hours(byId.getValue(it)) } + fun target(s: Slot) = WeekHours.getValue(s) * scale + for (to in listOf(Slot.Evening, Slot.Late, Slot.Daytime)) { + if (slots.values.none { it == to } && to != Slot.Evening) continue + val preferred = listOf(RatingBand.Teen, RatingBand.Unknown, RatingBand.Family, RatingBand.Kids) + for (from in Slot.entries.filter { it != to }) { + val candidates = rows.filter { slots[it.id] == from && mayMove(it, from, to) } + .sortedWith(compareBy { preferred.indexOf(ratingBand(it.rating)) }.thenByDescending { it.year ?: 0 }) + for (c in candidates) { + if (content(to) >= target(to)) break + if (content(from) - hours(c) < target(from) || slots.values.count { it == from } <= 1) continue + slots[c.id] = to + notes += "${c.title} moves to ${to.label} to fill it." + } + } + } + // Core shows are series where there are any: a film plays once a week whatever its star. + val evening = rows.filter { slots[it.id] == Slot.Evening }.ifEmpty { rows }.let { e -> e.filter { it.type == "Series" }.ifEmpty { e } } + val pick = evening.sortedByDescending { it.year ?: 0 }.take(3).map { it.id }.toSet() + return Shape(slots, if (filmChannel) emptySet() else pick, if (filmChannel) pick else emptySet(), season, notes.take(12)) +} + +/** A Christmas channel's season, offered by the Director when most of the picks are Christmas titles; the choice is yours. */ +internal fun suggestSeason(rows: List): SeasonWindow? { + val festive = rows.count { r -> Regex("(?i)christmas|xmas|holiday|noel|santa|mistletoe|snow").containsMatchIn(r.title) || "Christmas" in r.genres } + return if (rows.size >= 3 && festive >= rows.size * .5) SeasonWindow(11, 1, 12, 31) else null +} + +/** When a channel of your own is on air through the year: from one day to another, wrapping past New Year. */ +internal data class SeasonWindow(val fromMonth: Int, val fromDay: Int, val toMonth: Int, val toDay: Int) { + init { require(fromMonth in 1..12 && toMonth in 1..12 && fromDay in 1..31 && toDay in 1..31) } + private fun key(m: Int, d: Int) = m * 100 + d + fun covers(date: java.time.LocalDate): Boolean { + val k = key(date.monthValue, date.dayOfMonth); val from = key(fromMonth, fromDay); val to = key(toMonth, toDay) + return if (from <= to) k in from..to else k >= from || k <= to + } + /** The first moment after the window ends, from [date] inside it. */ + fun endAfter(date: java.time.LocalDate, zone: java.time.ZoneId): Long { + var end = java.time.LocalDate.of(date.year, toMonth, 1).let { it.withDayOfMonth(minOf(toDay, it.lengthOfMonth())) } + if (end.isBefore(date)) end = end.plusYears(1) + return end.plusDays(1).atStartOfDay(zone).toInstant().toEpochMilli() + } + val label get() = "%d %s to %d %s".format(fromDay, month(fromMonth), toDay, month(toMonth)) + private fun month(m: Int) = java.time.Month.of(m).getDisplayName(java.time.format.TextStyle.SHORT, java.util.Locale.UK) + fun toJson(): org.json.JSONObject = org.json.JSONObject().put("fromMonth", fromMonth).put("fromDay", fromDay).put("toMonth", toMonth).put("toDay", toDay) + companion object { + fun of(o: org.json.JSONObject?): SeasonWindow? = o?.let { runCatching { SeasonWindow(it.getInt("fromMonth"), it.getInt("fromDay"), it.getInt("toMonth"), it.getInt("toDay")) }.getOrNull() } + } } /** @@ -121,5 +241,7 @@ internal fun yourBrief(number: Int, name: String, rows: List): Brief? val years = rows.mapNotNull { it.year } val never = Regex("(?!)") return Brief(number, name, rows.map { it.type }.toSet(), common.ifEmpty { counts.keys.take(4).toSet() }, must, never, never, - (years.minOrNull() ?: 1900) - 5 to (years.maxOrNull() ?: 2030) + 5, kids = rows.all { it.rating in KidsOk }) + (years.minOrNull() ?: 1900) - 5 to (years.maxOrNull() ?: 2030) + 5, + // Unknown ratings never make a channel count as children's (Paul, 7 November 2026). + kids = rows.all { ratingBand(it.rating) == RatingBand.Kids || ratingBand(it.rating) == RatingBand.Family }) } diff --git a/android/app/src/test/java/tv/orbit/classic/PhoneLinkTest.kt b/android/app/src/test/java/tv/orbit/classic/PhoneLinkTest.kt index f5a4f30..587c55f 100644 --- a/android/app/src/test/java/tv/orbit/classic/PhoneLinkTest.kt +++ b/android/app/src/test/java/tv/orbit/classic/PhoneLinkTest.kt @@ -258,10 +258,19 @@ class PhoneLinkTest { val rows = listOf(ShapeRow("a1", "Series", "Bluey", 2018, "TV-Y", setOf("Animation")), ShapeRow("a2", "Series", "Line of Duty", 2012, "TV-MA", setOf("Drama"))) PhoneLink.handler = PhoneHandler(ChannelMaker({ _, _, _ -> emptyList() }, { emptyList() }, { c, s -> made = c to s; "${c.name} is ready" }, { emptyList() }, browse = { genre, _, ratings, _ -> rows.filter { genre == null || genre in it.genres }.filter { ratings.isEmpty() || it.rating in ratings } }, - facets = { listOf("Drama", "Animation") to listOf("BBC One") }, shapeOf = { ids -> rows.filter { it.id in ids } }), { false }, { }) + facets = { listOf("Drama", "Animation") to listOf("BBC One") }, shapeOf = { ids -> rows.filter { it.id in ids } }, + collections = { listOf(LibraryCollection("Crunchyroll", listOf("a1"), 1567, false)) }, rowsOf = { ids -> rows.filter { it.id in ids } }, + studios = { q -> listOf("Crunchyroll" to 15).filter { it.first.contains(q, ignoreCase = true) } }), { false }, { }) val cookie = joinedCookie() assertEquals("Drama", JSONObject(call("/api/facets", cookie = cookie).body).getJSONArray("genres").getString(0)) assertEquals(1, JSONArray(call("/api/browse?rating=Kids", cookie = cookie).body).length()) + // One search finds the collection and the network by name (Paul: "it didn't find crunchyroll"). + val found = JSONObject(call("/api/search?q=crunch", cookie = cookie).body) + assertEquals("Crunchyroll", found.getJSONArray("collections").getJSONObject(0).getString("name")) + assertFalse(found.getJSONArray("collections").getJSONObject(0).getBoolean("complete")) + assertEquals(15, found.getJSONArray("networks").getJSONObject(0).getInt("count")) + val members = JSONObject(call("/api/browse?collection=Crunchyroll", cookie = cookie).body) + assertEquals("Kids", members.getJSONArray("items").getJSONObject(0).getString("band")); assertFalse(members.getBoolean("complete")) val shape = JSONObject(call("/api/shape", "POST", """{"ids":["a1","a2"]}""", cookie = cookie).body) assertEquals("Daytime", shape.getJSONObject("slots").getString("a1")); assertEquals("Late", shape.getJSONObject("slots").getString("a2")) assertFalse(shape.isNull("week")) // two shows: it says so diff --git a/android/app/src/test/java/tv/orbit/classic/RoomsTest.kt b/android/app/src/test/java/tv/orbit/classic/RoomsTest.kt index a1a1d71..2bc1ca8 100644 --- a/android/app/src/test/java/tv/orbit/classic/RoomsTest.kt +++ b/android/app/src/test/java/tv/orbit/classic/RoomsTest.kt @@ -77,7 +77,8 @@ class RoomsTest { assertEquals(1, join.collect().getOrThrow()!!.getInt("version")) PhoneLink.offerRoom(null) // With no offer and no phones, the server stops altogether. - assertTrue(runCatching { call("POST", "/room/hello", "{}") }.isFailure) + // The close can take a moment to land when the full suite runs (it failed now and then): give it up to a second. + assertTrue((1..20).any { runCatching { call("POST", "/room/hello", "{}") }.isFailure.also { stopped -> if (!stopped) Thread.sleep(50) } }) } finally { PhoneLink.stop(); PhoneLink.allowed = EmbyServer::isHomeAddress; PhoneLink.bindTo = null; PhoneLink.port = PhoneLink.PORT } } diff --git a/android/app/src/test/java/tv/orbit/classic/SmartSetupRegressionTest.kt b/android/app/src/test/java/tv/orbit/classic/SmartSetupRegressionTest.kt new file mode 100644 index 0000000..fceb8e8 --- /dev/null +++ b/android/app/src/test/java/tv/orbit/classic/SmartSetupRegressionTest.kt @@ -0,0 +1,101 @@ +package tv.orbit.classic + +import org.json.JSONObject +import org.junit.Assert.* +import org.junit.Test +import java.time.ZoneId +import java.time.ZonedDateTime + +/** + * Smart setup v2 against Paul's two real collections (7 November 2026), kept as fixtures: Hallmark Christmas as Orbit + * Mistletoe and Crunchyroll as Orbit Sakura, planned for a week by the real planner. Titles, ratings, genres and running + * times only. + */ +class SmartSetupRegressionTest { + private val zone = ZoneId.of("Europe/London") + private val now = ZonedDateTime.of(2026, 11, 7, 9, 0, 0, 0, zone).toInstant().toEpochMilli() + private val week = 7 * 24 * 3_600_000L + private val fixture = JSONObject(javaClass.classLoader!!.getResource("fixtures/collections.json")!!.readText()) + + private class Run(val rows: List, val shape: Shape, val channel: CustomChannel, val plan: ChannelPlan) + private fun run(collection: String, number: Int, name: String): Run { + val a = fixture.getJSONArray(collection) + val items = (0 until a.length()).map { a.getJSONObject(it) } + val pool = items.map { o -> val e = o.getJSONArray("episodes") + PoolSeries(o.getString("id"), o.getString("title"), (0 until e.length()).map { k -> val x = e.getJSONArray(k); PoolEpisode(x.getString(0), x.getString(1), EpisodeMark(x.getInt(2), x.getInt(3)), x.getString(4), x.getLong(5)) }) } + val runOf = pool.associate { it.id to it.episodes.sumOf { e -> e.durationMs } } + val rows = items.map { o -> ShapeRow(o.getString("id"), o.getString("type"), o.getString("title"), if (o.isNull("year")) null else o.getInt("year"), o.getString("rating"), + o.getJSONArray("genres").let { g -> (0 until g.length()).map { g.getString(it) }.toSet() }, runOf[o.getString("id")]) } + val shape = shapeChannel(rows); val titleOf = rows.associate { it.id to it.title } + val channel = CustomChannel(number, name, PlayStyle.Shaped, shows = rows.map { it.title }, + slots = shape.slots.mapNotNull { (id, s) -> titleOf[id]?.let { it to s } }.toMap(), core = shape.core.mapNotNull { titleOf[it] }.toSet()) + val p = programmingOf(channel) + val plan = topUpPlan(null, ScheduleCursor(), pool, now, p.filmRestMs, p.finishTogether, p.dayParts, zone, shuffle = p.shuffleEpisodes, mixed = p::mixes, + weightOf = p.tierWeights?.let { p::weightOf }, adaptiveRest = p.adaptiveFilmRest, fileRestMs = p.fileRestMs, stories = p.storyGrouping, shorts = p.shorts, marathon = p.marathon)!! + return Run(rows, shape, channel, plan) + } + private fun repeats(plan: ChannelPlan) = plan.entries.filter { it.startMs < now + week }.groupBy { it.media.item.id }.values.sumOf { it.size - 1 } + + @Test fun mistletoeIsOneKindSoItPlaysAllDayWithNothingDecidedForYou() { + val r = run("Hallmark Christmas", 701, "Orbit Mistletoe") + assertTrue(r.shape.slots.isEmpty()); assertTrue(r.channel.dayParts().isEmpty()) + assertTrue(r.shape.core.isEmpty()); assertEquals(3, r.shape.suggestedCore.size) // film channel: stars only suggested + assertEquals(SeasonWindow(11, 1, 12, 31), r.shape.suggestedSeason) // offered, not applied + assertNull(r.channel.season) + assertEquals(0, repeats(r.plan)) + } + + @Test fun sakuraIsBalancedFromItsOwnContentAndRepeatsFarLess() { + val r = run("Crunchyroll", 702, "Orbit Sakura") + assertTrue("Animation" in sharedGenres(r.rows)) + val counts = r.shape.slots.values.groupingBy { it }.eachCount() + // The original run starved the evening (10 of 81): it now carries a fair share. + assertTrue(counts.getValue(Slot.Evening) >= r.rows.size / 4) + // Adult-rated titles stay late; FSK 16 is understood. + r.rows.filter { ratingBand(it.rating) == RatingBand.Adult }.forEach { assertEquals(it.title, Slot.Late, r.shape.slots[it.id]) } + assertEquals(Slot.Late, r.shape.slots[r.rows.first { it.title == "Murder Princess" }.id]) + // Core is series, not films. + assertTrue(r.shape.core.all { id -> r.rows.first { it.id == id }.type == "Series" }) + // Original: 34 repeats in the week, the first on Tuesday. Now far fewer, none before Friday. + assertTrue(repeats(r.plan) <= 15) + val firstRepeat = r.plan.entries.filter { it.startMs < now + week }.groupBy { it.media.item.id }.values.filter { it.size > 1 }.minOfOrNull { it[1].startMs } + assertTrue(firstRepeat == null || firstRepeat - now >= 5 * 24 * 3_600_000L) + // Every title gets airtime in the week. + assertEquals(r.rows.size, r.plan.entries.filter { it.startMs < now + week }.map { it.seriesId }.toSet().size) + } + + @Test fun ratingsFromEveryCountryAndUnknownIsNeverKids() { + assertEquals(RatingBand.Adult, ratingBand("FSK 16")); assertEquals(RatingBand.Adult, ratingBand("FSK 18")); assertEquals(RatingBand.Teen, ratingBand("FSK 12")) + assertEquals(RatingBand.Kids, ratingBand("FSK 0")); assertEquals(RatingBand.Family, ratingBand("FSK 6").let { if (it == RatingBand.Kids) RatingBand.Family else it }) + assertEquals(RatingBand.Adult, ratingBand("DE-16")); assertEquals(RatingBand.Teen, ratingBand("BR-14")); assertEquals(RatingBand.Kids, ratingBand("BR-L")) + assertEquals(RatingBand.Family, ratingBand("AU-PG")); assertEquals(RatingBand.Adult, ratingBand("MA15+")); assertEquals(RatingBand.Teen, ratingBand("M")) + assertEquals(RatingBand.Teen, ratingBand("12A")); assertEquals(RatingBand.Adult, ratingBand("15")); assertEquals(RatingBand.Adult, ratingBand("18")) + assertEquals(RatingBand.Teen, ratingBand("PG-13")); assertEquals(RatingBand.Adult, ratingBand("TV-MA")); assertEquals(RatingBand.Kids, ratingBand("TV-Y7")) + listOf("", "NR", "Not Rated", "Unrated", "Approved").forEach { assertEquals(it, RatingBand.Unknown, ratingBand(it)) } + // A channel with an unrated title isn't a children's channel. + assertFalse(yourBrief(701, "X", listOf(ShapeRow("a", "Series", "A", 2000, "TV-Y", setOf("Animation")), ShapeRow("b", "Series", "B", 2000, "", setOf("Animation"))))!!.kids) + } + + @Test fun aSeasonIsYoursToSetAndTheChannelKeepsToIt() { + val christmas = SeasonWindow(11, 1, 12, 31) + assertTrue(christmas.covers(java.time.LocalDate.of(2026, 12, 25))); assertFalse(christmas.covers(java.time.LocalDate.of(2026, 7, 1))) + val turn = SeasonWindow(12, 1, 1, 6) // across New Year + assertTrue(turn.covers(java.time.LocalDate.of(2027, 1, 3))); assertFalse(turn.covers(java.time.LocalDate.of(2027, 1, 7))) + assertEquals(java.time.LocalDate.of(2027, 1, 7).atStartOfDay(zone).toInstant().toEpochMilli(), turn.endAfter(java.time.LocalDate.of(2026, 12, 20), zone)) + assertEquals(turn, CustomChannel.fromJson(JSONObject(CustomChannel(701, "Mistletoe", season = turn).toJson().toString())).season) + assertNull(CustomChannel.fromJson(JSONObject(CustomChannel(701, "Mistletoe").toJson().toString())).season) + } + + @Test fun collectionsSayWhenTheyAreIncomplete() { + val file = java.io.File.createTempFile("collections", ".jsonl") + file.writeText(JSONObject().put("name", "Big").put("members", org.json.JSONArray((1..300).map { "$it" })).toString() + "\n" + + JSONObject().put("name", "Whole").put("members", org.json.JSONArray(listOf("1", "2"))).put("total", 2).put("complete", true).toString() + "\n" + + JSONObject().put("name", "Paged").put("members", org.json.JSONArray((1..600).map { "$it" })).put("total", 900).put("complete", false).toString() + "\n") + val read = readCollections(file).associateBy { it.name } + assertFalse(read.getValue("Big").complete) // read before paging: may be cut short + assertTrue(read.getValue("Whole").complete); assertFalse(read.getValue("Paged").complete); assertEquals(900, read.getValue("Paged").total) + file.delete() + } + + private fun CustomChannel.dayParts() = programmingOf(this).dayParts +} diff --git a/android/app/src/test/java/tv/orbit/classic/SmartSetupTest.kt b/android/app/src/test/java/tv/orbit/classic/SmartSetupTest.kt index 2205dca..bf1b90a 100644 --- a/android/app/src/test/java/tv/orbit/classic/SmartSetupTest.kt +++ b/android/app/src/test/java/tv/orbit/classic/SmartSetupTest.kt @@ -11,7 +11,9 @@ class SmartSetupTest { @Test fun lighterShowsInTheDaytimeTheMainOnesInTheEveningDarkerOnesLate() { assertEquals(Slot.Daytime, slotFor(row("Bluey", "Series", "TV-Y", "Animation"))) assertEquals(Slot.Daytime, slotFor(row("Bake Off", "Series", "", "Reality"))) - assertEquals(Slot.Daytime, slotFor(row("Frasier", "Series", "TV-14", "Comedy", year = 1993))) + // The rating comes first (v2): a TV-14 sitcom is evening viewing; an unrated older one is daytime. + assertEquals(Slot.Evening, slotFor(row("Frasier", "Series", "TV-14", "Comedy", year = 1993))) + assertEquals(Slot.Daytime, slotFor(row("Frasier", "Series", "", "Comedy", year = 1993))) assertEquals(Slot.Evening, slotFor(row("Doctor Who", "Series", "TV-14", "Drama", "Science Fiction"))) assertEquals(Slot.Late, slotFor(row("Line of Duty", "Series", "TV-MA", "Drama", "Crime"))) assertEquals(Slot.Late, slotFor(row("Alien", "Movie", "", "Horror"))) diff --git a/android/app/src/test/resources/fixtures/collections.json b/android/app/src/test/resources/fixtures/collections.json new file mode 100644 index 0000000..e13aec8 --- /dev/null +++ b/android/app/src/test/resources/fixtures/collections.json @@ -0,0 +1 @@ +{"Crunchyroll":[{"id":"225145","type":"Series","title":"Dragon Ball GT","year":1996,"rating":"","genres":["Action","Adventure","Animation","Anime","Comedy","Fantasy","Science Fiction","Thriller"],"episodes":[["228427","mediasource_228427",1,1,"",1448949],["228428","mediasource_228428",1,2,"",1448085],["228429","mediasource_228429",1,3,"",1448016],["228430","mediasource_228430",1,4,"",1448242],["228431","mediasource_228431",1,5,"",1448176],["228432","mediasource_228432",1,6,"",1448213],["228433","mediasource_228433",1,7,"",1448213],["6093800","mediasource_6093800",1,8,"",1449199],["228435","mediasource_228435",1,9,"",1448176],["228436","mediasource_228436",1,10,"",1448053],["6093799","mediasource_6093799",1,11,"",1448213],["228438","mediasource_228438",1,12,"",1448213],["228439","mediasource_228439",1,13,"",1448085],["228440","mediasource_228440",1,14,"",1478811],["228441","mediasource_228441",1,15,"",1448866],["6093801","mediasource_6093801",1,16,"",1448149],["228443","mediasource_228443",2,1,"",1448213],["6093802","mediasource_6093802",2,2,"",1448213],["228445","mediasource_228445",2,3,"",1448213],["228446","mediasource_228446",2,4,"",1478811],["228447","mediasource_228447",2,5,"",1448242],["228448","mediasource_228448",2,6,"",1449199],["228449","mediasource_228449",2,7,"",1448181],["228450","mediasource_228450",2,8,"",1448042],["228451","mediasource_228451",2,9,"",1448213],["228452","mediasource_228452",2,10,"",1448181],["6093804","mediasource_6093804",2,11,"",1448077],["228454","mediasource_228454",2,12,"",1448082],["228455","mediasource_228455",2,13,"",1449792],["228456","mediasource_228456",2,14,"",1448181],["6093805","mediasource_6093805",2,15,"",1448176],["228458","mediasource_228458",2,16,"",1448210],["228459","mediasource_228459",2,17,"",1448210],["228460","mediasource_228460",2,18,"",1448198],["228461","mediasource_228461",2,19,"",1451184],["228462","mediasource_228462",2,20,"",1449517],["228463","mediasource_228463",2,21,"",1448912],["6093803","mediasource_6093803",2,22,"",1449285],["228465","mediasource_228465",2,23,"",1478811],["228466","mediasource_228466",2,24,"",1449709],["228467","mediasource_228467",3,1,"",1449458],["228468","mediasource_228468",3,2,"",1449221],["228469","mediasource_228469",3,3,"",1451184],["228470","mediasource_228470",3,4,"",1451021],["6093796","mediasource_6093796",3,5,"",1451125],["228472","mediasource_228472",3,6,"",1451058],["228473","mediasource_228473",3,7,"",1450885],["228474","mediasource_228474",3,8,"",1451125],["228475","mediasource_228475",3,9,"",1451117],["228476","mediasource_228476",3,10,"",1478811],["6093797","mediasource_6093797",3,11,"",1451109],["228478","mediasource_228478",3,12,"",1450613],["6093794","mediasource_6093794",3,13,"",1450690],["228480","mediasource_228480",3,14,"",1450477],["6093798","mediasource_6093798",3,15,"",1450853],["6093795","mediasource_6093795",3,16,"",1451122],["228483","mediasource_228483",3,17,"",1450898],["228484","mediasource_228484",3,18,"",1450922],["228485","mediasource_228485",3,19,"",1451120],["228486","mediasource_228486",3,20,"",1451106],["228487","mediasource_228487",3,21,"",1450434],["228488","mediasource_228488",3,22,"",1451602],["6093793","mediasource_6093793",3,23,"",1451658],["228490","mediasource_228490",3,24,"",1451989]]},{"id":"225197","type":"Series","title":"Mobile Suit Gundam Wing","year":1995,"rating":"TV-14","genres":["Action","Adventure","Animation","Anime","Drama","Romance","Science Fiction"],"episodes":[["7115751","mediasource_7115751",1,1,"",1439296],["6892132","mediasource_6892132",1,2,"",1439829],["6892108","mediasource_6892108",1,3,"",1439680],["6892126","mediasource_6892126",1,4,"",1439850],["6892149","mediasource_6892149",1,5,"",1440064],["6892117","mediasource_6892117",1,6,"",1440170],["6892138","mediasource_6892138",1,7,"",1439850],["6892122","mediasource_6892122",1,8,"",1439850],["6892120","mediasource_6892120",1,9,"",1439580],["6892154","mediasource_6892154",1,10,"",1439914],["6892121","mediasource_6892121",1,11,"",1440000],["6892130","mediasource_6892130",1,12,"",1440512],["6892133","mediasource_6892133",1,13,"",1439509],["7115750","mediasource_7115750",1,14,"",1440000],["6892137","mediasource_6892137",1,15,"",1439872],["6892110","mediasource_6892110",1,16,"",1440640],["6892146","mediasource_6892146",1,17,"",1441630],["6892136","mediasource_6892136",1,18,"",1440661],["6892124","mediasource_6892124",1,19,"",1440050],["6892143","mediasource_6892143",1,20,"",1441350],["6892148","mediasource_6892148",1,21,"",1440220],["6892116","mediasource_6892116",1,22,"",1441050],["6892127","mediasource_6892127",1,23,"",1439680],["6892125","mediasource_6892125",1,24,"",1439680],["6892113","mediasource_6892113",1,25,"",1440000],["6892123","mediasource_6892123",1,26,"",1439476],["6892119","mediasource_6892119",1,27,"",1438964],["6892114","mediasource_6892114",1,28,"",1439156],["6892141","mediasource_6892141",1,29,"",1439476],["6892109","mediasource_6892109",1,30,"",1439476],["6892128","mediasource_6892128",1,31,"",1439476],["6892151","mediasource_6892151",1,32,"",1440308],["6892131","mediasource_6892131",1,33,"",1439305],["6892134","mediasource_6892134",1,34,"",1439305],["6892139","mediasource_6892139",1,35,"",1439476],["6892118","mediasource_6892118",1,36,"",1439305],["6892155","mediasource_6892155",1,37,"",1439305],["6892145","mediasource_6892145",1,38,"",1440308],["6892129","mediasource_6892129",1,39,"",1439305],["6892142","mediasource_6892142",1,40,"",1439476],["6892152","mediasource_6892152",1,41,"",1439476],["6892140","mediasource_6892140",1,42,"",1439305],["6892153","mediasource_6892153",1,43,"",1439476],["6892111","mediasource_6892111",1,44,"",1441500],["6892112","mediasource_6892112",1,45,"",1438793],["6892115","mediasource_6892115",1,46,"",1439305],["6892144","mediasource_6892144",1,47,"",1441670],["6892147","mediasource_6892147",1,48,"",1441570],["6892135","mediasource_6892135",1,49,"",1409575]]},{"id":"225220","type":"Series","title":"Robotech","year":1985,"rating":"TV-PG","genres":["Action","Adventure","Animation","Anime","Science Fiction"],"episodes":[["6094487","mediasource_6094487",1,1,"",1450880],["6094494","mediasource_6094494",1,2,"",1448224],["235013","mediasource_235013",1,3,"",1442752],["235014","mediasource_235014",1,4,"",1451264],["235015","mediasource_235015",1,5,"",1425856],["6620109","mediasource_6620109",1,6,"",1423177],["235017","mediasource_235017",1,7,"",1441728],["235018","mediasource_235018",1,8,"",1411840],["235019","mediasource_235019",1,9,"",1414816],["235020","mediasource_235020",1,10,"",1430944],["235021","mediasource_235021",1,11,"",1375520],["6094492","mediasource_6094492",1,12,"",1446816],["235023","mediasource_235023",1,13,"",1421664],["235024","mediasource_235024",1,14,"",1428000],["6094493","mediasource_6094493",1,15,"",1408832],["235026","mediasource_235026",1,16,"",1435296],["235027","mediasource_235027",1,17,"",1447296],["235028","mediasource_235028",1,18,"",1435552],["235029","mediasource_235029",1,19,"",1434336],["235030","mediasource_235030",1,20,"",1421248],["235031","mediasource_235031",1,21,"",1418400],["6094490","mediasource_6094490",1,22,"",1432416],["235033","mediasource_235033",1,23,"",1439552],["235034","mediasource_235034",1,24,"",1448416],["235035","mediasource_235035",1,25,"",1449376],["235036","mediasource_235036",1,26,"",1459424],["235037","mediasource_235037",1,27,"",1468704],["6094491","mediasource_6094491",1,28,"",1455520],["6094488","mediasource_6094488",1,29,"",1437344],["235040","mediasource_235040",1,30,"",1409920],["6094495","mediasource_6094495",1,31,"",1456032],["235042","mediasource_235042",1,32,"",1442624],["235043","mediasource_235043",1,33,"",1437056],["235044","mediasource_235044",1,34,"",1457696],["6094486","mediasource_6094486",1,35,"",1458656],["6094496","mediasource_6094496",1,36,"",1463264],["7633398","mediasource_7633398",2,1,"",1433309],["7633399","mediasource_7633399",2,2,"",1461880],["7633400","mediasource_7633400",2,3,"",1424342],["7633401","mediasource_7633401",2,4,"",1448324],["7633402","mediasource_7633402",2,5,"",1427429],["7633403","mediasource_7633403",2,6,"",1411788],["7633404","mediasource_7633404",2,7,"",1451995],["7633405","mediasource_7633405",2,8,"",1428012],["7633406","mediasource_7633406",2,9,"",1430765],["7633407","mediasource_7633407",2,10,"",1426219],["7633408","mediasource_7633408",2,11,"",1389891],["7633409","mediasource_7633409",2,12,"",1426511],["7633410","mediasource_7633410",2,13,"",1448867],["6620134","mediasource_6620134",2,14,"",1437191],["6620136","mediasource_6620136",2,15,"",1423052],["7633411","mediasource_7633411",2,16,"",1420588],["7633412","mediasource_7633412",2,17,"",1421381],["7633413","mediasource_7633413",2,18,"",1427429],["7633414","mediasource_7633414",2,19,"",1406950],["7633415","mediasource_7633415",2,20,"",1436604],["7633416","mediasource_7633416",2,21,"",1413581],["7633417","mediasource_7633417",2,22,"",1466009],["7633418","mediasource_7633418",2,23,"",1452746],["7633419","mediasource_7633419",2,24,"",1441276],["7633373","mediasource_7633373",3,1,"",1340508],["7633374","mediasource_7633374",3,2,"",1353313],["7633375","mediasource_7633375",3,3,"",1372248],["7633377","mediasource_7633377",3,4,"",1380006],["7633378","mediasource_7633378",3,5,"",1365784],["7633379","mediasource_7633379",3,6,"",1351478],["7633380","mediasource_7633380",3,7,"",1327704],["7633381","mediasource_7633381",3,8,"",1329789],["7633382","mediasource_7633382",3,9,"",1352312],["7633383","mediasource_7633383",3,10,"",1339382],["7633384","mediasource_7633384",3,11,"",1333334],["7633385","mediasource_7633385",3,12,"",1343136],["7633386","mediasource_7633386",3,13,"",1346723],["7633387","mediasource_7633387",3,14,"",1349517],["7633388","mediasource_7633388",3,15,"",1355648],["7633389","mediasource_7633389",3,16,"",1348099],["7633390","mediasource_7633390",3,17,"",1334335],["7633391","mediasource_7633391",3,18,"",1364032],["7633392","mediasource_7633392",3,19,"",1365950],["7633393","mediasource_7633393",3,20,"",1311688],["7633394","mediasource_7633394",3,21,"",1358818],["7633395","mediasource_7633395",3,22,"",1325076],["7633396","mediasource_7633396",3,23,"",1336504],["7633397","mediasource_7633397",3,24,"",1338798],["7633376","mediasource_7633376",3,25,"",1371976]]},{"id":"225248","type":"Series","title":"Yu Yu Hakusho","year":1992,"rating":"TV-14","genres":["Action","Adventure","Animation","Anime","Comedy","Drama","Fantasy","Romance"],"episodes":[["6437223","mediasource_6437223",1,1,"",1421420],["6437237","mediasource_6437237",1,2,"",1421420],["6437231","mediasource_6437231",1,3,"",1421420],["6437235","mediasource_6437235",1,4,"",1421420],["6437224","mediasource_6437224",1,5,"",1421420],["6437225","mediasource_6437225",1,6,"",1421420],["6437226","mediasource_6437226",1,7,"",1421420],["6437218","mediasource_6437218",1,8,"",1421420],["6437232","mediasource_6437232",1,9,"",1421420],["6437233","mediasource_6437233",1,10,"",1421420],["6437238","mediasource_6437238",1,11,"",1421420],["6437242","mediasource_6437242",1,12,"",1421420],["6437228","mediasource_6437228",1,13,"",1421420],["6437240","mediasource_6437240",1,14,"",1421420],["6437227","mediasource_6437227",1,15,"",1421420],["6437219","mediasource_6437219",1,16,"",1421420],["6437239","mediasource_6437239",1,17,"",1421420],["6437220","mediasource_6437220",1,18,"",1421420],["6437241","mediasource_6437241",1,19,"",1421420],["6437221","mediasource_6437221",1,20,"",1421420],["6437230","mediasource_6437230",1,21,"",1421420],["6437229","mediasource_6437229",1,22,"",1421420],["6437234","mediasource_6437234",1,23,"",1421420],["6437236","mediasource_6437236",1,24,"",1421420],["6437222","mediasource_6437222",1,25,"",1421420],["236374","mediasource_236374",2,1,"",1421526],["236375","mediasource_236375",2,2,"",1421526],["236376","mediasource_236376",2,3,"",1421526],["236377","mediasource_236377",2,4,"",1421526],["236378","mediasource_236378",2,5,"",1421526],["236379","mediasource_236379",2,6,"",1421526],["236380","mediasource_236380",2,7,"",1421526],["236381","mediasource_236381",2,8,"",1421526],["236382","mediasource_236382",2,9,"",1421526],["236383","mediasource_236383",2,10,"",1421526],["236384","mediasource_236384",2,11,"",1421526],["236385","mediasource_236385",2,12,"",1421526],["236386","mediasource_236386",2,13,"",1421526],["236387","mediasource_236387",2,14,"",1421526],["236388","mediasource_236388",2,15,"",1422038],["6095488","mediasource_6095488",2,16,"",1421526],["236390","mediasource_236390",2,17,"",1421526],["236391","mediasource_236391",2,18,"",1423744],["236392","mediasource_236392",2,19,"",1423744],["236393","mediasource_236393",2,20,"",1423787],["236394","mediasource_236394",2,21,"",1424939],["236395","mediasource_236395",2,22,"",1425067],["236396","mediasource_236396",2,23,"",1425067],["236397","mediasource_236397",2,24,"",1425067],["236398","mediasource_236398",2,25,"",1425110],["236399","mediasource_236399",2,26,"",1425451],["236400","mediasource_236400",2,27,"",1425707],["6095492","mediasource_6095492",2,28,"",1426518],["236402","mediasource_236402",2,29,"",1422379],["236403","mediasource_236403",2,30,"",1422507],["236404","mediasource_236404",2,31,"",1421526],["236405","mediasource_236405",2,32,"",1422336],["6095491","mediasource_6095491",2,33,"",1422294],["6095489","mediasource_6095489",2,34,"",1422166],["236408","mediasource_236408",2,35,"",1422294],["236409","mediasource_236409",2,36,"",1422422],["236410","mediasource_236410",2,37,"",1422123],["236411","mediasource_236411",2,38,"",1422336],["6095490","mediasource_6095490",2,39,"",1422123],["236413","mediasource_236413",2,40,"",1422507],["6095493","mediasource_6095493",2,41,"",1422592],["236415","mediasource_236415",3,1,"",1421952],["236416","mediasource_236416",3,2,"",1421867],["6095474","mediasource_6095474",3,3,"",1422037],["236418","mediasource_236418",3,4,"",1421952],["236419","mediasource_236419",3,5,"",1421952],["236420","mediasource_236420",3,6,"",1421995],["6095475","mediasource_6095475",3,7,"",1421952],["236422","mediasource_236422",3,8,"",1421995],["6095477","mediasource_6095477",3,9,"",1422080],["6095478","mediasource_6095478",3,10,"",1421995],["236425","mediasource_236425",3,11,"",1422038],["236426","mediasource_236426",3,12,"",1421910],["236427","mediasource_236427",3,13,"",1423488],["236428","mediasource_236428",3,14,"",1423531],["236429","mediasource_236429",3,15,"",1423232],["236430","mediasource_236430",3,16,"",1423616],["236431","mediasource_236431",3,17,"",1421526],["236432","mediasource_236432",3,18,"",1423275],["236433","mediasource_236433",3,19,"",1422763],["6095476","mediasource_6095476",3,20,"",1422848],["6095479","mediasource_6095479",3,21,"",1423275],["236436","mediasource_236436",3,22,"",1423360],["6095480","mediasource_6095480",3,23,"",1423275],["236438","mediasource_236438",3,24,"",1423318],["236439","mediasource_236439",3,25,"",1424811],["236440","mediasource_236440",3,26,"",1424811],["236441","mediasource_236441",3,27,"",1424726],["6095481","mediasource_6095481",3,28,"",1424811],["236443","mediasource_236443",4,1,"",1424597],["6095494","mediasource_6095494",4,2,"",1424725],["236445","mediasource_236445",4,3,"",1424939],["236446","mediasource_236446",4,4,"",1424725],["236447","mediasource_236447",4,5,"",1424726],["6095495","mediasource_6095495",4,6,"",1424939],["236449","mediasource_236449",4,7,"",1423233],["236450","mediasource_236450",4,8,"",1423233],["236451","mediasource_236451",4,9,"",1424299],["236452","mediasource_236452",4,10,"",1424299],["236453","mediasource_236453",4,11,"",1424171],["236454","mediasource_236454",4,12,"",1424640],["236455","mediasource_236455",4,13,"",1425835],["236456","mediasource_236456",4,14,"",1425750],["236457","mediasource_236457",4,15,"",1426005],["236458","mediasource_236458",4,16,"",1422550],["236459","mediasource_236459",4,17,"",1422550],["236460","mediasource_236460",4,18,"",1390507]]},{"id":"3653760","type":"Series","title":"Yu-Gi-Oh! 5D's","year":2008,"rating":"TV-Y","genres":["Action","Adventure","Animation","Anime","Fantasy","Science Fiction"],"episodes":[["3662024","mediasource_3662024",1,1,"",1403623],["3662025","mediasource_3662025",1,2,"",1402671],["3662026","mediasource_3662026",1,3,"",1402508],["3662027","mediasource_3662027",1,4,"",1402857],["6093363","mediasource_6093363",1,5,"",1401974],["3662029","mediasource_3662029",1,6,"",1403298],["6093364","mediasource_6093364",1,7,"",1403019],["3662031","mediasource_3662031",1,8,"",1402973],["3662032","mediasource_3662032",1,9,"",1403391],["3662033","mediasource_3662033",1,10,"",1404204],["3662034","mediasource_3662034",1,11,"",1401905],["3662035","mediasource_3662035",1,12,"",1403739],["6093361","mediasource_6093361",1,13,"",1402415],["3662037","mediasource_3662037",1,14,"",1402570],["3662038","mediasource_3662038",1,15,"",1402323],["3662039","mediasource_3662039",1,16,"",1402504],["6093360","mediasource_6093360",1,17,"",1401672],["3662041","mediasource_3662041",1,18,"",1402102],["3662042","mediasource_3662042",1,19,"",1402068],["3662043","mediasource_3662043",1,20,"",1402740],["3662044","mediasource_3662044",1,21,"",1402926],["3662045","mediasource_3662045",1,22,"",1403042],["6093362","mediasource_6093362",1,23,"",1402346],["3662047","mediasource_3662047",1,24,"",1402346],["3662048","mediasource_3662048",1,25,"",1402857],["6093359","mediasource_6093359",1,26,"",1394090],["4359451","mediasource_4359451",2,1,"",1286048],["6093367","mediasource_6093367",2,2,"",1300896],["4359453","mediasource_4359453",2,3,"",1390208],["4359454","mediasource_4359454",2,4,"",1316128],["4359455","mediasource_4359455",2,5,"",1316000],["4359456","mediasource_4359456",2,6,"",1286112],["6093365","mediasource_6093365",2,7,"",1286016],["4359458","mediasource_4359458",2,8,"",1300672],["4359459","mediasource_4359459",2,9,"",1375616],["4359460","mediasource_4359460",2,10,"",1390944],["4359461","mediasource_4359461",2,11,"",1316128],["4359462","mediasource_4359462",2,12,"",1316224],["4359463","mediasource_4359463",2,13,"",1391136],["4359464","mediasource_4359464",2,14,"",1285984],["4359466","mediasource_4359466",2,16,"",1392928],["4359467","mediasource_4359467",2,17,"",1361184],["4359468","mediasource_4359468",2,18,"",1346144],["4359469","mediasource_4359469",2,19,"",1303667],["4359470","mediasource_4359470",2,20,"",1361216],["6093371","mediasource_6093371",2,21,"",1391168],["4359472","mediasource_4359472",2,22,"",1391209],["4359473","mediasource_4359473",2,23,"",1391168],["4359474","mediasource_4359474",2,24,"",1391334],["4359475","mediasource_4359475",2,25,"",1301125],["6093368","mediasource_6093368",2,26,"",1360544],["4359477","mediasource_4359477",2,27,"",1391084],["4359478","mediasource_4359478",2,28,"",1406240],["4359479","mediasource_4359479",2,29,"",1346016],["4359480","mediasource_4359480",2,30,"",1361216],["6093372","mediasource_6093372",2,31,"",1375872],["4359482","mediasource_4359482",2,32,"",1385184],["4359483","mediasource_4359483",2,33,"",1420128],["6093370","mediasource_6093370",2,34,"",1376288],["4359485","mediasource_4359485",2,35,"",1419917],["4359486","mediasource_4359486",2,36,"",1331040],["4359487","mediasource_4359487",2,37,"",1404768],["6093366","mediasource_6093366",2,38,"",1390625],["4359489","mediasource_4359489",3,1,"",1278560],["4359490","mediasource_4359490",3,2,"",1360864],["4359492","mediasource_4359492",3,4,"",1298592],["4359493","mediasource_4359493",3,5,"",1290784],["3662050","mediasource_3662050",3,7,"",1280768],["3662051","mediasource_3662051",3,8,"",1357088],["4359495","mediasource_4359495",3,9,"",1280032],["4359496","mediasource_4359496",3,10,"",1377292],["4359497","mediasource_4359497",3,11,"",1271008],["4359498","mediasource_4359498",3,12,"",1263209],["4359499","mediasource_4359499",3,13,"",1285024],["4359500","mediasource_4359500",3,14,"",1432960],["4359501","mediasource_4359501",3,15,"",1248160],["6093390","mediasource_6093390",3,16,"",1289952],["4359503","mediasource_4359503",3,17,"",1346429],["6093389","mediasource_6093389",3,18,"",1362688],["6093385","mediasource_6093385",3,19,"",1266209],["6093384","mediasource_6093384",3,20,"",1374048],["4359507","mediasource_4359507",3,21,"",1285792],["4359508","mediasource_4359508",3,22,"",1256000],["4359509","mediasource_4359509",3,23,"",1364512],["4359510","mediasource_4359510",3,24,"",1323648],["6093386","mediasource_6093386",3,25,"",1344960],["4359513","mediasource_4359513",3,27,"",1256960],["4359514","mediasource_4359514",3,28,"",1221728],["3662052","mediasource_3662052",4,1,"",1256167],["3662053","mediasource_3662053",4,2,"",1189984],["6093375","mediasource_6093375",4,3,"",1324384],["3662055","mediasource_3662055",4,4,"",1278368],["3662056","mediasource_3662056",4,5,"",1360992],["3662057","mediasource_3662057",4,6,"",1278432],["3662058","mediasource_3662058",4,7,"",1360352],["3662059","mediasource_3662059",4,8,"",1357312],["3662060","mediasource_3662060",4,9,"",1343520],["3662061","mediasource_3662061",4,10,"",1360512],["6093373","mediasource_6093373",4,11,"",1309088],["6093379","mediasource_6093379",4,12,"",1279936],["3662064","mediasource_3662064",4,13,"",1272167],["3662065","mediasource_3662065",4,14,"",1358432],["3662066","mediasource_3662066",4,15,"",1391136],["3662067","mediasource_3662067",4,16,"",1361024],["3662068","mediasource_3662068",4,17,"",1216256],["3662069","mediasource_3662069",4,18,"",1357920],["3662070","mediasource_3662070",4,19,"",1399815],["3662071","mediasource_3662071",4,20,"",1400883],["3662072","mediasource_3662072",4,21,"",1400465],["6093381","mediasource_6093381",4,22,"",1401045],["3662074","mediasource_3662074",4,23,"",1401278],["3662075","mediasource_3662075",4,24,"",1400813],["3662076","mediasource_3662076",4,25,"",1400697],["3662077","mediasource_3662077",4,26,"",1400744],["3662078","mediasource_3662078",4,27,"",1402671],["3662079","mediasource_3662079",4,28,"",1399466],["6093376","mediasource_6093376",4,29,"",1399977],["3662081","mediasource_3662081",4,30,"",1400604],["6093382","mediasource_6093382",4,31,"",1284512],["3662083","mediasource_3662083",4,32,"",1390304],["3662085","mediasource_3662085",4,34,"",1318112],["3662086","mediasource_3662086",4,35,"",1233024],["3662087","mediasource_3662087",4,36,"",1355232],["3662088","mediasource_3662088",4,37,"",1314272],["3662089","mediasource_3662089",4,38,"",1400999],["3662090","mediasource_3662090",4,39,"",1327360],["3662091","mediasource_3662091",4,40,"",1288800],["6093374","mediasource_6093374",4,41,"",1360768],["6093380","mediasource_6093380",4,42,"",1337984],["3662094","mediasource_3662094",4,43,"",1267872],["3662095","mediasource_3662095",4,44,"",1382560],["6093383","mediasource_6093383",4,45,"",1422875],["3662097","mediasource_3662097",4,46,"",1422803],["6093377","mediasource_6093377",4,47,"",1422570],["6093378","mediasource_6093378",4,48,"",1401185],["3662100","mediasource_3662100",4,49,"",1401278],["3662101","mediasource_3662101",4,50,"",1399675],["3662102","mediasource_3662102",4,51,"",1399768],["3662103","mediasource_3662103",4,52,"",1401185],["3662104","mediasource_3662104",4,53,"",1401069],["3662105","mediasource_3662105",4,54,"",1400767],["3662106","mediasource_3662106",4,55,"",1399838],["3662107","mediasource_3662107",4,56,"",1400418],["3662108","mediasource_3662108",4,57,"",1400767],["3662109","mediasource_3662109",4,58,"",1400418],["3662110","mediasource_3662110",4,59,"",1394799],["3662111","mediasource_3662111",4,60,"",1400604],["3662112","mediasource_3662112",4,61,"",1400836],["3662113","mediasource_3662113",4,62,"",1401347]]},{"id":"3654212","type":"Series","title":"Yu-Gi-Oh! GX","year":2004,"rating":"TV-G","genres":["Action","Adventure","Animation","Anime","Family","Fantasy","Science Fiction"],"episodes":[["5378230","mediasource_5378230",1,1,"",1277526],["6085235","mediasource_6085235",1,2,"",1228032],["6085229","mediasource_6085229",1,3,"",1225131],["5378231","mediasource_5378231",1,4,"",1257600],["5378229","mediasource_5378229",1,5,"",1260160],["5378232","mediasource_5378232",1,6,"",1272278],["5378238","mediasource_5378238",1,7,"",1228118],["5378241","mediasource_5378241",1,8,"",1231787],["5378237","mediasource_5378237",1,9,"",1224790],["5378235","mediasource_5378235",1,10,"",1222571],["5378236","mediasource_5378236",1,11,"",1280896],["5378242","mediasource_5378242",1,12,"",1237590],["5378239","mediasource_5378239",1,13,"",1236480],["5378240","mediasource_5378240",1,14,"",1232598],["5378322","mediasource_5378322",1,15,"",1241515],["5378326","mediasource_5378326",1,16,"",1220011],["6085240","mediasource_6085240",1,17,"",1227222],["5378332","mediasource_5378332",1,18,"",1255894],["5378317","mediasource_5378317",1,19,"",1281750],["5378302","mediasource_5378302",1,20,"",1228416],["5378313","mediasource_5378313",1,21,"",1256832],["6261482","mediasource_6261482",1,22,"",1282432],["6085236","mediasource_6085236",1,23,"",1229824],["5378315","mediasource_5378315",1,24,"",1262763],["5378304","mediasource_5378304",1,25,"",1253888],["5378297","mediasource_5378297",1,26,"",1280683],["5378309","mediasource_5378309",1,27,"",1250518],["5378305","mediasource_5378305",1,28,"",1248896],["5378331","mediasource_5378331",1,29,"",1230294],["6085237","mediasource_6085237",1,30,"",1282390],["6085230","mediasource_6085230",1,31,"",1254358],["6085233","mediasource_6085233",1,32,"",1244075],["5378319","mediasource_5378319",1,33,"",1280683],["5378327","mediasource_5378327",1,34,"",1261056],["5378303","mediasource_5378303",1,35,"",1220523],["6085238","mediasource_6085238",1,36,"",1222358],["5378329","mediasource_5378329",1,37,"",1282944],["5378334","mediasource_5378334",1,38,"",1252736],["5378323","mediasource_5378323",1,39,"",1178624],["5378307","mediasource_5378307",1,40,"",1212715],["5378311","mediasource_5378311",1,41,"",1245568],["5378328","mediasource_5378328",1,42,"",1243008],["5378308","mediasource_5378308",1,43,"",1244843],["5378316","mediasource_5378316",1,44,"",1246976],["5378310","mediasource_5378310",1,45,"",1238571],["6085231","mediasource_6085231",1,46,"",1282518],["5378312","mediasource_5378312",1,47,"",1220310],["6085239","mediasource_6085239",1,48,"",1261824],["5378300","mediasource_5378300",1,49,"",1282731],["6085232","mediasource_6085232",1,50,"",1229995],["5378320","mediasource_5378320",1,51,"",1238315],["5378298","mediasource_5378298",1,52,"",1281451],["5378837","mediasource_5378837",2,1,"",1252310],["4978993","mediasource_4978993",2,2,"",1243103],["4979032","mediasource_4979032",2,3,"",1262236],["4979007","mediasource_4979007",2,4,"",1253738],["4979026","mediasource_4979026",2,5,"",1260425],["4979008","mediasource_4979008",2,6,"",1250301],["4978994","mediasource_4978994",2,7,"",1280301],["6085245","mediasource_6085245",2,8,"",1181524],["6085248","mediasource_6085248",2,9,"",1261075],["6085246","mediasource_6085246",2,10,"",1240688],["6085247","mediasource_6085247",2,11,"",1251369],["4979009","mediasource_4979009",2,12,"",1227639],["4978988","mediasource_4978988",2,13,"",1277283],["4979002","mediasource_4979002",2,14,"",1279791],["4978998","mediasource_4978998",2,15,"",1207809],["4979003","mediasource_4979003",2,16,"",1285503],["4979023","mediasource_4979023",2,17,"",1236834],["4979004","mediasource_4979004",2,18,"",1243846],["4979015","mediasource_4979015",2,19,"",1277654],["6085249","mediasource_6085249",2,20,"",1296834],["4979013","mediasource_4979013",2,21,"",1230007],["4978995","mediasource_4978995",2,22,"",1266927],["6085243","mediasource_6085243",2,23,"",1227639],["4979014","mediasource_4979014",2,24,"",1304125],["6085241","mediasource_6085241",2,25,"",1257825],["4978996","mediasource_4978996",2,26,"",1249372],["4979018","mediasource_4979018",2,27,"",1227731],["4979035","mediasource_4979035",2,28,"",1210409],["4979036","mediasource_4979036",2,29,"",1221555],["6085244","mediasource_6085244",2,30,"",1207716],["4979029","mediasource_4979029",2,31,"",1216539],["4979024","mediasource_4979024",2,32,"",1224202],["4979005","mediasource_4979005",2,33,"",1229914],["4979012","mediasource_4979012",2,34,"",1227081],["4979021","mediasource_4979021",2,35,"",1244543],["6085250","mediasource_6085250",2,36,"",1275890],["4979037","mediasource_4979037",2,37,"",1241756],["4978997","mediasource_4978997",2,38,"",1245054],["4979025","mediasource_4979025",2,39,"",1242221],["4979006","mediasource_4979006",2,40,"",1245332],["4979030","mediasource_4979030",2,41,"",1243800],["3680223","mediasource_3680223",2,42,"",1273753],["6085242","mediasource_6085242",2,43,"",1243660],["4978990","mediasource_4978990",2,44,"",1245518],["4979019","mediasource_4979019",2,45,"",1243057],["4979011","mediasource_4979011",2,46,"",1249419],["4979022","mediasource_4979022",2,47,"",1247701],["4979001","mediasource_4979001",2,48,"",1216029],["4979031","mediasource_4979031",2,49,"",1265348],["4979017","mediasource_4979017",2,50,"",1206601],["4978991","mediasource_4978991",2,51,"",1209016],["4978992","mediasource_4978992",2,52,"",1243893],["4979298","mediasource_4979298",3,1,"",1263104],["4979308","mediasource_4979308",3,2,"",1278500],["4979341","mediasource_4979341",3,3,"",1285568],["6085215","mediasource_6085215",3,4,"",1216672],["6085221","mediasource_6085221",3,5,"",1230880],["6085216","mediasource_6085216",3,6,"",1264992],["4979332","mediasource_4979332",3,7,"",1266912],["4979338","mediasource_4979338",3,8,"",1284928],["4979333","mediasource_4979333",3,9,"",1279040],["4979316","mediasource_4979316",3,10,"",1287648],["4979299","mediasource_4979299",3,11,"",1237920],["4979337","mediasource_4979337",3,12,"",1267040],["4979293","mediasource_4979293",3,13,"",1249216],["4979309","mediasource_4979309",3,14,"",1244960],["4979297","mediasource_4979297",3,15,"",1252640],["4979310","mediasource_4979310",3,16,"",1262912],["4979324","mediasource_4979324",3,17,"",1280064],["6085222","mediasource_6085222",3,18,"",1279648],["4979317","mediasource_4979317",3,19,"",1276960],["4979300","mediasource_4979300",3,20,"",1199936],["4979301","mediasource_4979301",3,21,"",1284100],["4979342","mediasource_4979342",3,22,"",1227168],["4979318","mediasource_4979318",3,23,"",1267360],["4979343","mediasource_4979343",3,24,"",1254848],["4979334","mediasource_4979334",3,25,"",1297600],["6085223","mediasource_6085223",3,26,"",1292640],["4979325","mediasource_4979325",3,27,"",1236833],["6085219","mediasource_6085219",3,28,"",1292160],["4979294","mediasource_4979294",3,29,"",1283333],["6720999","mediasource_6720999",3,30,"",1264896],["4979319","mediasource_4979319",3,31,"",1288096],["6085217","mediasource_6085217",3,32,"",1265888],["4979326","mediasource_4979326",3,33,"",1241248],["4979321","mediasource_4979321",3,34,"",1241472],["4979312","mediasource_4979312",3,35,"",1269088],["4979336","mediasource_4979336",3,36,"",1278496],["6720998","mediasource_6720998",3,37,"",1207979],["4979330","mediasource_4979330",3,38,"",1296992],["4979320","mediasource_4979320",3,39,"",1295264],["4979339","mediasource_4979339",3,40,"",1235072],["4979327","mediasource_4979327",3,41,"",1277344],["4979295","mediasource_4979295",3,42,"",1201568],["4979313","mediasource_4979313",3,43,"",1269344],["4979331","mediasource_4979331",3,44,"",1271936],["4979305","mediasource_4979305",3,45,"",1281952],["4979323","mediasource_4979323",3,46,"",1258272],["4979296","mediasource_4979296",3,47,"",1237800],["4979314","mediasource_4979314",3,48,"",1279104],["6085218","mediasource_6085218",3,49,"",1277888],["4979340","mediasource_4979340",3,50,"",1278700],["4979315","mediasource_4979315",3,51,"",1267520],["6085224","mediasource_6085224",4,1,"",1434518],["4979094","mediasource_4979094",4,2,"",1434618],["6085227","mediasource_6085227",4,3,"",1434585],["6085228","mediasource_6085228",4,4,"",1434618],["4979099","mediasource_4979099",4,5,"",1434452],["4979107","mediasource_4979107",4,6,"",1434528],["4979101","mediasource_4979101",4,7,"",1433971],["4979097","mediasource_4979097",4,8,"",1433814],["4979092","mediasource_4979092",4,9,"",1433042],["4979111","mediasource_4979111",4,10,"",1434343],["4979102","mediasource_4979102",4,12,"",1434296],["6085226","mediasource_6085226",4,13,"",1434296],["4979095","mediasource_4979095",4,14,"",1434528],["4979089","mediasource_4979089",4,15,"",1434435],["4979106","mediasource_4979106",4,16,"",1434552],["4979093","mediasource_4979093",4,17,"",1434566],["4979100","mediasource_4979100",4,18,"",1434585],["4979090","mediasource_4979090",4,19,"",1434517],["4979112","mediasource_4979112",4,20,"",1434433],["4979103","mediasource_4979103",4,21,"",1434582],["4979098","mediasource_4979098",4,22,"",1434112],["4979091","mediasource_4979091",4,23,"",1434624],["4979096","mediasource_4979096",4,24,"",1434795]]},{"id":"4454211","type":"Movie","title":"Dragon Ball Z: The Return of Cooler","year":1992,"rating":"NR","genres":["Action","Animation","Science Fiction"],"episodes":[["4454211","mediasource_4454211",0,1,"",2761759]]},{"id":"4454226","type":"Movie","title":"Dragon Ball Z: Fusion Reborn","year":1995,"rating":"PG","genres":["Animation","Action","Science Fiction"],"episodes":[["4454226","mediasource_4454226",0,1,"",3042016]]},{"id":"4455404","type":"Movie","title":"Akira","year":1988,"rating":"R","genres":["Animation","Science Fiction","Action"],"episodes":[["4455404","mediasource_4455404",0,1,"",7466528]]},{"id":"4455405","type":"Movie","title":"Dragon Ball Z: Bojack Unbound","year":1993,"rating":"PG","genres":["Action","Animation","Science Fiction"],"episodes":[["4455405","mediasource_4455405",0,1,"",3023904]]},{"id":"4455433","type":"Movie","title":"Dragon Ball Z: Broly - The Legendary Super Saiyan","year":1993,"rating":"TV-PG","genres":["Animation","Science Fiction","Action"],"episodes":[["4455433","mediasource_4455433",0,1,"",4317408]]},{"id":"4455447","type":"Movie","title":"Dragon Ball Z: The Tree of Might","year":1990,"rating":"Not Rated","genres":["Action","Animation","Science Fiction"],"episodes":[["4455447","mediasource_4455447",0,1,"",3664704]]},{"id":"4455486","type":"Movie","title":"Mobile Suit Gundam 00 The Movie: -A Wakening of the Trailblazer-","year":2010,"rating":"","genres":["Action","Animation","Drama","Science Fiction","War"],"episodes":[["4455486","mediasource_4455486",0,1,"",7228224]]},{"id":"4455489","type":"Movie","title":"Robot Carnival","year":1987,"rating":"NR","genres":["Animation","Science Fiction"],"episodes":[["4455489","mediasource_4455489",0,1,"",5562144]]},{"id":"4455500","type":"Movie","title":"Trigun: Badlands Rumble","year":2010,"rating":"PG-13","genres":["Action","Animation","Science Fiction","Adventure"],"episodes":[["4455500","mediasource_4455500",0,1,"",5463458]]},{"id":"4455505","type":"Movie","title":"Dragon Ball Z: Lord Slug","year":1991,"rating":"Not Rated","genres":["Action","Animation","Science Fiction"],"episodes":[["4455505","mediasource_4455505",0,1,"",3121152]]},{"id":"4455518","type":"Movie","title":"Dragon Ball Z: Super Android 13!","year":1992,"rating":"PG","genres":["Action","Animation","Science Fiction"],"episodes":[["4455518","mediasource_4455518",0,1,"",2760032]]},{"id":"4455528","type":"Movie","title":"Dragon Ball Z: Dead Zone","year":1989,"rating":"PG","genres":["Animation","Action","Fantasy"],"episodes":[["4455528","mediasource_4455528",0,1,"",2473472]]},{"id":"4455541","type":"Movie","title":"Shakugan no Shana: The Movie","year":2007,"rating":"PG-13","genres":["Animation","Fantasy","Action"],"episodes":[["4455541","mediasource_4455541",0,1,"",5181024]]},{"id":"4510372","type":"Series","title":"Dragon Ball Z","year":1989,"rating":"TV-PG","genres":["Action","Adventure","Animation","Anime","Fantasy","Science Fiction","Thriller"],"episodes":[["6608106","mediasource_6608106",1,1,"",1453472],["6608088","mediasource_6608088",1,2,"",1453472],["6608083","mediasource_6608083",1,3,"",1453472],["6608089","mediasource_6608089",1,4,"",1453472],["6608104","mediasource_6608104",1,5,"",1453472],["6608097","mediasource_6608097",1,6,"",1453472],["6608099","mediasource_6608099",1,7,"",1453472],["6608082","mediasource_6608082",1,8,"",1453472],["6608094","mediasource_6608094",1,9,"",1453472],["6608101","mediasource_6608101",1,10,"",1453472],["6608090","mediasource_6608090",1,11,"",1453472],["6608087","mediasource_6608087",1,12,"",1453376],["6608112","mediasource_6608112",1,13,"",1453472],["6608078","mediasource_6608078",1,14,"",1453472],["6608113","mediasource_6608113",1,15,"",1453472],["6608085","mediasource_6608085",1,16,"",1453472],["6608110","mediasource_6608110",1,17,"",1453472],["6608095","mediasource_6608095",1,18,"",1453472],["6608086","mediasource_6608086",1,19,"",1453472],["6608096","mediasource_6608096",1,20,"",1453472],["6608114","mediasource_6608114",1,21,"",1453472],["6608105","mediasource_6608105",1,22,"",1453472],["6608080","mediasource_6608080",1,23,"",1453472],["6608081","mediasource_6608081",1,24,"",1453472],["6608079","mediasource_6608079",1,25,"",1453472],["6608100","mediasource_6608100",1,26,"",1453472],["6608115","mediasource_6608115",1,27,"",1453472],["6608077","mediasource_6608077",1,28,"",1453472],["6608108","mediasource_6608108",1,29,"",1453472],["6608098","mediasource_6608098",1,30,"",1453472],["6608091","mediasource_6608091",1,31,"",1453472],["6608102","mediasource_6608102",1,32,"",1453472],["6608103","mediasource_6608103",1,33,"",1453472],["6608092","mediasource_6608092",1,34,"",1453472],["6608084","mediasource_6608084",1,35,"",1453280],["6608107","mediasource_6608107",1,36,"",1453280],["6608109","mediasource_6608109",1,37,"",1453280],["6608093","mediasource_6608093",1,38,"",1453280],["6608111","mediasource_6608111",1,39,"",1453280],["6608022","mediasource_6608022",2,1,"",1452480],["6608029","mediasource_6608029",2,2,"",1452480],["6608028","mediasource_6608028",2,3,"",1452480],["6608034","mediasource_6608034",2,4,"",1452480],["6608042","mediasource_6608042",2,5,"",1452480],["6608023","mediasource_6608023",2,6,"",1452480],["6608015","mediasource_6608015",2,7,"",1452480],["6608027","mediasource_6608027",2,8,"",1452480],["6608048","mediasource_6608048",2,9,"",1452480],["6950483","mediasource_6950483",2,10,"",1452480],["6608021","mediasource_6608021",2,11,"",1452480],["6608036","mediasource_6608036",2,12,"",1452480],["6608026","mediasource_6608026",2,13,"",1452480],["6608024","mediasource_6608024",2,14,"",1452480],["6608038","mediasource_6608038",2,15,"",1452480],["6608031","mediasource_6608031",2,16,"",1452480],["6608032","mediasource_6608032",2,17,"",1452480],["6608043","mediasource_6608043",2,18,"",1452480],["6608016","mediasource_6608016",2,19,"",1452480],["6608041","mediasource_6608041",2,20,"",1452480],["6608046","mediasource_6608046",2,21,"",1452480],["6608019","mediasource_6608019",2,22,"",1452480],["6608044","mediasource_6608044",2,23,"",1452480],["6608047","mediasource_6608047",2,24,"",1452480],["6608033","mediasource_6608033",2,25,"",1452480],["6608039","mediasource_6608039",2,26,"",1452480],["6608030","mediasource_6608030",2,27,"",1452480],["6608020","mediasource_6608020",2,28,"",1452480],["6608040","mediasource_6608040",2,29,"",1453472],["6608025","mediasource_6608025",2,30,"",1453472],["6608017","mediasource_6608017",2,31,"",1453472],["6608035","mediasource_6608035",2,32,"",1453472],["6608037","mediasource_6608037",2,33,"",1452480],["6608045","mediasource_6608045",2,34,"",1452480],["6608018","mediasource_6608018",2,35,"",1452480],["6086487","mediasource_6086487",3,1,"",1479573],["4510458","mediasource_4510458",3,2,"",1479573],["6705088","mediasource_6705088",3,3,"",1453482],["4510460","mediasource_4510460",3,4,"",1479573],["4510461","mediasource_4510461",3,5,"",1479573],["4510462","mediasource_4510462",3,6,"",1479311],["6086491","mediasource_6086491",3,7,"",1479573],["4510464","mediasource_4510464",3,8,"",1479770],["4510465","mediasource_4510465",3,9,"",1479573],["4510466","mediasource_4510466",3,10,"",1479573],["4510467","mediasource_4510467",3,11,"",1479573],["4510468","mediasource_4510468",3,12,"",1479573],["4510469","mediasource_4510469",3,13,"",1479573],["4510470","mediasource_4510470",3,14,"",1479061],["4510471","mediasource_4510471",3,15,"",1478229],["6086492","mediasource_6086492",3,16,"",1479573],["4510473","mediasource_4510473",3,17,"",1453312],["4510474","mediasource_4510474",3,18,"",1453312],["6086490","mediasource_6086490",3,19,"",1453312],["6086489","mediasource_6086489",3,20,"",1453312],["4510477","mediasource_4510477",3,21,"",1453312],["4510478","mediasource_4510478",3,22,"",1453312],["4510479","mediasource_4510479",3,23,"",1453312],["6086488","mediasource_6086488",3,24,"",1451285],["4510481","mediasource_4510481",3,25,"",1453312],["4510482","mediasource_4510482",3,26,"",1453312],["4510483","mediasource_4510483",3,27,"",1453312],["4510484","mediasource_4510484",3,28,"",1453312],["4510485","mediasource_4510485",3,29,"",1453312],["4510486","mediasource_4510486",3,30,"",1453312],["4510487","mediasource_4510487",3,31,"",1453312],["4510488","mediasource_4510488",3,32,"",1453312],["4510489","mediasource_4510489",3,33,"",1453312],["4510490","mediasource_4510490",4,1,"",1453216],["4510491","mediasource_4510491",4,2,"",1453257],["6705093","mediasource_6705093",4,3,"",1453269],["4510493","mediasource_4510493",4,4,"",1453257],["4510494","mediasource_4510494",4,5,"",1453257],["4510495","mediasource_4510495",4,6,"",1453257],["4510496","mediasource_4510496",4,7,"",1453257],["4510497","mediasource_4510497",4,8,"",1453257],["6086477","mediasource_6086477",4,9,"",1451376],["6086474","mediasource_6086474",4,10,"",1453257],["6086475","mediasource_6086475",4,11,"",1451243],["4510501","mediasource_4510501",4,12,"",1453257],["4510502","mediasource_4510502",4,13,"",1453257],["4510503","mediasource_4510503",4,14,"",1453257],["6086478","mediasource_6086478",4,15,"",1453257],["4510505","mediasource_4510505",4,16,"",1453257],["4510506","mediasource_4510506",4,17,"",1453257],["4510507","mediasource_4510507",4,18,"",1453257],["4510508","mediasource_4510508",4,19,"",1453257],["4510509","mediasource_4510509",4,20,"",1453257],["4510510","mediasource_4510510",4,21,"",1453257],["4510511","mediasource_4510511",4,22,"",1453257],["4510512","mediasource_4510512",4,23,"",1453257],["4510513","mediasource_4510513",4,24,"",1453257],["6086479","mediasource_6086479",4,25,"",1453257],["6086480","mediasource_6086480",4,26,"",1453257],["4510516","mediasource_4510516",4,27,"",1453257],["4510517","mediasource_4510517",4,28,"",1453257],["6086473","mediasource_6086473",4,29,"",1453257],["4510519","mediasource_4510519",4,30,"",1453257],["4510520","mediasource_4510520",4,31,"",1453257],["6086481","mediasource_6086481",4,32,"",1453257],["4510522","mediasource_4510522",5,1,"",1451243],["4510523","mediasource_4510523",5,2,"",1453257],["4510524","mediasource_4510524",5,3,"",1453257],["4510525","mediasource_4510525",5,4,"",1453257],["4510526","mediasource_4510526",5,5,"",1453257],["6086484","mediasource_6086484",5,6,"",1453257],["4510528","mediasource_4510528",5,7,"",1453257],["4510529","mediasource_4510529",5,8,"",1453257],["4510530","mediasource_4510530",5,9,"",1453257],["4510531","mediasource_4510531",5,10,"",1453257],["4510532","mediasource_4510532",5,11,"",1453257],["6705095","mediasource_6705095",5,12,"",1453269],["4510534","mediasource_4510534",5,13,"",1453257],["4510535","mediasource_4510535",5,14,"",1451243],["4510536","mediasource_4510536",5,15,"",1453257],["4510537","mediasource_4510537",5,16,"",1453257],["6086485","mediasource_6086485",5,17,"",1453257],["4510539","mediasource_4510539",5,18,"",1453257],["6705096","mediasource_6705096",5,19,"",1453269],["6086486","mediasource_6086486",5,20,"",1453257],["4510542","mediasource_4510542",5,21,"",1453257],["6086482","mediasource_6086482",5,22,"",1453257],["4510544","mediasource_4510544",5,23,"",1451243],["4510545","mediasource_4510545",5,24,"",1453257],["6705094","mediasource_6705094",5,25,"",1453269],["4510547","mediasource_4510547",5,26,"",1453257],["4510548","mediasource_4510548",6,1,"",1453257],["6086512","mediasource_6086512",6,2,"",1453257],["6086514","mediasource_6086514",6,3,"",1453257],["6086511","mediasource_6086511",6,4,"",1453257],["4510552","mediasource_4510552",6,5,"",1453257],["4510553","mediasource_4510553",6,6,"",1453257],["4510554","mediasource_4510554",6,7,"",1453257],["4510555","mediasource_4510555",6,8,"",1453257],["4510556","mediasource_4510556",6,9,"",1453257],["4510557","mediasource_4510557",6,10,"",1453257],["4510558","mediasource_4510558",6,11,"",1453257],["4510559","mediasource_4510559",6,12,"",1453257],["4510560","mediasource_4510560",6,13,"",1453257],["4510561","mediasource_4510561",6,14,"",1453257],["4510562","mediasource_4510562",6,15,"",1452872],["4510563","mediasource_4510563",6,16,"",1453257],["4510564","mediasource_4510564",6,17,"",1453257],["4510565","mediasource_4510565",6,18,"",1453257],["6086510","mediasource_6086510",6,19,"",1453257],["4510567","mediasource_4510567",6,20,"",1453257],["4510568","mediasource_4510568",6,21,"",1453257],["4510569","mediasource_4510569",6,22,"",1453257],["4510570","mediasource_4510570",6,23,"",1453248],["4510571","mediasource_4510571",6,24,"",1453257],["6086513","mediasource_6086513",6,25,"",1453257],["4510573","mediasource_4510573",6,26,"",1453257],["4510574","mediasource_4510574",6,27,"",1453257],["4510575","mediasource_4510575",6,28,"",1453257],["6705097","mediasource_6705097",6,29,"",1453269],["4510577","mediasource_4510577",7,1,"",1453257],["4510578","mediasource_4510578",7,2,"",1451452],["4510579","mediasource_4510579",7,3,"",1453257],["4510580","mediasource_4510580",7,4,"",1453257],["4510581","mediasource_4510581",7,5,"",1451452],["6086497","mediasource_6086497",7,6,"",1450451],["4510583","mediasource_4510583",7,7,"",1452480],["4510584","mediasource_4510584",7,8,"",1452480],["6086498","mediasource_6086498",7,9,"",1452480],["4510586","mediasource_4510586",7,10,"",1452480],["4510587","mediasource_4510587",7,11,"",1452480],["6086494","mediasource_6086494",7,12,"",1452480],["6086495","mediasource_6086495",7,13,"",1450326],["4510590","mediasource_4510590",7,14,"",1452480],["4510591","mediasource_4510591",7,15,"",1452480],["6086493","mediasource_6086493",7,16,"",1452480],["4510593","mediasource_4510593",7,17,"",1452480],["4510594","mediasource_4510594",7,18,"",1452480],["4510595","mediasource_4510595",7,19,"",1452480],["4510596","mediasource_4510596",7,20,"",1452480],["4510597","mediasource_4510597",7,21,"",1452480],["4510598","mediasource_4510598",7,22,"",1452480],["4510599","mediasource_4510599",7,23,"",1452480],["6705099","mediasource_6705099",7,24,"",1452501],["6086496","mediasource_6086496",7,25,"",1452480],["4510602","mediasource_4510602",8,1,"",1452480],["4510603","mediasource_4510603",8,2,"",1452480],["4510604","mediasource_4510604",8,3,"",1452480],["4510605","mediasource_4510605",8,4,"",1452480],["4510606","mediasource_4510606",8,5,"",1452480],["4510607","mediasource_4510607",8,6,"",1452480],["4510608","mediasource_4510608",8,7,"",1452480],["6086450","mediasource_6086450",8,8,"",1452480],["4510610","mediasource_4510610",8,9,"",1452480],["4510611","mediasource_4510611",8,10,"",1452480],["6705100","mediasource_6705100",8,11,"",1452501],["4510613","mediasource_4510613",8,12,"",1452480],["4510614","mediasource_4510614",8,13,"",1451285],["4510615","mediasource_4510615",8,14,"",1452480],["4510616","mediasource_4510616",8,15,"",1452480],["4510617","mediasource_4510617",8,16,"",1452480],["6086452","mediasource_6086452",8,17,"",1452480],["4510619","mediasource_4510619",8,18,"",1452480],["4510620","mediasource_4510620",8,19,"",1452480],["4510621","mediasource_4510621",8,20,"",1452480],["6086454","mediasource_6086454",8,21,"",1452480],["4510623","mediasource_4510623",8,22,"",1451285],["6086453","mediasource_6086453",8,23,"",1452480],["4510625","mediasource_4510625",8,24,"",1452480],["4510626","mediasource_4510626",8,25,"",1452480],["4510627","mediasource_4510627",8,26,"",1452480],["4510628","mediasource_4510628",8,27,"",1452480],["4510629","mediasource_4510629",8,28,"",1452480],["4510630","mediasource_4510630",8,29,"",1452480],["4510631","mediasource_4510631",8,30,"",1452480],["4510632","mediasource_4510632",8,31,"",1452480],["4510633","mediasource_4510633",8,32,"",1452480],["4510634","mediasource_4510634",8,33,"",1452480],["4510635","mediasource_4510635",8,34,"",1452480],["6086508","mediasource_6086508",9,1,"",1452480],["6086505","mediasource_6086505",9,2,"",1452480],["6086504","mediasource_6086504",9,3,"",1452480],["6086500","mediasource_6086500",9,4,"",1452949],["4510640","mediasource_4510640",9,5,"",1452480],["4510641","mediasource_4510641",9,6,"",1452480],["4510642","mediasource_4510642",9,7,"",1452480],["4510643","mediasource_4510643",9,8,"",1452480],["6086506","mediasource_6086506",9,9,"",1452480],["4510645","mediasource_4510645",9,10,"",1452480],["4510646","mediasource_4510646",9,11,"",1452480],["6086503","mediasource_6086503",9,12,"",1452480],["4510648","mediasource_4510648",9,13,"",1452480],["6086499","mediasource_6086499",9,14,"",1452480],["4510650","mediasource_4510650",9,15,"",1451285],["4510651","mediasource_4510651",9,16,"",1452480],["4510652","mediasource_4510652",9,17,"",1452480],["4510653","mediasource_4510653",9,18,"",1452480],["6086501","mediasource_6086501",9,19,"",1452480],["4510655","mediasource_4510655",9,20,"",1452480],["4510656","mediasource_4510656",9,21,"",1452480],["4510657","mediasource_4510657",9,22,"",1452480],["4510658","mediasource_4510658",9,23,"",1452480],["4510659","mediasource_4510659",9,24,"",1452480],["4510660","mediasource_4510660",9,25,"",1452480],["4510661","mediasource_4510661",9,26,"",1452480],["4510662","mediasource_4510662",9,27,"",1452480],["4510663","mediasource_4510663",9,28,"",1452480],["6086509","mediasource_6086509",9,29,"",1452480],["6086502","mediasource_6086502",9,30,"",1452480],["4510666","mediasource_4510666",9,31,"",1451280],["4510667","mediasource_4510667",9,32,"",1452480],["4510668","mediasource_4510668",9,33,"",1452480],["4510669","mediasource_4510669",9,34,"",1452480],["4510670","mediasource_4510670",9,35,"",1452480],["4510671","mediasource_4510671",9,36,"",1452480],["4510672","mediasource_4510672",9,37,"",1452480],["6086507","mediasource_6086507",9,38,"",1452480]]},{"id":"4530407","type":"Series","title":"Kaze no Stigma","year":2007,"rating":"TV-14","genres":["Action","Animation","Comedy","Fantasy","Romance"],"episodes":[["4531473","mediasource_4531473",1,1,"",1452034],["4531474","mediasource_4531474",1,2,"",1452034],["4531476","mediasource_4531476",1,4,"",1451033],["4531477","mediasource_4531477",1,5,"",1452034],["4531478","mediasource_4531478",1,6,"",1451033],["4531479","mediasource_4531479",1,7,"",1452034],["4531480","mediasource_4531480",1,8,"",1451033],["4531481","mediasource_4531481",1,9,"",1452034],["4531482","mediasource_4531482",1,10,"",1451033],["4531483","mediasource_4531483",1,11,"",1452034],["4531484","mediasource_4531484",1,12,"",1451033],["4531485","mediasource_4531485",1,13,"",1452034],["6091213","mediasource_6091213",1,14,"",1451033],["6091214","mediasource_6091214",1,15,"",1452034],["4531490","mediasource_4531490",1,18,"",1450032],["4531491","mediasource_4531491",1,19,"",1452034],["4531492","mediasource_4531492",1,20,"",1450032],["4531493","mediasource_4531493",1,21,"",1452034],["4531494","mediasource_4531494",1,22,"",1450032],["4531495","mediasource_4531495",1,23,"",1452034],["6091215","mediasource_6091215",1,24,"",1450032]]},{"id":"4534281","type":"Series","title":"Mobile Fighter G Gundam","year":1994,"rating":"TV-14","genres":["Action","Adventure","Animation","Anime","Comedy","Drama","Fantasy","Romance"],"episodes":[["5211032","mediasource_5211032",1,1,"",1441440],["5211042","mediasource_5211042",1,2,"",1440440],["5211033","mediasource_5211033",1,3,"",1441090],["5211034","mediasource_5211034",1,4,"",1440440],["6083446","mediasource_6083446",1,5,"",1441090],["6083444","mediasource_6083444",1,6,"",1440990],["5211052","mediasource_5211052",1,7,"",1442100],["5211039","mediasource_5211039",1,8,"",1440640],["5211068","mediasource_5211068",1,9,"",1441540],["5211043","mediasource_5211043",1,10,"",1440440],["5211080","mediasource_5211080",1,11,"",1440510],["5211046","mediasource_5211046",1,12,"",1441120],["5211053","mediasource_5211053",1,13,"",1441440],["5211075","mediasource_5211075",1,14,"",1441030],["6083443","mediasource_6083443",1,15,"",1440890],["6083448","mediasource_6083448",1,16,"",1440770],["6083447","mediasource_6083447",1,17,"",1441360],["6083449","mediasource_6083449",1,18,"",1441200],["5211059","mediasource_5211059",1,19,"",1441315],["5211037","mediasource_5211037",1,20,"",1441790],["5211038","mediasource_5211038",1,21,"",1440720],["5211054","mediasource_5211054",1,22,"",1441440],["5211035","mediasource_5211035",1,23,"",1440610],["5211065","mediasource_5211065",1,24,"",1440720],["5211044","mediasource_5211044",1,25,"",1442100],["5211076","mediasource_5211076",1,26,"",1440930],["5211040","mediasource_5211040",1,27,"",1441350],["5211070","mediasource_5211070",1,28,"",1440930],["5211073","mediasource_5211073",1,29,"",1441440],["5211066","mediasource_5211066",1,30,"",1441100],["5211071","mediasource_5211071",1,31,"",1441660],["5211045","mediasource_5211045",1,32,"",1440470],["5211077","mediasource_5211077",1,33,"",1441440],["5211047","mediasource_5211047",1,34,"",1440970],["5211067","mediasource_5211067",1,35,"",1441780],["5211069","mediasource_5211069",1,36,"",1440970],["5211060","mediasource_5211060",1,37,"",1440440],["6083445","mediasource_6083445",1,38,"",1440440],["5211055","mediasource_5211055",1,39,"",1440550],["5211078","mediasource_5211078",1,40,"",1440990],["5211048","mediasource_5211048",1,41,"",1440980],["5211072","mediasource_5211072",1,42,"",1441200],["6083441","mediasource_6083441",1,43,"",1441410],["5211049","mediasource_5211049",1,44,"",1440650],["5211074","mediasource_5211074",1,45,"",1440830],["5211079","mediasource_5211079",1,46,"",1441050],["5211036","mediasource_5211036",1,47,"",1440740],["5211041","mediasource_5211041",1,48,"",1440760],["6083442","mediasource_6083442",1,49,"",1409785]]},{"id":"4534282","type":"Series","title":"Murder Princess","year":2007,"rating":"FSK 16","genres":["Action","Adventure","Animation","Anime","Fantasy"],"episodes":[["5072901","mediasource_5072901",1,1,"",1471456],["5072904","mediasource_5072904",1,2,"",1471456],["5072903","mediasource_5072903",1,3,"",1471456],["5072902","mediasource_5072902",1,4,"",1471456],["6083554","mediasource_6083554",1,5,"",1471456],["6083555","mediasource_6083555",1,6,"",1471456]]},{"id":"4534298","type":"Series","title":"Mobile Suit Zeta Gundam","year":1985,"rating":"TV-14","genres":["Action","Adventure","Animation","Anime","Drama","Romance","Science Fiction"],"episodes":[["7775241","mediasource_7775241",1,1,"",1457238],["7775240","mediasource_7775240",1,2,"",1457280],["7775239","mediasource_7775239",1,3,"",1457280],["7775238","mediasource_7775238",1,4,"",1457281],["7775237","mediasource_7775237",1,5,"",1457280],["7775236","mediasource_7775236",1,6,"",1457281],["7775235","mediasource_7775235",1,7,"",1457280],["7775234","mediasource_7775234",1,8,"",1457281],["7775233","mediasource_7775233",1,9,"",1457280],["7775232","mediasource_7775232",1,10,"",1457281],["7775231","mediasource_7775231",1,11,"",1457281],["7775230","mediasource_7775230",1,12,"",1457281],["7775229","mediasource_7775229",1,13,"",1457280],["7775326","mediasource_7775326",1,14,"",1457281],["7775325","mediasource_7775325",1,15,"",1457281],["7775324","mediasource_7775324",1,16,"",1458380],["7775323","mediasource_7775323",1,17,"",1458140],["7775322","mediasource_7775322",1,18,"",1458100],["7775321","mediasource_7775321",1,19,"",1458140],["7775320","mediasource_7775320",1,20,"",1457280],["7775319","mediasource_7775319",1,21,"",1457281],["7775318","mediasource_7775318",1,22,"",1457280],["7775317","mediasource_7775317",1,23,"",1457280],["7775316","mediasource_7775316",1,24,"",1456854],["7775315","mediasource_7775315",1,25,"",1456854],["7775314","mediasource_7775314",1,26,"",1456854],["7775313","mediasource_7775313",1,27,"",1456854],["7775312","mediasource_7775312",1,28,"",1457740],["7775311","mediasource_7775311",1,29,"",1456854],["7775310","mediasource_7775310",1,30,"",1456854],["7775309","mediasource_7775309",1,31,"",1456854],["7775308","mediasource_7775308",1,32,"",1456854],["7775307","mediasource_7775307",1,33,"",1456854],["7775306","mediasource_7775306",1,34,"",1457376],["7775305","mediasource_7775305",1,35,"",1456854],["7775304","mediasource_7775304",1,36,"",1457145],["7775303","mediasource_7775303",1,37,"",1456854],["7775302","mediasource_7775302",1,38,"",1456854],["7775301","mediasource_7775301",1,39,"",1456853],["7775300","mediasource_7775300",1,40,"",1456854],["7775299","mediasource_7775299",1,41,"",1457710],["7775298","mediasource_7775298",1,42,"",1457005],["7775297","mediasource_7775297",1,43,"",1456853],["7775296","mediasource_7775296",1,44,"",1456854],["7775295","mediasource_7775295",1,45,"",1457150],["7775294","mediasource_7775294",1,46,"",1457005],["7775293","mediasource_7775293",1,47,"",1456854],["7775292","mediasource_7775292",1,48,"",1456854],["7775291","mediasource_7775291",1,49,"",5810670],["7775290","mediasource_7775290",1,50,"",1425877]]},{"id":"4534302","type":"Series","title":"Mobile Suit Gundam 00","year":2007,"rating":"TV-14","genres":["Action","Animation","Anime","Drama","Science Fiction","War"],"episodes":[["7298616","mediasource_7298616",1,1,"",1429077],["7298615","mediasource_7298615",1,2,"",1431010],["7298614","mediasource_7298614",1,3,"",1429950],["7298613","mediasource_7298613",1,4,"",1430380],["7298612","mediasource_7298612",1,5,"",1431030],["7298611","mediasource_7298611",1,6,"",1431110],["7298610","mediasource_7298610",1,7,"",1430220],["7298609","mediasource_7298609",1,8,"",1430220],["7298608","mediasource_7298608",1,9,"",1430053],["7298607","mediasource_7298607",1,10,"",1430094],["7298606","mediasource_7298606",1,11,"",1430221],["7298605","mediasource_7298605",1,12,"",1430221],["7298604","mediasource_7298604",1,13,"",1430054],["7298603","mediasource_7298603",1,14,"",1430054],["7298602","mediasource_7298602",1,15,"",1430070],["7298601","mediasource_7298601",1,16,"",1430613],["7298600","mediasource_7298600",1,17,"",1429720],["7298599","mediasource_7298599",1,18,"",1430054],["7298598","mediasource_7298598",1,19,"",1430262],["7298597","mediasource_7298597",1,20,"",1430262],["7298596","mediasource_7298596",1,21,"",1430096],["7298595","mediasource_7298595",1,22,"",1430137],["7298594","mediasource_7298594",1,23,"",1430262],["7298593","mediasource_7298593",1,24,"",1430096],["7298592","mediasource_7298592",1,25,"",1414914],["7787693","mediasource_7787693",2,1,"",1456122],["7787692","mediasource_7787692",2,2,"",1456288],["7787691","mediasource_7787691",2,3,"",1457152],["7787690","mediasource_7787690",2,4,"",1456122],["7787689","mediasource_7787689",2,5,"",1456288],["7787688","mediasource_7787688",2,6,"",1456288],["7787687","mediasource_7787687",2,7,"",1456122],["7787686","mediasource_7787686",2,8,"",1456122],["7787685","mediasource_7787685",2,9,"",1456288],["7787684","mediasource_7787684",2,10,"",1456288],["7787683","mediasource_7787683",2,11,"",1456122],["7787682","mediasource_7787682",2,12,"",1456288],["7787681","mediasource_7787681",2,13,"",1426092],["7787680","mediasource_7787680",2,14,"",1456288],["7787679","mediasource_7787679",2,15,"",1456288],["7787678","mediasource_7787678",2,16,"",1456356],["7787677","mediasource_7787677",2,17,"",1456122],["7787676","mediasource_7787676",2,18,"",1456288],["7787675","mediasource_7787675",2,19,"",1456122],["7787674","mediasource_7787674",2,20,"",1456288],["7787673","mediasource_7787673",2,21,"",1456122],["7787672","mediasource_7787672",2,22,"",1456122],["7787671","mediasource_7787671",2,23,"",1456122],["7787670","mediasource_7787670",2,24,"",1456122],["7787669","mediasource_7787669",2,25,"",1443109]]},{"id":"4534348","type":"Series","title":"Mobile Suit Gundam SEED","year":2002,"rating":"TV-14","genres":["Action","Adventure","Animation","Anime","Drama","Science Fiction","War"],"episodes":[["4536598","mediasource_4536598",1,1,"",1434858],["6416443","mediasource_6416443",1,2,"",1433470],["4536600","mediasource_4536600",1,3,"",1434282],["4536601","mediasource_4536601",1,4,"",1434368],["4536602","mediasource_4536602",1,5,"",1689834],["4536603","mediasource_4536603",1,6,"",1434304],["4536604","mediasource_4536604",1,7,"",1434346],["4536605","mediasource_4536605",1,8,"",1434410],["6087819","mediasource_6087819",1,9,"",1434346],["4536607","mediasource_4536607",1,10,"",1689727],["6087817","mediasource_6087817",1,11,"",1434048],["6416499","mediasource_6416499",1,12,"",1433142],["4536610","mediasource_4536610",1,13,"",1434986],["4536611","mediasource_4536611",1,14,"",1435050],["4536612","mediasource_4536612",1,15,"",1691968],["6087811","mediasource_6087811",1,16,"",1435839],["6416468","mediasource_6416468",1,17,"",1433183],["4536615","mediasource_4536615",1,18,"",1435839],["4536616","mediasource_4536616",1,19,"",1435755],["4536617","mediasource_4536617",1,20,"",1690986],["4536618","mediasource_4536618",1,21,"",1435904],["4536619","mediasource_4536619",1,22,"",1435818],["4536620","mediasource_4536620",1,23,"",1435840],["4536621","mediasource_4536621",1,24,"",1435776],["4536622","mediasource_4536622",1,25,"",1690858],["4536623","mediasource_4536623",1,26,"",1435818],["4536624","mediasource_4536624",1,27,"",1435840],["4536625","mediasource_4536625",1,28,"",1435818],["4536626","mediasource_4536626",1,29,"",1435840],["6087812","mediasource_6087812",1,30,"",1691434],["4536628","mediasource_4536628",1,31,"",1435904],["4536629","mediasource_4536629",1,32,"",1435776],["4536630","mediasource_4536630",1,33,"",1435904],["4536631","mediasource_4536631",1,34,"",1435776],["4536632","mediasource_4536632",1,35,"",1691136],["6087813","mediasource_6087813",1,36,"",1434858],["4536634","mediasource_4536634",1,37,"",1434880],["4536635","mediasource_4536635",1,38,"",1434858],["4536636","mediasource_4536636",1,39,"",1434794],["4536638","mediasource_4536638",1,40,"",1690048],["4536639","mediasource_4536639",1,41,"",1435328],["4536640","mediasource_4536640",1,42,"",1435370],["4536641","mediasource_4536641",1,43,"",1434602],["6087820","mediasource_6087820",1,44,"",1434432],["6087818","mediasource_6087818",1,45,"",1690794],["4536644","mediasource_4536644",1,46,"",1435818],["4536645","mediasource_4536645",1,47,"",1435754],["4536646","mediasource_4536646",1,48,"",1559317],["4536647","mediasource_4536647",1,49,"",1435754],["6087814","mediasource_6087814",1,50,"",1660522]]},{"id":"4543856","type":"Series","title":"Ronin Warriors","year":1988,"rating":"TV-PG","genres":["Action","Adventure","Animation","Fantasy","Science Fiction"],"episodes":[["6795442","mediasource_6795442",1,1,"",1453525],["6795454","mediasource_6795454",1,2,"",1453525],["6795449","mediasource_6795449",1,3,"",1453525],["6795430","mediasource_6795430",1,4,"",1453525],["6795452","mediasource_6795452",1,5,"",1453525],["6795458","mediasource_6795458",1,6,"",1453525],["6795456","mediasource_6795456",1,7,"",1453525],["6795428","mediasource_6795428",1,8,"",1453525],["6795439","mediasource_6795439",1,9,"",1453525],["6795447","mediasource_6795447",1,10,"",1453525],["6795436","mediasource_6795436",1,11,"",1453525],["6795433","mediasource_6795433",1,12,"",1453525],["6795446","mediasource_6795446",1,13,"",1453525],["6795438","mediasource_6795438",1,14,"",1453525],["6795437","mediasource_6795437",1,15,"",1453525],["6795429","mediasource_6795429",1,16,"",1453525],["6795461","mediasource_6795461",1,17,"",1453525],["6795443","mediasource_6795443",1,18,"",1453525],["6795440","mediasource_6795440",1,19,"",1453525],["6795457","mediasource_6795457",1,20,"",1453525],["6795448","mediasource_6795448",1,21,"",1453525],["6795431","mediasource_6795431",1,22,"",1453525],["6795460","mediasource_6795460",1,23,"",1453482],["6795451","mediasource_6795451",1,24,"",1453525],["6795462","mediasource_6795462",1,25,"",1453525],["6795174","mediasource_6795174",1,26,"",1453525],["6795427","mediasource_6795427",1,27,"",1453525],["6795463","mediasource_6795463",1,28,"",1453525],["6795455","mediasource_6795455",1,29,"",1453525],["6795434","mediasource_6795434",1,30,"",1453525],["6795441","mediasource_6795441",1,31,"",1453525],["6795435","mediasource_6795435",1,32,"",1453525],["6795444","mediasource_6795444",1,33,"",1453525],["6795432","mediasource_6795432",1,34,"",1453674],["6795450","mediasource_6795450",1,35,"",1452522],["6795426","mediasource_6795426",1,36,"",1453525],["6795445","mediasource_6795445",1,37,"",1453525],["6795459","mediasource_6795459",1,38,"",1453525],["6795453","mediasource_6795453",1,39,"",1423488]]},{"id":"4547424","type":"Series","title":"Shakugan no Shana","year":2005,"rating":"FSK 12","genres":["Action","Adventure","Animation","Drama","Fantasy","Romance"],"episodes":[["4548667","mediasource_4548667",1,1,"",1482023],["4548668","mediasource_4548668",1,2,"",1482023],["4548669","mediasource_4548669",1,3,"",1482023],["6088727","mediasource_6088727",1,4,"",1482023],["4548671","mediasource_4548671",1,5,"",1482023],["4548672","mediasource_4548672",1,6,"",1482023],["4548673","mediasource_4548673",1,7,"",1482023],["4548674","mediasource_4548674",1,8,"",1482023],["4548675","mediasource_4548675",1,9,"",1482023],["4548676","mediasource_4548676",1,10,"",1482023],["4548677","mediasource_4548677",1,11,"",1482023],["4548678","mediasource_4548678",1,12,"",1482023],["4548679","mediasource_4548679",1,13,"",1482023],["4548680","mediasource_4548680",1,14,"",1482023],["4548681","mediasource_4548681",1,15,"",1482023],["4548682","mediasource_4548682",1,16,"",1482023],["4548683","mediasource_4548683",1,17,"",1482023],["6088726","mediasource_6088726",1,18,"",1481981],["4548685","mediasource_4548685",1,19,"",1481981],["4548686","mediasource_4548686",1,20,"",1481981],["4548687","mediasource_4548687",1,21,"",1481981],["4548688","mediasource_4548688",1,22,"",1481981],["4548689","mediasource_4548689",1,23,"",1481981],["4548690","mediasource_4548690",1,24,"",1481022],["4548691","mediasource_4548691",2,1,"",1454079],["4548692","mediasource_4548692",2,2,"",1449115],["4548693","mediasource_4548693",2,3,"",1449115],["4548694","mediasource_4548694",2,4,"",1449115],["4548695","mediasource_4548695",2,5,"",1449074],["4548696","mediasource_4548696",2,6,"",1449032],["4548697","mediasource_4548697",2,7,"",1449074],["4548698","mediasource_4548698",2,8,"",1449032],["4548699","mediasource_4548699",2,9,"",1449032],["4548701","mediasource_4548701",2,11,"",1449282],["4548702","mediasource_4548702",2,12,"",1449115],["4548703","mediasource_4548703",2,13,"",1449115],["6088730","mediasource_6088730",2,14,"",1449074],["4548705","mediasource_4548705",2,15,"",1449115],["4548706","mediasource_4548706",2,16,"",1449074],["4548707","mediasource_4548707",2,17,"",1448948],["4548708","mediasource_4548708",2,18,"",1448990],["4548709","mediasource_4548709",2,19,"",1448990],["6088731","mediasource_6088731",2,20,"",1433975],["6088728","mediasource_6088728",2,21,"",1433975],["4548712","mediasource_4548712",2,22,"",1433975],["6088732","mediasource_6088732",2,23,"",1524065],["4548714","mediasource_4548714",2,24,"",1419002],["6088733","mediasource_6088733",3,1,"",1518100],["4548716","mediasource_4548716",3,2,"",1422046],["6088737","mediasource_6088737",3,3,"",1422004],["4548718","mediasource_4548718",3,4,"",1422046],["4548719","mediasource_4548719",3,5,"",1422088],["4548720","mediasource_4548720",3,6,"",1422004],["4548721","mediasource_4548721",3,7,"",1421921],["4548722","mediasource_4548722",3,8,"",1422046],["4548723","mediasource_4548723",3,9,"",1422088],["4548724","mediasource_4548724",3,10,"",1428094],["6088736","mediasource_6088736",3,11,"",1422004],["4548726","mediasource_4548726",3,12,"",1422004],["4548727","mediasource_4548727",3,13,"",1422046],["4548728","mediasource_4548728",3,14,"",1422088],["4548729","mediasource_4548729",3,15,"",1428052],["4548730","mediasource_4548730",3,16,"",1422046],["4548731","mediasource_4548731",3,17,"",1428094],["4548732","mediasource_4548732",3,18,"",1422046],["6088738","mediasource_6088738",3,19,"",1422004],["4548735","mediasource_4548735",3,21,"",1422046],["4548736","mediasource_4548736",3,22,"",1421921],["4548737","mediasource_4548737",3,23,"",1422004]]},{"id":"4547452","type":"Series","title":"Saint Seiya","year":1986,"rating":"TV-PG","genres":["Action","Adventure","Animation","Anime","Drama","Fantasy","Martial Arts","Science Fiction"],"episodes":[["4549414","mediasource_4549414",1,1,"",1462465],["6092470","mediasource_6092470",1,2,"",1462465],["4549416","mediasource_4549416",1,3,"",1462465],["4549417","mediasource_4549417",1,4,"",1462465],["4549418","mediasource_4549418",1,5,"",1462465],["4549419","mediasource_4549419",1,6,"",1462464],["4549420","mediasource_4549420",1,7,"",1462464],["6092466","mediasource_6092466",1,8,"",1469470],["6092472","mediasource_6092472",1,9,"",1462464],["4549423","mediasource_4549423",1,10,"",1462464],["4549424","mediasource_4549424",1,11,"",1462465],["4549425","mediasource_4549425",1,12,"",1462465],["4549426","mediasource_4549426",1,13,"",1462465],["4549427","mediasource_4549427",1,14,"",1462464],["4549428","mediasource_4549428",1,15,"",1462464],["4549429","mediasource_4549429",1,16,"",1469470],["6092467","mediasource_6092467",1,17,"",1462465],["4549431","mediasource_4549431",1,18,"",1462464],["4549432","mediasource_4549432",1,19,"",1462464],["4549433","mediasource_4549433",1,20,"",1462464],["4549434","mediasource_4549434",1,21,"",1462464],["6092473","mediasource_6092473",1,22,"",1462465],["4549436","mediasource_4549436",1,23,"",1462465],["4549437","mediasource_4549437",1,24,"",1469470],["4549438","mediasource_4549438",1,25,"",1462465],["4549439","mediasource_4549439",1,26,"",1462464],["4549440","mediasource_4549440",1,27,"",1462465],["4549441","mediasource_4549441",1,28,"",1462420],["4549442","mediasource_4549442",1,29,"",1462464],["4549443","mediasource_4549443",1,30,"",1462464],["4549444","mediasource_4549444",1,31,"",1462464],["6092471","mediasource_6092471",1,32,"",1469470],["4549446","mediasource_4549446",1,33,"",1462465],["4549447","mediasource_4549447",1,34,"",1462465],["4549448","mediasource_4549448",1,35,"",1462464],["4549449","mediasource_4549449",1,36,"",1462464],["4549450","mediasource_4549450",1,37,"",1462465],["4549451","mediasource_4549451",1,38,"",1462465],["6092474","mediasource_6092474",1,39,"",1469470],["4549453","mediasource_4549453",1,40,"",1462464],["4549454","mediasource_4549454",1,41,"",1462464],["4549455","mediasource_4549455",1,42,"",1462464],["4549456","mediasource_4549456",1,43,"",1462464],["4549457","mediasource_4549457",1,44,"",1462465],["4549458","mediasource_4549458",1,45,"",1462464],["4549459","mediasource_4549459",1,46,"",1462465],["6092469","mediasource_6092469",1,47,"",1469470],["4549461","mediasource_4549461",1,48,"",1447450],["4549462","mediasource_4549462",1,49,"",1447450],["4549463","mediasource_4549463",1,50,"",1447450],["6092468","mediasource_6092468",1,51,"",1447450],["4549465","mediasource_4549465",1,52,"",1447450],["4549466","mediasource_4549466",1,53,"",1447450],["4549468","mediasource_4549468",1,54,"",1447450],["4549469","mediasource_4549469",1,55,"",1454456],["4549470","mediasource_4549470",1,56,"",1447450],["4549471","mediasource_4549471",1,57,"",1447450],["4549472","mediasource_4549472",1,58,"",1447450],["4549473","mediasource_4549473",1,59,"",1447450],["6092465","mediasource_6092465",1,60,"",1447450],["4549475","mediasource_4549475",1,61,"",1447450],["4549476","mediasource_4549476",1,62,"",1454456],["4549477","mediasource_4549477",1,63,"",1447450],["4549478","mediasource_4549478",1,64,"",1447450],["4549479","mediasource_4549479",1,65,"",1447450],["4549480","mediasource_4549480",1,66,"",1447450],["4549481","mediasource_4549481",1,67,"",1447450],["4549482","mediasource_4549482",1,68,"",1447450],["4549483","mediasource_4549483",1,69,"",1447450],["4549484","mediasource_4549484",1,70,"",1454455],["4549485","mediasource_4549485",1,71,"",1447450],["4549486","mediasource_4549486",1,72,"",1447450],["4549487","mediasource_4549487",1,73,"",1447450],["6092462","mediasource_6092462",2,1,"",1423904],["4549489","mediasource_4549489",2,2,"",1418144],["4549490","mediasource_4549490",2,3,"",1423904],["6092463","mediasource_6092463",2,4,"",1428128],["4549492","mediasource_4549492",2,5,"",1421984],["4549493","mediasource_4549493",2,6,"",1418144],["6092459","mediasource_6092459",2,7,"",1447450],["4549495","mediasource_4549495",2,8,"",1447450],["4549496","mediasource_4549496",2,9,"",1447450],["4549497","mediasource_4549497",2,10,"",1447450],["4549498","mediasource_4549498",2,11,"",1454455],["4549499","mediasource_4549499",2,12,"",1447450],["6092458","mediasource_6092458",2,13,"",1447450],["4549501","mediasource_4549501",2,14,"",1447450],["6092464","mediasource_6092464",2,15,"",1447450],["4549503","mediasource_4549503",2,16,"",1447450],["4549504","mediasource_4549504",2,17,"",1447450],["4549505","mediasource_4549505",2,18,"",1447450],["4549506","mediasource_4549506",2,19,"",1454455],["4549507","mediasource_4549507",2,20,"",1447450],["6092460","mediasource_6092460",2,21,"",1447450],["4549509","mediasource_4549509",2,22,"",1447450],["6092461","mediasource_6092461",2,23,"",1447450],["4549511","mediasource_4549511",2,24,"",1447450],["4549512","mediasource_4549512",2,25,"",1447450],["4549513","mediasource_4549513",2,26,"",1454456],["4549514","mediasource_4549514",3,1,"",1447450],["4549515","mediasource_4549515",3,2,"",1447450],["4549516","mediasource_4549516",3,3,"",1447450],["6092451","mediasource_6092451",3,4,"",1447450],["4549518","mediasource_4549518",3,5,"",1447450],["4549519","mediasource_4549519",3,6,"",1447450],["4549520","mediasource_4549520",3,7,"",1447450],["4549521","mediasource_4549521",3,8,"",1454456],["6092450","mediasource_6092450",3,9,"",1447450],["4549523","mediasource_4549523",3,10,"",1447450],["4549524","mediasource_4549524",3,11,"",1447450],["4549525","mediasource_4549525",3,12,"",1447450],["4549526","mediasource_4549526",3,13,"",1447450],["4549527","mediasource_4549527",3,14,"",1447450],["4549528","mediasource_4549528",3,15,"",1424425],["6092447","mediasource_6092447",4,1,"",1667476],["4549530","mediasource_4549530",4,2,"",1692052],["6092448","mediasource_6092448",4,3,"",1744106],["6092444","mediasource_6092444",4,4,"",1732095],["4549533","mediasource_4549533",4,5,"",1696170],["4549534","mediasource_4549534",4,6,"",1712085],["4549535","mediasource_4549535",4,7,"",1659028],["4549536","mediasource_4549536",4,8,"",1737085],["4549537","mediasource_4549537",4,9,"",1659028],["6092446","mediasource_6092446",4,10,"",1659093],["4549539","mediasource_4549539",4,11,"",1782088],["6092445","mediasource_6092445",4,12,"",1788096],["4549541","mediasource_4549541",4,13,"",1941140],["6092449","mediasource_6092449",5,1,"",1471146],["4549543","mediasource_4549543",5,2,"",1527125],["4549544","mediasource_4549544",5,3,"",1471082],["4549545","mediasource_4549545",5,4,"",1471082],["4549546","mediasource_4549546",5,5,"",1470997],["4549547","mediasource_4549547",5,6,"",1471082],["4549548","mediasource_4549548",5,7,"",1471400],["4549549","mediasource_4549549",5,8,"",1471146],["4549550","mediasource_4549550",5,9,"",1471060],["4549551","mediasource_4549551",5,10,"",1471146],["4549552","mediasource_4549552",5,11,"",1471146],["4549553","mediasource_4549553",5,12,"",1441045],["4549554","mediasource_4549554",6,1,"",1471146],["6092498","mediasource_6092498",6,2,"",1471146],["4549556","mediasource_4549556",6,3,"",1471104],["7156079","mediasource_7156079",6,4,"",1408598],["4549558","mediasource_4549558",6,5,"",1471146],["4549559","mediasource_4549559",6,6,"",1471116],["4549560","mediasource_4549560",7,1,"",1599776],["4549561","mediasource_4549561",7,2,"",1475866],["4549562","mediasource_4549562",7,3,"",1475616],["4549563","mediasource_4549563",7,4,"",1475866],["4549564","mediasource_4549564",7,5,"",1475616],["4549565","mediasource_4549565",7,6,"",1477616],["4549566","mediasource_4549566",7,7,"",1475616],["4549567","mediasource_4549567",7,8,"",1476866],["4549568","mediasource_4549568",7,9,"",1475616],["4549569","mediasource_4549569",7,10,"",1476866],["4549570","mediasource_4549570",7,11,"",1475616],["4549571","mediasource_4549571",7,12,"",1476866],["4549572","mediasource_4549572",7,13,"",1476866],["4549573","mediasource_4549573",8,1,"",1473475],["4549574","mediasource_4549574",8,2,"",1473472],["6092455","mediasource_6092455",8,3,"",1473475],["4549576","mediasource_4549576",8,4,"",1473472],["6092457","mediasource_6092457",8,5,"",1473475],["4549578","mediasource_4549578",8,6,"",1473472],["4549579","mediasource_4549579",8,7,"",1473474],["4549580","mediasource_4549580",8,8,"",1473472],["4549581","mediasource_4549581",8,9,"",1473475],["4549582","mediasource_4549582",8,10,"",1473472],["4549583","mediasource_4549583",8,11,"",1473474],["6092456","mediasource_6092456",8,12,"",1473475],["4549585","mediasource_4549585",8,13,"",1443442],["6092475","mediasource_6092475",9,1,"",1345132],["4549587","mediasource_4549587",9,2,"",1345132],["4549588","mediasource_4549588",9,3,"",1345132],["4549589","mediasource_4549589",9,4,"",1345132],["4549590","mediasource_4549590",9,5,"",1345201],["4549591","mediasource_4549591",9,6,"",1345650],["4549592","mediasource_4549592",9,7,"",1345660],["4549593","mediasource_4549593",9,8,"",1345700],["6092488","mediasource_6092488",9,9,"",1345710],["4549595","mediasource_4549595",9,10,"",1345720],["4549596","mediasource_4549596",9,11,"",1346860],["4549597","mediasource_4549597",9,12,"",1346630],["4549598","mediasource_4549598",9,13,"",1346230],["4549599","mediasource_4549599",9,14,"",1345470],["4549600","mediasource_4549600",9,15,"",1345201],["6092477","mediasource_6092477",9,16,"",1345290],["6092489","mediasource_6092489",9,17,"",1345132],["4549603","mediasource_4549603",9,18,"",1346190],["6092482","mediasource_6092482",9,19,"",1345132],["6092483","mediasource_6092483",9,20,"",1345201],["6092486","mediasource_6092486",9,21,"",1345460],["6092478","mediasource_6092478",9,22,"",1345830],["4549608","mediasource_4549608",9,23,"",1345960],["4549609","mediasource_4549609",9,24,"",1345201],["6092487","mediasource_6092487",9,25,"",1345201],["4549611","mediasource_4549611",9,26,"",1345155],["4549612","mediasource_4549612",9,27,"",1346420],["6092484","mediasource_6092484",9,28,"",1345132],["4549614","mediasource_4549614",9,29,"",1345201],["4549615","mediasource_4549615",9,30,"",1345201],["6092476","mediasource_6092476",9,31,"",1500020],["4549617","mediasource_4549617",9,32,"",1345201],["4549618","mediasource_4549618",9,33,"",1345201],["4549619","mediasource_4549619",9,34,"",1345132],["6092479","mediasource_6092479",9,35,"",1345132],["4549621","mediasource_4549621",9,36,"",1345860],["4549622","mediasource_4549622",9,37,"",1345132],["4549623","mediasource_4549623",9,38,"",1345132],["4549624","mediasource_4549624",9,39,"",1345132],["4549625","mediasource_4549625",9,40,"",1345085],["6092481","mediasource_6092481",9,41,"",1440000],["4549627","mediasource_4549627",9,42,"",1345300],["4549628","mediasource_4549628",9,43,"",1345132],["4549629","mediasource_4549629",9,44,"",1346160],["4549630","mediasource_4549630",9,45,"",1345201],["4549631","mediasource_4549631",9,46,"",1642050],["6092485","mediasource_6092485",9,47,"",1345201],["4549633","mediasource_4549633",9,48,"",1523570],["4549634","mediasource_4549634",9,49,"",1446230],["6092480","mediasource_6092480",9,50,"",1345950],["4549636","mediasource_4549636",9,51,"",1345132],["6092491","mediasource_6092491",10,1,"",1345201],["4549638","mediasource_4549638",10,2,"",1345730],["4549639","mediasource_4549639",10,3,"",1346070],["4549640","mediasource_4549640",10,4,"",1620000],["4549641","mediasource_4549641",10,5,"",1519950],["4549642","mediasource_4549642",10,6,"",1345890],["4549643","mediasource_4549643",10,7,"",1346150],["4549644","mediasource_4549644",10,8,"",1345132],["4549645","mediasource_4549645",10,9,"",1347050],["6092490","mediasource_6092490",10,10,"",1345590],["4549647","mediasource_4549647",10,11,"",1440000],["4549648","mediasource_4549648",10,12,"",1345201],["4549649","mediasource_4549649",10,13,"",1345132],["4549650","mediasource_4549650",10,14,"",1346300],["4549651","mediasource_4549651",10,15,"",1347230],["4549652","mediasource_4549652",10,16,"",1347060],["4549653","mediasource_4549653",10,17,"",1345640],["4549654","mediasource_4549654",10,18,"",1345370],["4549655","mediasource_4549655",10,19,"",1345201],["4549656","mediasource_4549656",10,20,"",1345580],["6092492","mediasource_6092492",10,21,"",1345155],["6092493","mediasource_6092493",10,22,"",1345201],["4549659","mediasource_4549659",10,23,"",1345940],["4549660","mediasource_4549660",10,24,"",1345740],["4549661","mediasource_4549661",10,25,"",1345420],["4549662","mediasource_4549662",10,26,"",1345132],["4549663","mediasource_4549663",10,27,"",1345132],["4549664","mediasource_4549664",10,28,"",1345600],["6092495","mediasource_6092495",10,29,"",1345132],["4549666","mediasource_4549666",10,30,"",1345560],["6092496","mediasource_6092496",10,31,"",1345720],["4549668","mediasource_4549668",10,32,"",1345660],["4549669","mediasource_4549669",10,33,"",1345620],["4549670","mediasource_4549670",10,34,"",1347990],["4549671","mediasource_4549671",10,35,"",1349870],["4549672","mediasource_4549672",10,36,"",1345201],["4549673","mediasource_4549673",10,37,"",1345720],["4549674","mediasource_4549674",10,38,"",1347980],["6092497","mediasource_6092497",10,39,"",1346450],["4549676","mediasource_4549676",10,40,"",1345750],["4549677","mediasource_4549677",10,41,"",1345580],["4549678","mediasource_4549678",10,42,"",1347640],["6092494","mediasource_6092494",10,43,"",1345750],["4549680","mediasource_4549680",10,44,"",1345132],["4549681","mediasource_4549681",10,45,"",1345132],["4549682","mediasource_4549682",10,46,"",1345630],["6092453","mediasource_6092453",11,1,"",1437269],["4549684","mediasource_4549684",11,2,"",1438560],["4549685","mediasource_4549685",11,3,"",1438300],["4549686","mediasource_4549686",11,4,"",1438470],["4549687","mediasource_4549687",11,5,"",1438560],["4549688","mediasource_4549688",11,6,"",1438510],["4549689","mediasource_4549689",11,7,"",1438390],["6092454","mediasource_6092454",11,8,"",1437269],["6092452","mediasource_6092452",11,9,"",1438510],["4549692","mediasource_4549692",11,10,"",1438760],["4549693","mediasource_4549693",11,11,"",1438100],["4549694","mediasource_4549694",11,12,"",1438430],["4549695","mediasource_4549695",11,13,"",1422292],["4549696","mediasource_4549696",12,1,"",1512638],["4549697","mediasource_4549697",12,2,"",1512638],["4549698","mediasource_4549698",12,3,"",1512638],["6092499","mediasource_6092499",12,4,"",1512638],["4549700","mediasource_4549700",12,5,"",1512638],["4549701","mediasource_4549701",12,6,"",1512638],["4549702","mediasource_4549702",12,7,"",1512638],["6092500","mediasource_6092500",12,8,"",1512638],["4549704","mediasource_4549704",12,9,"",1512638],["4549705","mediasource_4549705",12,10,"",1497622]]},{"id":"4547466","type":"Series","title":"S-CRY-Ed","year":2001,"rating":"TV-14","genres":["Action","Adventure","Animation","Anime","Drama","Fantasy","Science Fiction"],"episodes":[["4550079","mediasource_4550079",1,1,"",1424924],["4550080","mediasource_4550080",1,2,"",1421921],["6088619","mediasource_6088619",1,3,"",1423422],["4550082","mediasource_4550082",1,4,"",1423339],["4550083","mediasource_4550083",1,5,"",1424340],["4550084","mediasource_4550084",1,6,"",1428427],["4550085","mediasource_4550085",1,7,"",1424340],["4550086","mediasource_4550086",1,8,"",1423422],["6088620","mediasource_6088620",1,9,"",1423756],["4550088","mediasource_4550088",1,10,"",1423839],["4550089","mediasource_4550089",1,11,"",1429512],["6088622","mediasource_6088622",1,12,"",1424173],["4550091","mediasource_4550091",1,13,"",1423005],["4550092","mediasource_4550092",1,14,"",1424590],["4550093","mediasource_4550093",1,15,"",1424757],["4550094","mediasource_4550094",1,16,"",1429261],["4550095","mediasource_4550095",1,17,"",1423923],["6088618","mediasource_6088618",1,18,"",1423839],["4550097","mediasource_4550097",1,19,"",1424173],["4550098","mediasource_4550098",1,20,"",1424256],["6088621","mediasource_6088621",1,21,"",1429345],["4550100","mediasource_4550100",1,22,"",1423839],["4550101","mediasource_4550101",1,23,"",1423839],["4550102","mediasource_4550102",1,24,"",1422922],["4550103","mediasource_4550103",1,25,"",1424173],["4550104","mediasource_4550104",1,26,"",1412078]]},{"id":"4552430","type":"Series","title":"Trigun","year":1998,"rating":"TV-PG","genres":["Action","Adventure","Animation","Anime","Comedy","Drama","Science Fiction","Western"],"episodes":[["4553788","mediasource_4553788",1,1,"",1479396],["6084721","mediasource_6084721",1,2,"",1475976],["4553790","mediasource_4553790",1,3,"",1477436],["6084719","mediasource_6084719",1,4,"",1476602],["4553792","mediasource_4553792",1,5,"",1476477],["4553793","mediasource_4553793",1,6,"",1478479],["4553794","mediasource_4553794",1,7,"",1478646],["4553795","mediasource_4553795",1,8,"",1476477],["4553796","mediasource_4553796",1,9,"",1478479],["6084722","mediasource_6084722",1,10,"",1477102],["4553798","mediasource_4553798",1,11,"",1477144],["4553799","mediasource_4553799",1,12,"",1477353],["4553800","mediasource_4553800",1,13,"",1476602],["4553801","mediasource_4553801",1,14,"",1476310],["4553802","mediasource_4553802",1,15,"",1477478],["4553803","mediasource_4553803",1,16,"",1477645],["4553804","mediasource_4553804",1,17,"",1476810],["4553805","mediasource_4553805",1,18,"",1477144],["6084720","mediasource_6084720",1,19,"",1477811],["4553807","mediasource_4553807",1,20,"",1478145],["4553808","mediasource_4553808",1,21,"",1477478],["4553809","mediasource_4553809",1,22,"",1476810],["6815566","mediasource_6815566",1,23,"",1476941],["6084723","mediasource_6084723",1,24,"",1478479],["4553812","mediasource_4553812",1,25,"",1476477],["4553813","mediasource_4553813",1,26,"",1447114]]},{"id":"4554526","type":"Series","title":"Yu-Gi-Oh! Zexal","year":2011,"rating":"TV-Y7","genres":["Action","Adventure","Animation","Anime","Comedy","Fantasy","Science Fiction"],"episodes":[["4554908","mediasource_4554908",1,1,"",1316084],["4554909","mediasource_4554909",1,2,"",1371788],["6093408","mediasource_6093408",1,3,"",1311788],["4554911","mediasource_4554911",1,4,"",1355534],["4554912","mediasource_4554912",1,5,"",1266114],["4554913","mediasource_4554913",1,6,"",1355093],["6093404","mediasource_6093404",1,7,"",1312067],["4554915","mediasource_4554915",1,8,"",1354861],["4554916","mediasource_4554916",1,9,"",1280000],["4554918","mediasource_4554918",1,11,"",1376641],["4554919","mediasource_4554919",1,12,"",1382028],["4554920","mediasource_4554920",1,13,"",1292213],["4554922","mediasource_4554922",1,15,"",1291912],["4554923","mediasource_4554923",1,16,"",1356626],["6093406","mediasource_6093406",1,17,"",1295743],["4554925","mediasource_4554925",1,18,"",1354605],["4554926","mediasource_4554926",1,19,"",1295673],["6093407","mediasource_6093407",1,20,"",1309745],["6093400","mediasource_6093400",1,22,"",1304288],["4554930","mediasource_4554930",1,23,"",1291633],["4554931","mediasource_4554931",1,24,"",1356301],["6093409","mediasource_6093409",1,25,"",1342461],["4554933","mediasource_4554933",1,26,"",1245054],["4554934","mediasource_4554934",1,27,"",1346200],["4554935","mediasource_4554935",1,28,"",1318197],["4554936","mediasource_4554936",1,29,"",1298483],["6093405","mediasource_6093405",1,30,"",1262863],["4554938","mediasource_4554938",1,31,"",1289891],["4554939","mediasource_4554939",1,32,"",1345294],["4554940","mediasource_4554940",1,33,"",1191973],["4554941","mediasource_4554941",1,34,"",1296416],["6093401","mediasource_6093401",1,35,"",1296765],["6093403","mediasource_6093403",1,36,"",1296741],["4554944","mediasource_4554944",1,37,"",1254226],["4554945","mediasource_4554945",1,38,"",1296648],["4554946","mediasource_4554946",1,39,"",1286966],["4554947","mediasource_4554947",1,40,"",1283924],["4554948","mediasource_4554948",1,41,"",1206787],["4554949","mediasource_4554949",1,42,"",1291842],["4554950","mediasource_4554950",1,43,"",1294628],["4554951","mediasource_4554951",1,44,"",1293398],["6093410","mediasource_6093410",1,45,"",1287709],["4554953","mediasource_4554953",1,46,"",1292678],["6093402","mediasource_6093402",1,48,"",1291494],["4554956","mediasource_4554956",1,49,"",1277515],["4554957","mediasource_4554957",2,1,"",1290170],["4554958","mediasource_4554958",2,2,"",1291865],["6093423","mediasource_6093423",2,3,"",1282299],["4554960","mediasource_4554960",2,4,"",1213103],["4554961","mediasource_4554961",2,5,"",1231888],["4554962","mediasource_4554962",2,6,"",1219187],["4554964","mediasource_4554964",2,8,"",1241710],["4554965","mediasource_4554965",2,9,"",1276819],["6093411","mediasource_6093411",2,10,"",1206834],["4554967","mediasource_4554967",2,11,"",1283994],["6093413","mediasource_6093413",2,12,"",1233049],["4554969","mediasource_4554969",2,13,"",1280905],["4554970","mediasource_4554970",2,14,"",1233026],["4554971","mediasource_4554971",2,15,"",1276726],["4554972","mediasource_4554972",2,16,"",1280975],["4554973","mediasource_4554973",2,17,"",1261470],["4554974","mediasource_4554974",2,18,"",1293096],["6093412","mediasource_6093412",2,19,"",1240340],["4554976","mediasource_4554976",2,20,"",1278096],["4554977","mediasource_4554977",2,21,"",1242941],["4554978","mediasource_4554978",2,22,"",1265418],["4554979","mediasource_4554979",2,23,"",1212523],["6093424","mediasource_6093424",2,24,"",1274543],["4554981","mediasource_4554981",2,25,"",1271524],["6093419","mediasource_6093419",2,26,"",1293119],["4554983","mediasource_4554983",2,27,"",1293049],["4554984","mediasource_4554984",2,28,"",1268413],["4554985","mediasource_4554985",2,29,"",1293026],["4554986","mediasource_4554986",2,30,"",1213405],["6093425","mediasource_6093425",2,31,"",1215681],["4554988","mediasource_4554988",2,32,"",1280069],["4554989","mediasource_4554989",2,33,"",1207461],["4554990","mediasource_4554990",2,34,"",1239597],["4554991","mediasource_4554991",2,35,"",1294048],["4554992","mediasource_4554992",2,36,"",1258127],["6093420","mediasource_6093420",2,38,"",1247631],["4554995","mediasource_4554995",2,39,"",1244566],["4554996","mediasource_4554996",2,40,"",1292376],["4554998","mediasource_4554998",2,42,"",1262004],["6093421","mediasource_6093421",2,44,"",1242685],["6093422","mediasource_6093422",2,45,"",1280627],["4555003","mediasource_4555003",2,47,"",1293049],["4555004","mediasource_4555004",2,48,"",1291749],["4555005","mediasource_4555005",2,49,"",1291424],["4555006","mediasource_4555006",3,1,"",1212476],["4555008","mediasource_4555008",3,3,"",1225572],["4555009","mediasource_4555009",3,4,"",1293096],["4555010","mediasource_4555010",3,5,"",1224829],["4555011","mediasource_4555011",3,6,"",1282368],["4555012","mediasource_4555012",3,7,"",1292097],["4555013","mediasource_4555013",3,8,"",1284806],["4555014","mediasource_4555014",3,9,"",1216911],["4555015","mediasource_4555015",3,10,"",1247236],["4555017","mediasource_4555017",3,12,"",1247794],["4555018","mediasource_4555018",3,13,"",1279535],["4555019","mediasource_4555019",3,14,"",1244473],["4555020","mediasource_4555020",3,15,"",1245263],["4555021","mediasource_4555021",3,16,"",1256455],["6093394","mediasource_6093394",3,17,"",1246702],["4555023","mediasource_4555023",3,18,"",1260959],["4555024","mediasource_4555024",3,19,"",1292213],["6093391","mediasource_6093391",3,20,"",1205464],["4555026","mediasource_4555026",3,21,"",1205766],["4555027","mediasource_4555027",3,22,"",1290635],["6093398","mediasource_6093398",3,23,"",1199752],["4555029","mediasource_4555029",3,24,"",1233885],["6093399","mediasource_6093399",3,27,"",1225386],["4555034","mediasource_4555034",3,29,"",1295093],["4555035","mediasource_4555035",3,30,"",1245611],["4555036","mediasource_4555036",3,31,"",1214403],["4555037","mediasource_4555037",3,32,"",1296091],["4555038","mediasource_4555038",3,33,"",1293560],["4555039","mediasource_4555039",3,34,"",1292213],["4555040","mediasource_4555040",3,35,"",1236068],["4555041","mediasource_4555041",3,36,"",1262933],["4555042","mediasource_4555042",3,37,"",1206160],["4555043","mediasource_4555043",3,38,"",1240735],["4555044","mediasource_4555044",3,39,"",1296091],["4555045","mediasource_4555045",3,40,"",1296091],["4555047","mediasource_4555047",3,42,"",1296045],["4555049","mediasource_4555049",3,44,"",1296045],["6093392","mediasource_6093392",3,45,"",1283367],["4555051","mediasource_4555051",3,46,"",1242848],["6093393","mediasource_6093393",3,47,"",1282415],["4555053","mediasource_4555053",3,48,"",1349056]]},{"id":"4554532","type":"Series","title":"Zakuro","year":2010,"rating":"BR-10","genres":["Action","Animation","Comedy","Fantasy","History","Romance"],"episodes":[["4555319","mediasource_4555319",1,1,"",1462048]]},{"id":"4668010","type":"Series","title":"Ghost Stories","year":2000,"rating":"TV-PG","genres":["Action","Adventure","Animation","Anime","Comedy","Fantasy","Horror","Mystery"],"episodes":[["4668022","mediasource_4668022",1,1,"",1322696],["4668023","mediasource_4668023",1,2,"",1322130],["5870443","mediasource_5870443",1,3,"",1322080],["5870440","mediasource_5870440",1,4,"",1319743],["5870442","mediasource_5870442",1,5,"",1322813],["5870441","mediasource_5870441",1,6,"",1321344],["5870439","mediasource_5870439",1,7,"",1312384],["4668029","mediasource_4668029",1,8,"",1311712],["4668030","mediasource_4668030",1,9,"",1325536],["4668031","mediasource_4668031",1,10,"",1322880],["4668032","mediasource_4668032",1,11,"",1312295],["4668033","mediasource_4668033",1,12,"",1314464],["6784581","mediasource_6784581",1,13,"",1323448],["4668035","mediasource_4668035",1,14,"",1320252],["5870444","mediasource_5870444",1,15,"",1322947],["4668037","mediasource_4668037",1,16,"",1319751],["4668038","mediasource_4668038",1,17,"",1325800],["4668039","mediasource_4668039",1,18,"",1321720],["4668040","mediasource_4668040",1,19,"",1321879]]},{"id":"4728759","type":"Series","title":"One Piece","year":1999,"rating":"TV-Y7","genres":["Action","Adventure","Animation","Anime","Comedy","Drama","Fantasy"],"episodes":[["6075478","mediasource_6075478",10,16,"",1430762],["4728765","mediasource_4728765",21,124,"",1430744],["4747296","mediasource_4747296",21,125,"",1430762],["4794087","mediasource_4794087",21,126,"",1430890],["5169885","mediasource_5169885",21,144,"",1400743],["5335719","mediasource_5335719",21,154,"",1430836],["5338729","mediasource_5338729",21,155,"",1430784],["5346996","mediasource_5346996",21,156,"",1430847],["6075488","mediasource_6075488",21,157,"",1430869],["6075481","mediasource_6075481",21,158,"",1430848],["5386856","mediasource_5386856",21,159,"",1430784],["6075479","mediasource_6075479",21,160,"",1430784],["5405487","mediasource_5405487",21,161,"",1430783],["6075482","mediasource_6075482",21,162,"",1430784],["5442480","mediasource_5442480",21,163,"",1430784],["6075485","mediasource_6075485",21,164,"",1430848],["5459588","mediasource_5459588",21,165,"",1430848],["5466805","mediasource_5466805",21,166,"",1430847],["5478934","mediasource_5478934",21,167,"",1430784],["6075480","mediasource_6075480",21,168,"",1430869],["5489874","mediasource_5489874",21,169,"",1430784],["5498434","mediasource_5498434",21,170,"",1430954],["5531016","mediasource_5531016",21,171,"",1430784],["6075489","mediasource_6075489",21,172,"",1430784],["6075483","mediasource_6075483",21,173,"",1430869],["6342666","mediasource_6342666",21,174,"",1430784],["5567106","mediasource_5567106",21,175,"",1430848],["5574596","mediasource_5574596",21,176,"",1430912],["5582378","mediasource_5582378",21,177,"",1430869],["5590343","mediasource_5590343",21,178,"",1430741],["6075486","mediasource_6075486",21,179,"",1430848],["5618322","mediasource_5618322",21,180,"",1430912],["6075487","mediasource_6075487",21,181,"",1430848],["5640702","mediasource_5640702",21,182,"",1400789],["5734038","mediasource_5734038",21,183,"",1430837],["5745379","mediasource_5745379",21,184,"",1430784],["5753196","mediasource_5753196",21,185,"",1430869],["5761666","mediasource_5761666",21,186,"",1430912],["6075484","mediasource_6075484",21,187,"",1400896],["5787290","mediasource_5787290",21,188,"",1430848],["5794157","mediasource_5794157",21,189,"",1430869],["6167075","mediasource_6167075",21,190,"",1430869],["6174406","mediasource_6174406",21,191,"",1430869],["6232726","mediasource_6232726",21,192,"",1430869],["6244715","mediasource_6244715",21,193,"",1430848],["6261537","mediasource_6261537",21,194,"",1430912],["6342667","mediasource_6342667",22,1,"",1430912],["6355015","mediasource_6355015",22,2,"",1430998],["6389398","mediasource_6389398",22,3,"",1400789],["6434674","mediasource_6434674",22,4,"",1430997],["6444508","mediasource_6444508",22,5,"",1430869],["6452540","mediasource_6452540",22,6,"",1430954],["6460837","mediasource_6460837",22,7,"",1400938],["6525997","mediasource_6525997",22,8,"",1430997],["6533767","mediasource_6533767",22,9,"",1430997],["6544229","mediasource_6544229",22,10,"",1430997],["6551673","mediasource_6551673",22,11,"",1430954],["6575430","mediasource_6575430",22,12,"",1430954],["6582359","mediasource_6582359",22,13,"",1430912],["6589121","mediasource_6589121",22,14,"",1430954],["6596164","mediasource_6596164",22,15,"",1400959],["6733156","mediasource_6733156",22,27,"",1430954],["6859677","mediasource_6859677",22,34,"",1430954],["7077693","mediasource_7077693",22,38,"",1415765],["7077694","mediasource_7077694",22,39,"",1415872],["7082043","mediasource_7082043",22,40,"",1415872],["7094959","mediasource_7094959",22,41,"",1415872],["7103669","mediasource_7103669",22,42,"",1415872],["7112188","mediasource_7112188",22,43,"",1385813],["7127803","mediasource_7127803",22,44,"",1415872],["7137661","mediasource_7137661",22,45,"",1415872],["7159978","mediasource_7159978",22,47,"",1415936],["7195934","mediasource_7195934",22,49,"",1415872],["7202642","mediasource_7202642",22,50,"",1415936],["7211349","mediasource_7211349",22,51,"",1415872],["7225736","mediasource_7225736",22,52,"",1415652],["7258977","mediasource_7258977",22,53,"",1415865],["7258976","mediasource_7258976",22,54,"",1415850],["7268207","mediasource_7268207",22,55,"",1415829],["7271096","mediasource_7271096",22,56,"",1385770],["7302042","mediasource_7302042",22,57,"",1415829],["7309627","mediasource_7309627",22,58,"",1415829],["7317878","mediasource_7317878",22,59,"",1415829],["7322865","mediasource_7322865",22,60,"",1385770],["7384590","mediasource_7384590",22,61,"",1415893],["7395606","mediasource_7395606",22,62,"",1415829],["7401872","mediasource_7401872",22,63,"",1415829],["7407746","mediasource_7407746",22,64,"",1415893],["7415474","mediasource_7415474",22,65,"",1385770],["7432342","mediasource_7432342",22,66,"",1415829],["7439943","mediasource_7439943",22,67,"",1415850],["7451322","mediasource_7451322",22,68,"",1415893],["7461782","mediasource_7461782",22,69,"",1415829],["7492450","mediasource_7492450",22,70,"",1385770],["7799883","mediasource_7799883",23,1,"",1415573],["7808488","mediasource_7808488",23,2,"",1415808],["7830248","mediasource_7830248",23,3,"",1415808],["7835555","mediasource_7835555",23,4,"",1415765],["7840969","mediasource_7840969",23,5,"",1415829],["7847565","mediasource_7847565",23,6,"",1415829],["7880857","mediasource_7880857",23,7,"",1415829],["7886377","mediasource_7886377",23,8,"",1415722],["7893713","mediasource_7893713",23,9,"",1415829],["7899356","mediasource_7899356",23,10,"",1415829],["7905288","mediasource_7905288",23,11,"",1415829],["7909730","mediasource_7909730",23,12,"",1415748],["7916018","mediasource_7916018",23,13,"",1385676],["7927879","mediasource_7927879",23,14,"",1415665],["7933499","mediasource_7933499",23,15,"",1415707],["7937800","mediasource_7937800",23,16,"",1415706],["7946064","mediasource_7946064",23,17,"",1415665],["7952343","mediasource_7952343",23,18,"",1415790],["7958647","mediasource_7958647",23,19,"",1415707],["7964973","mediasource_7964973",23,20,"",1415707],["7970648","mediasource_7970648",23,21,"",1415748],["7979219","mediasource_7979219",23,22,"",1415707],["7986071","mediasource_7986071",23,23,"",1415707],["7993898","mediasource_7993898",23,24,"",1415707],["7999926","mediasource_7999926",23,25,"",1415623]]},{"id":"4843207","type":"Movie","title":"Eden of the East Movie II: Paradise Lost","year":2010,"rating":"Not Rated","genres":["Animation","Mystery","Science Fiction"],"episodes":[["4843207","mediasource_4843207",0,1,"",5528566]]},{"id":"4843227","type":"Movie","title":"Neo Tokyo","year":1989,"rating":"","genres":["Science Fiction","Animation","Adventure","Fantasy"],"episodes":[["4843227","mediasource_4843227",0,1,"",2981205]]},{"id":"5604346","type":"Movie","title":"Cardcaptor Sakura: The Movie","year":1999,"rating":"Not Rated","genres":["Fantasy","Animation","Adventure"],"episodes":[["5604346","mediasource_5604346",0,1,"",4892022]]},{"id":"5619135","type":"Movie","title":"Eden of the East Movie I: The King of Eden","year":2009,"rating":"Not Rated","genres":["Animation","Drama","Mystery","Science Fiction"],"episodes":[["5619135","mediasource_5619135",0,1,"",4881919]]},{"id":"5665793","type":"Movie","title":"Lady Death","year":2004,"rating":"NR","genres":["Fantasy","Animation","Horror","Action","Science Fiction"],"episodes":[["5665793","mediasource_5665793",0,1,"",4581045]]},{"id":"5666995","type":"Movie","title":"Street Fighter II: The Animated Movie","year":1994,"rating":"PG-13","genres":["Animation","Action"],"episodes":[["5666995","mediasource_5666995",0,1,"",6087040]]},{"id":"5689329","type":"Movie","title":"One Piece Film: Strong World","year":2009,"rating":"PG-13","genres":["Animation","Fantasy","Adventure"],"episodes":[["5689329","mediasource_5689329",0,1,"",6938944]]},{"id":"5689516","type":"Movie","title":"Afro Samurai: Resurrection","year":2009,"rating":"NR","genres":["Animation","Action","Adventure","Drama","Fantasy","Science Fiction"],"episodes":[["5689516","mediasource_5689516",0,1,"",6032630]]},{"id":"5844697","type":"Movie","title":"Dragon Ball Z: Broly - Second Coming","year":1994,"rating":"NR","genres":["Animation","Action","Science Fiction"],"episodes":[["5844697","mediasource_5844697",0,1,"",3128542]]},{"id":"5844728","type":"Movie","title":"Fatal Fury: The Motion Picture","year":1994,"rating":"TV-PG","genres":["Action","Animation","Fantasy"],"episodes":[["5844728","mediasource_5844728",0,1,"",5990445]]},{"id":"5844752","type":"Movie","title":"Dragon Ball Z: Wrath of the Dragon","year":1995,"rating":"PG","genres":["Animation","Action","Science Fiction"],"episodes":[["5844752","mediasource_5844752",0,1,"",3107616]]},{"id":"5844769","type":"Movie","title":"The Fantastic Adventures of Unico","year":1981,"rating":"Not Rated","genres":["Animation","Fantasy","Family"],"episodes":[["5844769","mediasource_5844769",0,1,"",5397392]]},{"id":"6035221","type":"Movie","title":"Jin-Roh: The Wolf Brigade","year":1999,"rating":"R","genres":["Animation","Thriller","Science Fiction"],"episodes":[["6035221","mediasource_6035221",0,1,"",6119115]]},{"id":"6070272","type":"Movie","title":"Tokyo Gore Police","year":2008,"rating":"NR","genres":["Horror","Action","Science Fiction"],"episodes":[["6070272","mediasource_6070272",0,1,"",6535366]]},{"id":"6562282","type":"Series","title":"Naruto","year":2002,"rating":"TV-PG","genres":["Fantasy","Comedy","Animation","Adventure","Action","Anime"],"episodes":[["6562430","mediasource_6562430",1,1,"",1416192],["6562452","mediasource_6562452",1,2,"",1412779],["6562447","mediasource_6562447",1,3,"",1420416],["6562440","mediasource_6562440",1,4,"",1417430],["6562442","mediasource_6562442",1,5,"",1417003],["6562428","mediasource_6562428",1,6,"",1416875],["6562437","mediasource_6562437",1,7,"",1417728],["6562438","mediasource_6562438",1,8,"",1417472],["6562425","mediasource_6562425",1,9,"",1417088],["6562453","mediasource_6562453",1,10,"",1415766],["6562435","mediasource_6562435",1,11,"",1417771],["6562441","mediasource_6562441",1,12,"",1416790],["6562449","mediasource_6562449",1,13,"",1419392],["6562443","mediasource_6562443",1,14,"",1433046],["6562450","mediasource_6562450",1,15,"",1429376],["6562439","mediasource_6562439",1,16,"",1430486],["6562436","mediasource_6562436",1,17,"",1435392],["6562431","mediasource_6562431",1,18,"",1435435],["6562458","mediasource_6562458",1,19,"",1435392],["6562429","mediasource_6562429",1,20,"",1435435],["6562455","mediasource_6562455",1,21,"",1435350],["6562434","mediasource_6562434",1,22,"",1435435],["6562459","mediasource_6562459",1,23,"",1435350],["6562426","mediasource_6562426",1,24,"",1435478],["6562456","mediasource_6562456",1,25,"",1435350],["6562457","mediasource_6562457",1,26,"",1586774],["6562427","mediasource_6562427",1,27,"",1427456],["6562445","mediasource_6562445",1,28,"",1424427],["6562446","mediasource_6562446",1,29,"",1420459],["6562448","mediasource_6562448",1,30,"",1420416],["6562451","mediasource_6562451",1,31,"",1420800],["6562454","mediasource_6562454",1,32,"",1420715],["6562432","mediasource_6562432",1,33,"",1425792],["6562433","mediasource_6562433",1,34,"",1425707],["6562444","mediasource_6562444",1,35,"",1425494],["6562481","mediasource_6562481",2,1,"",1420544],["6562482","mediasource_6562482",2,2,"",1418454],["6562494","mediasource_6562494",2,3,"",1425451],["6562464","mediasource_6562464",2,4,"",1425494],["6562471","mediasource_6562471",2,5,"",1425408],["6562467","mediasource_6562467",2,6,"",1425494],["6562503","mediasource_6562503",2,7,"",1425451],["6562465","mediasource_6562465",2,8,"",1425878],["6562484","mediasource_6562484",2,9,"",1425494],["6562495","mediasource_6562495",2,10,"",1425451],["6562480","mediasource_6562480",2,11,"",1425494],["6562485","mediasource_6562485",2,12,"",1425408],["6562473","mediasource_6562473",2,13,"",1425451],["6562500","mediasource_6562500",2,14,"",1425067],["6562507","mediasource_6562507",2,15,"",1425664],["6562474","mediasource_6562474",2,16,"",1421483],["6562468","mediasource_6562468",2,17,"",1422080],["6562486","mediasource_6562486",2,18,"",1419819],["6562469","mediasource_6562469",2,19,"",1420715],["6562460","mediasource_6562460",2,20,"",1420715],["6562488","mediasource_6562488",2,21,"",1420715],["6562497","mediasource_6562497",2,22,"",1415766],["6562491","mediasource_6562491",2,23,"",1416278],["6562483","mediasource_6562483",2,24,"",1414656],["6562492","mediasource_6562492",2,25,"",1416064],["6562506","mediasource_6562506",2,26,"",1415766],["6562470","mediasource_6562470",2,27,"",1416107],["6562498","mediasource_6562498",2,28,"",1415894],["6562472","mediasource_6562472",2,29,"",1415723],["6562499","mediasource_6562499",2,30,"",1421440],["6562502","mediasource_6562502",2,31,"",1420587],["6562461","mediasource_6562461",2,32,"",1420672],["6562478","mediasource_6562478",2,33,"",1421142],["6562475","mediasource_6562475",2,34,"",1419136],["6562476","mediasource_6562476",2,35,"",1419691],["6562462","mediasource_6562462",2,36,"",1419648],["6562493","mediasource_6562493",2,37,"",1367533],["6562489","mediasource_6562489",2,38,"",1418539],["6562466","mediasource_6562466",2,39,"",1418667],["6562487","mediasource_6562487",2,40,"",1418667],["6562463","mediasource_6562463",2,41,"",1418240],["6562479","mediasource_6562479",2,42,"",1418454],["6562496","mediasource_6562496",2,43,"",1418539],["6562504","mediasource_6562504",2,44,"",1418795],["6562490","mediasource_6562490",2,45,"",1418752],["6562477","mediasource_6562477",2,46,"",1417942],["6562501","mediasource_6562501",2,47,"",1418368],["6562505","mediasource_6562505",2,48,"",1417771],["6562393","mediasource_6562393",3,1,"",1417686],["6562420","mediasource_6562420",3,2,"",1418155],["6562405","mediasource_6562405",3,3,"",1418368],["6562406","mediasource_6562406",3,4,"",1419819],["6562401","mediasource_6562401",3,5,"",1419264],["6562383","mediasource_6562383",3,6,"",1418454],["6562418","mediasource_6562418",3,7,"",1418752],["6562394","mediasource_6562394",3,8,"",1418838],["6562404","mediasource_6562404",3,9,"",1419094],["6562390","mediasource_6562390",3,10,"",1419734],["6562397","mediasource_6562397",3,11,"",1419136],["6562414","mediasource_6562414",3,12,"",1419478],["6562379","mediasource_6562379",3,13,"",1419776],["6562408","mediasource_6562408",3,14,"",1419350],["6562424","mediasource_6562424",3,15,"",1420331],["6562388","mediasource_6562388",3,16,"",1419606],["6562398","mediasource_6562398",3,17,"",1420246],["6562415","mediasource_6562415",3,18,"",1419691],["6562416","mediasource_6562416",3,19,"",1420118],["6562392","mediasource_6562392",3,20,"",1420118],["6562391","mediasource_6562391",3,21,"",1419691],["6562409","mediasource_6562409",3,22,"",1413760],["6562421","mediasource_6562421",3,23,"",1415638],["6562395","mediasource_6562395",3,24,"",1419307],["6562407","mediasource_6562407",3,25,"",1413718],["6562396","mediasource_6562396",3,26,"",1414272],["6562384","mediasource_6562384",3,27,"",1413760],["6562385","mediasource_6562385",3,28,"",1414272],["6562380","mediasource_6562380",3,29,"",1413760],["6562377","mediasource_6562377",3,30,"",1414358],["6562399","mediasource_6562399",3,31,"",1414102],["6562422","mediasource_6562422",3,32,"",1414315],["6562419","mediasource_6562419",3,33,"",1415083],["6562411","mediasource_6562411",3,34,"",1415211],["6562389","mediasource_6562389",3,35,"",1413760],["6562381","mediasource_6562381",3,36,"",1413803],["6562402","mediasource_6562402",3,37,"",1416576],["6562423","mediasource_6562423",3,38,"",1414443],["6562400","mediasource_6562400",3,39,"",1413760],["6562386","mediasource_6562386",3,40,"",1414230],["6562378","mediasource_6562378",3,41,"",1414102],["6562387","mediasource_6562387",3,42,"",1414400],["6562413","mediasource_6562413",3,43,"",1414315],["6562412","mediasource_6562412",3,44,"",1414486],["6562417","mediasource_6562417",3,45,"",1414400],["6562403","mediasource_6562403",3,46,"",1414059],["6562382","mediasource_6562382",3,47,"",1414400],["6562410","mediasource_6562410",3,48,"",1413547],["6562365","mediasource_6562365",4,1,"",1414443],["6562366","mediasource_6562366",4,2,"",1412608],["6562352","mediasource_6562352",4,3,"",1413206],["6562357","mediasource_6562357",4,4,"",1414443],["6562367","mediasource_6562367",4,5,"",1414144],["6562332","mediasource_6562332",4,6,"",1413931],["6562370","mediasource_6562370",4,7,"",1414144],["6562355","mediasource_6562355",4,8,"",1413718],["6562349","mediasource_6562349",4,9,"",1414656],["6562362","mediasource_6562362",4,10,"",1414400],["6562344","mediasource_6562344",4,11,"",1414614],["6562337","mediasource_6562337",4,12,"",1413718],["6562354","mediasource_6562354",4,13,"",1414443],["6562340","mediasource_6562340",4,14,"",1414187],["6562341","mediasource_6562341",4,15,"",1414486],["6562353","mediasource_6562353",4,16,"",1413718],["6562375","mediasource_6562375",4,17,"",1414443],["6562359","mediasource_6562359",4,18,"",1414400],["6562346","mediasource_6562346",4,19,"",1414528],["6562333","mediasource_6562333",4,20,"",1419222],["6562356","mediasource_6562356",4,21,"",1418923],["6562348","mediasource_6562348",4,22,"",1418459],["6562329","mediasource_6562329",4,23,"",1419051],["6562369","mediasource_6562369",4,24,"",1418923],["6562361","mediasource_6562361",4,25,"",1419094],["6562364","mediasource_6562364",4,26,"",1414102],["6562347","mediasource_6562347",4,27,"",1414330],["6562338","mediasource_6562338",4,28,"",1414443],["6562336","mediasource_6562336",4,29,"",1414102],["6562360","mediasource_6562360",4,30,"",1414400],["6562350","mediasource_6562350",4,31,"",1418710],["6562339","mediasource_6562339",4,32,"",1413746],["6562372","mediasource_6562372",4,33,"",1414656],["6562368","mediasource_6562368",4,34,"",1413974],["6562331","mediasource_6562331",4,35,"",1414443],["6562373","mediasource_6562373",4,36,"",1414246],["6562342","mediasource_6562342",4,37,"",1414528],["6562334","mediasource_6562334",4,38,"",1414400],["6562358","mediasource_6562358",4,39,"",1414102],["6870167","mediasource_6870167",4,40,"",1414400],["6562343","mediasource_6562343",4,41,"",1414059],["6562335","mediasource_6562335",4,42,"",1414400],["6562363","mediasource_6562363",4,43,"",1414443],["6562371","mediasource_6562371",4,44,"",1414571],["6562376","mediasource_6562376",4,45,"",1414443],["6562351","mediasource_6562351",4,46,"",1414272],["6562330","mediasource_6562330",4,47,"",1414443],["6562345","mediasource_6562345",4,48,"",1414272],["6562328","mediasource_6562328",5,1,"",1414315],["6562292","mediasource_6562292",5,2,"",1414080],["6562312","mediasource_6562312",5,3,"",1414443],["6562310","mediasource_6562310",5,4,"",1414272],["6562313","mediasource_6562313",5,5,"",1414315],["6562297","mediasource_6562297",5,6,"",1414230],["6562321","mediasource_6562321",5,7,"",1413537],["6562318","mediasource_6562318",5,8,"",1413888],["6562319","mediasource_6562319",5,9,"",1415040],["6562290","mediasource_6562290",5,10,"",1412950],["6562323","mediasource_6562323",5,11,"",1414059],["6562306","mediasource_6562306",5,12,"",1413590],["6562317","mediasource_6562317",5,13,"",1414443],["6562325","mediasource_6562325",5,14,"",1414400],["6562291","mediasource_6562291",5,15,"",1414144],["6562324","mediasource_6562324",5,16,"",1414246],["6562309","mediasource_6562309",5,17,"",1414656],["6562304","mediasource_6562304",5,18,"",1414230],["6562322","mediasource_6562322",5,19,"",1414315],["6562301","mediasource_6562301",5,20,"",1414230],["6562308","mediasource_6562308",5,21,"",1414163],["6562293","mediasource_6562293",5,22,"",1419990],["6562326","mediasource_6562326",5,23,"",1413462],["6562315","mediasource_6562315",5,24,"",1414102],["6562327","mediasource_6562327",5,25,"",1414102],["6562294","mediasource_6562294",5,26,"",1414080],["6562289","mediasource_6562289",5,27,"",1414827],["6562303","mediasource_6562303",5,28,"",1414400],["6562311","mediasource_6562311",5,29,"",1414315],["6562288","mediasource_6562288",5,30,"",1414230],["6562314","mediasource_6562314",5,31,"",1414330],["6562298","mediasource_6562298",5,32,"",1414059],["6562316","mediasource_6562316",5,33,"",1414443],["6562307","mediasource_6562307",5,34,"",1414400],["6562305","mediasource_6562305",5,35,"",1414102],["6562299","mediasource_6562299",5,36,"",1414288],["6562295","mediasource_6562295",5,37,"",1414272],["6562296","mediasource_6562296",5,38,"",1414187],["6562300","mediasource_6562300",5,39,"",1414144],["6562302","mediasource_6562302",5,40,"",1414059],["6562320","mediasource_6562320",5,41,"",1414016]]},{"id":"6591781","type":"Movie","title":"Hells","year":2008,"rating":"","genres":["Action","Animation","Comedy","Fantasy"],"episodes":[["6591781","mediasource_6591781",0,1,"",7168992]]},{"id":"6621748","type":"Movie","title":"One Piece: The Desert Princess and the Pirates: Adventure in Alabasta","year":2007,"rating":"PG-13","genres":["Action","Adventure","Animation","Comedy","Fantasy"],"episodes":[["6621748","mediasource_6621748",0,1,"",5397397]]},{"id":"6738348","type":"Movie","title":"Gundam Wing: The Endless Waltz","year":1998,"rating":"","genres":["Drama","Animation","Science Fiction"],"episodes":[["6738348","mediasource_6738348",0,1,"",5656401]]},{"id":"6848217","type":"Movie","title":"Goku: Midnight Eye","year":1989,"rating":"TV-MA","genres":["Animation","Action","Thriller"],"episodes":[["6848217","mediasource_6848217",0,1,"",3006144]]},{"id":"6932829","type":"Movie","title":"Hansel & Gretel","year":2007,"rating":"TV-14","genres":["Fantasy","Drama","Horror"],"episodes":[["6932829","mediasource_6932829",0,1,"",7019936]]},{"id":"6958054","type":"Movie","title":"Little Nemo: Adventures in Slumberland","year":1989,"rating":"G","genres":["Adventure","Animation","Family","Fantasy"],"episodes":[["6958054","mediasource_6958054",0,1,"",5696064]]},{"id":"7006820","type":"Movie","title":"Night on the Galactic Railroad","year":1985,"rating":"Unrated","genres":["Adventure","Animation","Drama","Family","Mystery","Fantasy"],"episodes":[["7006820","mediasource_7006820",0,1,"",6473472]]},{"id":"7042022","type":"Movie","title":"Fullmetal Alchemist the Movie: Conqueror of Shamballa","year":2005,"rating":"PG-13","genres":["Action","Adventure","Animation","Drama"],"episodes":[["7042022","mediasource_7042022",0,1,"",6300409]]},{"id":"7180339","type":"Movie","title":"The Snow Woman","year":1968,"rating":"","genres":["Horror","Fantasy","Romance"],"episodes":[["7180339","mediasource_7180339",0,1,"",4756511]]},{"id":"7188347","type":"Movie","title":"Urusei Yatsura: Always My Darling","year":1991,"rating":"","genres":["Action","Adventure","Animation","Comedy","Romance","Family"],"episodes":[["7188347","mediasource_7188347",0,1,"",4653653]]},{"id":"7208483","type":"Movie","title":"City Hunter: .357 Magnum","year":1989,"rating":"","genres":["Animation","Action","Crime","Comedy"],"episodes":[["7208483","mediasource_7208483",0,1,"",5319775]]},{"id":"7208484","type":"Movie","title":"City Hunter: Million Dollar Conspiracy","year":1990,"rating":"","genres":["Action","Animation","Comedy","Thriller"],"episodes":[["7208484","mediasource_7208484",0,1,"",2904902]]},{"id":"7208485","type":"Movie","title":"City Hunter: Bay City Wars","year":1990,"rating":"TV-MA","genres":["Action","Comedy","Animation","Thriller","Crime"],"episodes":[["7208485","mediasource_7208485",0,1,"",2627625]]},{"id":"7208486","type":"Movie","title":"City Hunter Special: Goodbye My Sweetheart","year":1997,"rating":"Unrated","genres":["Action","Animation","Comedy","Crime"],"episodes":[["7208486","mediasource_7208486",0,1,"",5460608]]},{"id":"7227613","type":"Movie","title":"The Garden of Sinners: The Hollow Shrine","year":2008,"rating":"","genres":["Animation","Fantasy","Action","Mystery"],"episodes":[["7227613","mediasource_7227613",0,1,"",2721761]]},{"id":"7237068","type":"Movie","title":"The Machine Girl","year":2008,"rating":"Not Rated","genres":["Action","Adventure","Comedy","Crime","Horror","Thriller"],"episodes":[["7237068","mediasource_7237068",0,1,"",5807243]]},{"id":"7237542","type":"Movie","title":"Sword of the Stranger","year":2007,"rating":"PG","genres":["Action","Animation","History"],"episodes":[["7237542","mediasource_7237542",0,1,"",6214549]]},{"id":"7316001","type":"Movie","title":"Galaxy Express 999: The Movie","year":1979,"rating":"PG","genres":["Adventure","Animation","Science Fiction"],"episodes":[["7316001","mediasource_7316001",0,1,"",7875744]]},{"id":"7346927","type":"Series","title":"Cardcaptor Sakura","year":1998,"rating":"TV-PG","genres":["Action","Adventure","Animation","Anime","Children","Comedy","Drama","Family"],"episodes":[["7361430","mediasource_7361430",1,1,"",1500507],["7361428","mediasource_7361428",1,2,"",1500507],["7361429","mediasource_7361429",1,3,"",1501177],["7361427","mediasource_7361427",1,4,"",1500507],["7361426","mediasource_7361426",1,5,"",1501967],["7361425","mediasource_7361425",1,6,"",1502012],["7361424","mediasource_7361424",1,7,"",1502047],["7361423","mediasource_7361423",1,8,"",1502052],["7361422","mediasource_7361422",1,9,"",1500882],["7361421","mediasource_7361421",1,10,"",1502052],["7361420","mediasource_7361420",1,11,"",1501887],["7361417","mediasource_7361417",1,12,"",1501967],["7361418","mediasource_7361418",1,13,"",1501967],["7361419","mediasource_7361419",1,14,"",1501967],["7361416","mediasource_7361416",1,15,"",1501967],["7361415","mediasource_7361415",1,16,"",1502052],["7361414","mediasource_7361414",1,17,"",1502012],["7361412","mediasource_7361412",1,18,"",1502052],["7361410","mediasource_7361410",1,19,"",1502052],["7361411","mediasource_7361411",1,20,"",1500802],["7361413","mediasource_7361413",1,21,"",1500882],["7361409","mediasource_7361409",1,22,"",1501507],["7361408","mediasource_7361408",1,23,"",1501802],["7361407","mediasource_7361407",1,24,"",1502137],["7361406","mediasource_7361406",1,25,"",1502052],["7361404","mediasource_7361404",1,26,"",1502092],["7361402","mediasource_7361402",1,27,"",1502052],["7361405","mediasource_7361405",1,28,"",1502092],["7361403","mediasource_7361403",1,29,"",1502052],["7361401","mediasource_7361401",1,30,"",1502012],["7361400","mediasource_7361400",1,31,"",1502012],["7361399","mediasource_7361399",1,32,"",1502052],["7361397","mediasource_7361397",1,33,"",1502052],["7361398","mediasource_7361398",1,34,"",1502052],["7361396","mediasource_7361396",1,35,"",1501967],["7747808","mediasource_7747808",2,1,"",1501121],["7747807","mediasource_7747807",2,2,"",1500633],["7747806","mediasource_7747806",2,3,"",1501028],["7747805","mediasource_7747805",2,4,"",1501077],["7747804","mediasource_7747804",2,5,"",1501121],["7747803","mediasource_7747803",2,6,"",1501144],["7747802","mediasource_7747802",2,7,"",1501121],["7747801","mediasource_7747801",2,8,"",1501123],["7747800","mediasource_7747800",2,9,"",1501075],["7747799","mediasource_7747799",2,10,"",1501144],["7747798","mediasource_7747798",2,11,"",1537228],["7747781","mediasource_7747781",3,1,"",1500045],["7747780","mediasource_7747780",3,2,"",1500000],["7747779","mediasource_7747779",3,3,"",1500000],["7747778","mediasource_7747778",3,4,"",1500045],["7747775","mediasource_7747775",3,5,"",1500000],["7747785","mediasource_7747785",3,6,"",1500045],["7747777","mediasource_7747777",3,7,"",1500000],["7747776","mediasource_7747776",3,8,"",1500000],["7747774","mediasource_7747774",3,9,"",1500045],["7747768","mediasource_7747768",3,10,"",1500000],["7747761","mediasource_7747761",3,11,"",1500000],["7747770","mediasource_7747770",3,12,"",1500045],["7747771","mediasource_7747771",3,13,"",1500045],["7747764","mediasource_7747764",3,14,"",1500045],["7747769","mediasource_7747769",3,15,"",1500045],["7747765","mediasource_7747765",3,16,"",1500045],["7747784","mediasource_7747784",3,17,"",1500000],["7747772","mediasource_7747772",3,18,"",1500000],["7747766","mediasource_7747766",3,19,"",1500045],["7747767","mediasource_7747767",3,20,"",1500045],["7747773","mediasource_7747773",3,21,"",1500000],["7747783","mediasource_7747783",3,22,"",1500045],["7747762","mediasource_7747762",3,23,"",1500000],["7747763","mediasource_7747763",3,24,"",1500040],["7747831","mediasource_7747831",4,1,"",1515914],["7747830","mediasource_7747830",4,2,"",1515480],["7747829","mediasource_7747829",4,3,"",1515547],["7747820","mediasource_7747820",4,4,"",1515781],["7747823","mediasource_7747823",4,5,"",1515814],["7747826","mediasource_7747826",4,6,"",1517482],["7747825","mediasource_7747825",4,7,"",1515981],["7747816","mediasource_7747816",4,8,"",1516181],["7747817","mediasource_7747817",4,9,"",1515781],["7747824","mediasource_7747824",4,10,"",1515914],["7747821","mediasource_7747821",4,11,"",1488019],["7747819","mediasource_7747819",4,12,"",1499680],["7747828","mediasource_7747828",4,13,"",1499680],["7747827","mediasource_7747827",4,14,"",1499680],["7747818","mediasource_7747818",4,15,"",1499680],["7747822","mediasource_7747822",4,16,"",1499680],["7747813","mediasource_7747813",4,17,"",1499680],["7747814","mediasource_7747814",4,18,"",1499680],["7747815","mediasource_7747815",4,19,"",1499680],["7747811","mediasource_7747811",4,20,"",1499680],["7747810","mediasource_7747810",4,21,"",1499680],["7747812","mediasource_7747812",4,22,"",1499680]]},{"id":"7347249","type":"Series","title":"Dragon Ball","year":1986,"rating":"TV-14","genres":["Action","Adventure","Animation","Anime","Children","Fantasy","Science Fiction","Thriller"],"episodes":[["7379321","mediasource_7379321",1,1,"",1452464],["7379320","mediasource_7379320",1,2,"",1452464],["7379319","mediasource_7379319",1,3,"",1452453],["7379318","mediasource_7379318",1,4,"",1452464],["7379317","mediasource_7379317",1,5,"",1452453],["7379316","mediasource_7379316",1,6,"",1452456],["7379315","mediasource_7379315",1,7,"",1452274],["7379314","mediasource_7379314",1,8,"",1452453],["7379313","mediasource_7379313",1,9,"",1452453],["7379312","mediasource_7379312",1,10,"",1452469],["7379311","mediasource_7379311",1,11,"",1452453],["7379309","mediasource_7379309",1,12,"",1452456],["7379310","mediasource_7379310",1,13,"",1452469],["7379308","mediasource_7379308",2,1,"",1452261],["7379307","mediasource_7379307",2,2,"",1452466],["7379306","mediasource_7379306",2,3,"",1452461],["7379305","mediasource_7379305",2,4,"",1452466],["7379304","mediasource_7379304",2,5,"",1452469],["7379303","mediasource_7379303",2,6,"",1452464],["7379302","mediasource_7379302",2,7,"",1452456],["7379301","mediasource_7379301",2,8,"",1452272],["7379300","mediasource_7379300",2,9,"",1452469],["7379299","mediasource_7379299",2,10,"",1452469],["7379298","mediasource_7379298",2,11,"",1452469],["7379297","mediasource_7379297",2,12,"",1452461],["7379296","mediasource_7379296",2,13,"",1452453],["7379295","mediasource_7379295",2,14,"",1452461],["7379294","mediasource_7379294",2,15,"",1452264],["7379293","mediasource_7379293",3,1,"",1452453],["7379292","mediasource_7379292",3,2,"",1452458],["7379291","mediasource_7379291",3,3,"",1452277],["7379290","mediasource_7379290",3,4,"",1452458],["7379289","mediasource_7379289",3,5,"",1452450],["7379288","mediasource_7379288",3,6,"",1452461],["7379287","mediasource_7379287",3,7,"",1452466],["7379286","mediasource_7379286",3,8,"",1452464],["7379285","mediasource_7379285",3,9,"",1452466],["7379284","mediasource_7379284",3,10,"",1452274],["7379283","mediasource_7379283",3,11,"",1452469],["7379282","mediasource_7379282",3,12,"",1452466],["7379281","mediasource_7379281",3,13,"",1452453],["7379280","mediasource_7379280",3,14,"",1452466],["7379279","mediasource_7379279",3,15,"",1452469],["7379278","mediasource_7379278",3,16,"",1452466],["7379277","mediasource_7379277",3,17,"",1452277],["7379276","mediasource_7379276",3,18,"",1452469],["7379275","mediasource_7379275",3,19,"",1452461],["7379274","mediasource_7379274",3,20,"",1452469],["7379273","mediasource_7379273",3,21,"",1452456],["7379272","mediasource_7379272",3,22,"",1452464],["7379271","mediasource_7379271",3,23,"",1452464],["7379270","mediasource_7379270",3,24,"",1452277],["7379268","mediasource_7379268",3,25,"",1452469],["7379269","mediasource_7379269",3,26,"",1452469],["7379267","mediasource_7379267",3,27,"",1452466],["7379266","mediasource_7379266",3,28,"",1452461],["7379265","mediasource_7379265",3,29,"",1452469],["7379264","mediasource_7379264",3,30,"",1452269],["7379263","mediasource_7379263",3,31,"",1452456],["7379262","mediasource_7379262",3,32,"",1452469],["7379261","mediasource_7379261",3,33,"",1452258],["7379260","mediasource_7379260",3,34,"",1452461],["7379259","mediasource_7379259",3,35,"",1452464],["7379258","mediasource_7379258",3,36,"",1452461],["7379257","mediasource_7379257",3,37,"",1452464],["7379256","mediasource_7379256",3,38,"",1452458],["7379255","mediasource_7379255",3,39,"",1452461],["7379254","mediasource_7379254",3,40,"",1452269],["7379253","mediasource_7379253",4,1,"",1452464],["7379252","mediasource_7379252",4,2,"",1452461],["7379251","mediasource_7379251",4,3,"",1452461],["7379250","mediasource_7379250",4,4,"",1452461],["7379249","mediasource_7379249",4,5,"",1452466],["7379248","mediasource_7379248",4,6,"",1452458],["7379247","mediasource_7379247",4,7,"",1452274],["7379246","mediasource_7379246",4,8,"",1452456],["7379245","mediasource_7379245",4,9,"",1452469],["7379244","mediasource_7379244",4,10,"",1452456],["7379243","mediasource_7379243",4,11,"",1452458],["7379242","mediasource_7379242",4,12,"",1452469],["7379241","mediasource_7379241",4,13,"",1452469],["7379240","mediasource_7379240",4,14,"",1452272],["7379239","mediasource_7379239",4,15,"",1452458],["7379238","mediasource_7379238",4,16,"",1452469],["7379237","mediasource_7379237",4,17,"",1452450],["7379236","mediasource_7379236",4,18,"",1452464],["7379235","mediasource_7379235",4,19,"",1452461],["7379234","mediasource_7379234",4,20,"",1452464],["7379233","mediasource_7379233",4,21,"",1452261],["7379232","mediasource_7379232",4,22,"",1452461],["7379231","mediasource_7379231",4,23,"",1452466],["7379230","mediasource_7379230",4,24,"",1452269],["7379229","mediasource_7379229",4,25,"",1452461],["7379228","mediasource_7379228",4,26,"",1452437],["7379227","mediasource_7379227",4,27,"",1452418],["7379226","mediasource_7379226",4,28,"",1452437],["7379225","mediasource_7379225",4,29,"",1452437],["7379224","mediasource_7379224",4,30,"",1452437],["7379223","mediasource_7379223",4,31,"",1452410],["7379222","mediasource_7379222",4,32,"",1452461],["7379221","mediasource_7379221",4,33,"",1452451],["7379220","mediasource_7379220",5,1,"",1452451],["7379219","mediasource_7379219",5,2,"",1452451],["7379218","mediasource_7379218",5,3,"",1452451],["7379217","mediasource_7379217",5,4,"",1452451],["7379216","mediasource_7379216",5,5,"",1452451],["7379215","mediasource_7379215",5,6,"",1452469],["7379214","mediasource_7379214",5,7,"",1452464],["7379213","mediasource_7379213",5,8,"",1452461],["7379212","mediasource_7379212",5,9,"",1452461],["7379211","mediasource_7379211",5,10,"",1452461],["7379210","mediasource_7379210",5,11,"",1452464],["7379208","mediasource_7379208",5,12,"",1452451],["7379209","mediasource_7379209",5,13,"",1452458],["7379207","mediasource_7379207",5,14,"",1452451],["7379206","mediasource_7379206",5,15,"",1452451],["7379205","mediasource_7379205",5,16,"",1452451],["7379204","mediasource_7379204",5,17,"",1452451],["7379203","mediasource_7379203",5,18,"",1452451],["7379202","mediasource_7379202",5,19,"",1452451],["7379200","mediasource_7379200",5,20,"",1452461],["7379201","mediasource_7379201",5,21,"",1452451],["7379199","mediasource_7379199",5,22,"",1452434],["7379198","mediasource_7379198",5,23,"",1452434],["7379197","mediasource_7379197",5,24,"",1452434],["7379196","mediasource_7379196",5,25,"",1452434],["7379195","mediasource_7379195",5,26,"",1452429],["7379194","mediasource_7379194",5,27,"",1452437],["7379193","mediasource_7379193",5,28,"",1452410],["7379192","mediasource_7379192",5,29,"",1452437],["7379191","mediasource_7379191",5,30,"",1452434],["7379190","mediasource_7379190",5,31,"",1452437],["7379189","mediasource_7379189",6,1,"",1452437],["7379188","mediasource_7379188",6,2,"",1452437],["7379187","mediasource_7379187",6,3,"",1452432],["7379186","mediasource_7379186",6,4,"",1452410],["7379185","mediasource_7379185",6,5,"",1452432],["7379184","mediasource_7379184",6,6,"",1452432],["7379183","mediasource_7379183",6,7,"",1452429],["7379182","mediasource_7379182",6,8,"",1452437],["7379181","mediasource_7379181",6,9,"",1452424],["7379180","mediasource_7379180",6,10,"",1452424],["7379179","mediasource_7379179",6,11,"",1452410],["7379178","mediasource_7379178",6,12,"",1452434],["7379177","mediasource_7379177",6,13,"",1452437],["7379176","mediasource_7379176",6,14,"",1452426],["7379175","mediasource_7379175",6,15,"",1452418],["7379174","mediasource_7379174",6,16,"",1452424],["7379173","mediasource_7379173",6,17,"",1452437],["7379172","mediasource_7379172",6,18,"",1452410],["7379171","mediasource_7379171",6,19,"",1452424],["7379170","mediasource_7379170",6,20,"",1452437],["7379169","mediasource_7379169",6,21,"",1452410]]},{"id":"7420914","type":"Movie","title":"Dragon Ball Z: Cooler's Revenge","year":1991,"rating":"PG","genres":["Action","Animation","Science Fiction"],"episodes":[["7420914","mediasource_7420914",0,1,"",2829192]]},{"id":"7420915","type":"Movie","title":"Dragon Ball Z: Bio-Broly","year":1994,"rating":"PG","genres":["Animation","Action","Science Fiction"],"episodes":[["7420915","mediasource_7420915",0,1,"",2806151]]},{"id":"7451041","type":"Movie","title":"The Disappearance of Haruhi Suzumiya","year":2010,"rating":"PG-13","genres":["Animation","Comedy","Science Fiction","Mystery","Drama"],"episodes":[["7451041","mediasource_7451041",0,1,"",9779540]]},{"id":"7742085","type":"Movie","title":"Dragon Ball Z: The World's Strongest","year":1990,"rating":"PG","genres":["Action","Animation","Science Fiction"],"episodes":[["7742085","mediasource_7742085",0,1,"",3571259]]},{"id":"7761572","type":"Movie","title":"Bruce Lee: The Man, The Myth","year":1976,"rating":"R","genres":["Action","Adventure"],"episodes":[["7761572","mediasource_7761572",0,1,"",5439968]]},{"id":"7772963","type":"Movie","title":"City Hunter Special: The Secret Service","year":1996,"rating":"Unrated","genres":["Action","Animation","Comedy","Crime"],"episodes":[["7772963","mediasource_7772963",0,1,"",5414701]]},{"id":"7898720","type":"Movie","title":"Martian Successor Nadesico: The Motion Picture - Prince of Darkness","year":1998,"rating":"TV-14","genres":["Animation","Science Fiction","Drama","Action"],"episodes":[["7898720","mediasource_7898720",0,1,"",6094255]]},{"id":"7950496","type":"Movie","title":"Aachi & Ssipak","year":2006,"rating":"R","genres":["Action","Animation","Science Fiction","Comedy","Adventure"],"episodes":[["7950496","mediasource_7950496",0,1,"",4932352]]},{"id":"7952478","type":"Movie","title":"Black Jack: The Movie","year":1996,"rating":"NR","genres":["Animation","Drama","Thriller","Mystery"],"episodes":[["7952478","mediasource_7952478",0,1,"",5577040]]},{"id":"7954683","type":"Movie","title":"Angel Cop","year":1989,"rating":"Not Rated","genres":["Thriller","Animation","Crime","Science Fiction","Horror"],"episodes":[["7954683","mediasource_7954683",0,1,"",10542824]]},{"id":"8058273","type":"Movie","title":"Kite Liberator","year":2008,"rating":"NR","genres":["Animation","Thriller","Action"],"episodes":[["8058273","mediasource_8058273",0,1,"",3502592]]}],"Hallmark Christmas":[{"id":"5636659","type":"Movie","title":"Battle of the Bulbs","year":2010,"rating":"TV-PG","genres":["Drama","Comedy","TV Movie"],"episodes":[["5636659","mediasource_5636659",0,1,"",5256960]]},{"id":"5642299","type":"Movie","title":"Finding John Christmas","year":2003,"rating":"PG","genres":["Family","TV Movie"],"episodes":[["5642299","mediasource_5642299",0,1,"",5415953]]},{"id":"5664056","type":"Movie","title":"Jingle All the Way","year":2011,"rating":"TV-G","genres":["Animation","Family"],"episodes":[["5664056","mediasource_5664056",0,1,"",1330688]]},{"id":"5664057","type":"Movie","title":"Jingle & Bell's Christmas Star","year":2012,"rating":"TV-G","genres":["Animation","Family","Drama"],"episodes":[["5664057","mediasource_5664057",0,1,"",1433088]]},{"id":"5664514","type":"Movie","title":"Deliver by Christmas","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5664514","mediasource_5664514",0,1,"",5030250]]},{"id":"5665404","type":"Movie","title":"Meet The Santas","year":2005,"rating":"TV-PG","genres":["Family","Comedy","Fantasy","TV Movie"],"episodes":[["5665404","mediasource_5665404",0,1,"",5274315]]},{"id":"5665493","type":"Movie","title":"Mr. Miracle","year":2014,"rating":"G","genres":["Drama","Family","TV Movie"],"episodes":[["5665493","mediasource_5665493",0,1,"",5153856]]},{"id":"5665939","type":"Movie","title":"Lucky Christmas","year":2011,"rating":"PG","genres":["Family","Drama","Romance","TV Movie"],"episodes":[["5665939","mediasource_5665939",0,1,"",5094037]]},{"id":"5666942","type":"Movie","title":"Pete's Christmas","year":2013,"rating":"PG","genres":["Fantasy","Family"],"episodes":[["5666942","mediasource_5666942",0,1,"",5346300]]},{"id":"5667193","type":"Movie","title":"Signed, Sealed, Delivered for Christmas","year":2014,"rating":"PG","genres":["Family","TV Movie"],"episodes":[["5667193","mediasource_5667193",0,1,"",5299008]]},{"id":"5667604","type":"Movie","title":"The Santa Suit","year":2010,"rating":"TV-G","genres":["Comedy","Family","Fantasy","TV Movie"],"episodes":[["5667604","mediasource_5667604",0,1,"",5286982]]},{"id":"5672447","type":"Movie","title":"Three Wise Women","year":2010,"rating":"PG","genres":["Family","Romance","TV Movie","Drama"],"episodes":[["5672447","mediasource_5672447",0,1,"",5272928]]},{"id":"5673068","type":"Movie","title":"'Tis the Season for Love","year":2015,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5673068","mediasource_5673068",0,1,"",5001578]]},{"id":"5674597","type":"Movie","title":"Mrs. Santa Claus","year":1996,"rating":"G","genres":["Family","Fantasy","Music","Comedy","TV Movie"],"episodes":[["5674597","mediasource_5674597",0,1,"",5430080]]},{"id":"5679306","type":"Movie","title":"A Christmas Memory","year":1997,"rating":"Not Rated","genres":["Drama","Family","TV Movie"],"episodes":[["5679306","mediasource_5679306",0,1,"",5536608]]},{"id":"5683594","type":"Movie","title":"When Angels Come to Town","year":2004,"rating":"PG-13","genres":["Drama","Family","Fantasy","TV Movie"],"episodes":[["5683594","mediasource_5683594",0,1,"",5055117]]},{"id":"5683738","type":"Movie","title":"The Wishing Tree","year":2012,"rating":"TV-G","genres":["Comedy","TV Movie","Romance"],"episodes":[["5683738","mediasource_5683738",0,1,"",5198059]]},{"id":"5684509","type":"Movie","title":"Silver Bells","year":2005,"rating":"NR","genres":["TV Movie","Drama","Family"],"episodes":[["5684509","mediasource_5684509",0,1,"",5816025]]},{"id":"5684976","type":"Movie","title":"Sense, Sensibility & Snowmen","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5684976","mediasource_5684976",0,1,"",4987576]]},{"id":"5685805","type":"Movie","title":"USS Christmas","year":2020,"rating":"TV-G","genres":["TV Movie","Mystery"],"episodes":[["5685805","mediasource_5685805",0,1,"",5025941]]},{"id":"5696806","type":"Movie","title":"Meet Me at Christmas","year":2020,"rating":"","genres":["TV Movie","Romance"],"episodes":[["5696806","mediasource_5696806",0,1,"",4944466]]},{"id":"5697548","type":"Movie","title":"All I Want for Christmas","year":2007,"rating":"PG-13","genres":["TV Movie","Romance","Drama","Family"],"episodes":[["5697548","mediasource_5697548",0,1,"",5089120]]},{"id":"5705876","type":"Movie","title":"A Christmas Village","year":2018,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["5705876","mediasource_5705876",0,1,"",4859072]]},{"id":"5706533","type":"Movie","title":"A Christmas Carol","year":2004,"rating":"Not Rated","genres":["Drama","Fantasy","TV Movie"],"episodes":[["5706533","mediasource_5706533",0,1,"",5248298]]},{"id":"5707350","type":"Movie","title":"Santa, Jr.","year":2002,"rating":"TV-PG","genres":["Fantasy","Comedy","Romance","TV Movie"],"episodes":[["5707350","mediasource_5707350",0,1,"",5246091]]},{"id":"5711416","type":"Movie","title":"Magical Christmas Ornaments","year":2017,"rating":"G","genres":["Romance","Drama","TV Movie"],"episodes":[["5711416","mediasource_5711416",0,1,"",5259008]]},{"id":"5711424","type":"Movie","title":"My Christmas Love","year":2016,"rating":"TV-G","genres":["TV Movie","Romance","Comedy"],"episodes":[["5711424","mediasource_5711424",0,1,"",4898048]]},{"id":"5711434","type":"Movie","title":"Memories of Christmas","year":2018,"rating":"G","genres":["Drama","Romance","TV Movie"],"episodes":[["5711434","mediasource_5711434",0,1,"",5041856]]},{"id":"5711441","type":"Movie","title":"Magic Stocking","year":2015,"rating":"","genres":["Family","TV Movie"],"episodes":[["5711441","mediasource_5711441",0,1,"",5181952]]},{"id":"5711442","type":"Movie","title":"Marrying Father Christmas","year":2018,"rating":"TV-G","genres":["Romance","Drama","TV Movie"],"episodes":[["5711442","mediasource_5711442",0,1,"",5195232]]},{"id":"5711443","type":"Movie","title":"The Mistletoe Secret","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5711443","mediasource_5711443",0,1,"",5121344]]},{"id":"5711463","type":"Movie","title":"The Mistletoe Inn","year":2017,"rating":"TV-G","genres":["Drama","TV Movie","Romance"],"episodes":[["5711463","mediasource_5711463",0,1,"",5007000]]},{"id":"5711476","type":"Movie","title":"A Merry Christmas Match","year":2019,"rating":"TV-G","genres":["Drama","TV Movie","Romance"],"episodes":[["5711476","mediasource_5711476",0,1,"",5026466]]},{"id":"5711495","type":"Movie","title":"Merry & Bright","year":2019,"rating":"G","genres":["TV Movie","Romance"],"episodes":[["5711495","mediasource_5711495",0,1,"",5061120]]},{"id":"5711508","type":"Movie","title":"Mingle All the Way","year":2018,"rating":"TV-G","genres":["Romance","Comedy","TV Movie"],"episodes":[["5711508","mediasource_5711508",0,1,"",5193216]]},{"id":"5711517","type":"Movie","title":"Miss Christmas","year":2017,"rating":"TV-G","genres":["TV Movie","Romance","Drama"],"episodes":[["5711517","mediasource_5711517",0,1,"",5040096]]},{"id":"5711543","type":"Movie","title":"A Majestic Christmas","year":2018,"rating":"TV-G","genres":["TV Movie","Family","Drama"],"episodes":[["5711543","mediasource_5711543",0,1,"",5033120]]},{"id":"5711598","type":"Movie","title":"Write Before Christmas","year":2019,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["5711598","mediasource_5711598",0,1,"",5040064]]},{"id":"5711742","type":"Movie","title":"With Love, Christmas","year":2017,"rating":"G","genres":["TV Movie","Romance"],"episodes":[["5711742","mediasource_5711742",0,1,"",4904720]]},{"id":"5711744","type":"Movie","title":"Welcome to Christmas","year":2018,"rating":"TV-G","genres":["Romance","Drama","TV Movie"],"episodes":[["5711744","mediasource_5711744",0,1,"",5111168]]},{"id":"5711771","type":"Movie","title":"A Wish for Christmas","year":2016,"rating":"G","genres":["TV Movie","Romance","Drama","Fantasy"],"episodes":[["5711771","mediasource_5711771",0,1,"",5041078]]},{"id":"5711825","type":"Movie","title":"12 Gifts of Christmas","year":2015,"rating":"G","genres":["Family","TV Movie","Comedy","Romance"],"episodes":[["5711825","mediasource_5711825",0,1,"",5158752]]},{"id":"5711828","type":"Movie","title":"Fir Crazy","year":2013,"rating":"TV-G","genres":["Comedy","Romance","TV Movie"],"episodes":[["5711828","mediasource_5711828",0,1,"",5029056]]},{"id":"5711841","type":"Movie","title":"Family for Christmas","year":2015,"rating":"TV-G","genres":["Family","Romance","TV Movie"],"episodes":[["5711841","mediasource_5711841",0,1,"",5139533]]},{"id":"5711849","type":"Movie","title":"Farewell Mr. Kringle","year":2010,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["5711849","mediasource_5711849",0,1,"",5215808]]},{"id":"5711871","type":"Movie","title":"Finding Santa","year":2017,"rating":"G","genres":["TV Movie","Romance"],"episodes":[["5711871","mediasource_5711871",0,1,"",5195200]]},{"id":"5711983","type":"Movie","title":"A Very Merry Mix-Up","year":2013,"rating":"TV-G","genres":["TV Movie","Romance","Comedy"],"episodes":[["5711983","mediasource_5711983",0,1,"",5193216]]},{"id":"5712018","type":"Movie","title":"Northpole","year":2014,"rating":"G","genres":["TV Movie","Fantasy","Family"],"episodes":[["5712018","mediasource_5712018",0,1,"",5074240]]},{"id":"5712043","type":"Movie","title":"Northern Lights of Christmas","year":2018,"rating":"TV-G","genres":["Drama","Romance","TV Movie"],"episodes":[["5712043","mediasource_5712043",0,1,"",4995157]]},{"id":"5712104","type":"Movie","title":"Two Turtle Doves","year":2019,"rating":"G","genres":["Drama","Family","Romance","TV Movie"],"episodes":[["5712104","mediasource_5712104",0,1,"",5131242]]},{"id":"5712181","type":"Movie","title":"Time for Me to Come Home for Christmas","year":2018,"rating":"TV-G","genres":["Romance","Drama","TV Movie"],"episodes":[["5712181","mediasource_5712181",0,1,"",5040064]]},{"id":"5712447","type":"Movie","title":"Angel of Christmas","year":2015,"rating":"TV-G","genres":["Family","TV Movie","Romance"],"episodes":[["5712447","mediasource_5712447",0,1,"",5290016]]},{"id":"5712461","type":"Movie","title":"Annie Claus Is Coming to Town","year":2011,"rating":"PG","genres":["TV Movie","Family","Fantasy","Comedy","Romance"],"episodes":[["5712461","mediasource_5712461",0,1,"",5214048]]},{"id":"5712577","type":"Movie","title":"Christmas Camp","year":2018,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["5712577","mediasource_5712577",0,1,"",4844192]]},{"id":"5712581","type":"Movie","title":"The Christmas Box","year":1995,"rating":"G","genres":["Drama","Fantasy","TV Movie"],"episodes":[["5712581","mediasource_5712581",0,1,"",5509600]]},{"id":"5712591","type":"Movie","title":"Christmas Town","year":2019,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["5712591","mediasource_5712591",0,1,"",5185899]]},{"id":"5712598","type":"Movie","title":"Christmas Cookies","year":2016,"rating":"G","genres":["TV Movie","Romance","Drama"],"episodes":[["5712598","mediasource_5712598",0,1,"",5167162]]},{"id":"5712608","type":"Movie","title":"A Christmas Detour","year":2015,"rating":"TV-G","genres":["Comedy","Romance","TV Movie"],"episodes":[["5712608","mediasource_5712608",0,1,"",5103098]]},{"id":"5712610","type":"Movie","title":"Christmas at Grand Valley","year":2018,"rating":"TV-G","genres":["TV Movie","Family","Romance"],"episodes":[["5712610","mediasource_5712610",0,1,"",5178368]]},{"id":"5712611","type":"Movie","title":"Come Dance with Me","year":2012,"rating":"Not Rated","genres":["Family","Romance","TV Movie"],"episodes":[["5712611","mediasource_5712611",0,1,"",5155567]]},{"id":"5712613","type":"Movie","title":"Christmas at Graceland: Home for the Holidays","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5712613","mediasource_5712613",0,1,"",5042304]]},{"id":"5712614","type":"Movie","title":"Christmas Under the Stars","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5712614","mediasource_5712614",0,1,"",5202464]]},{"id":"5712616","type":"Movie","title":"The Christmas Train","year":2017,"rating":"G","genres":["Family","TV Movie","Drama","Romance"],"episodes":[["5712616","mediasource_5712616",0,1,"",5928619]]},{"id":"5712622","type":"Movie","title":"Christmas Encore","year":2017,"rating":"TV-G","genres":["Romance","Drama","TV Movie"],"episodes":[["5712622","mediasource_5712622",0,1,"",5319840]]},{"id":"5712623","type":"Movie","title":"Christmas Magic","year":2011,"rating":"PG","genres":["TV Movie","Family","Fantasy"],"episodes":[["5712623","mediasource_5712623",0,1,"",5224887]]},{"id":"5712624","type":"Movie","title":"The Christmas Club","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5712624","mediasource_5712624",0,1,"",5040096]]},{"id":"5712634","type":"Movie","title":"Christmas at Graceland","year":2018,"rating":"TV-G","genres":["TV Movie","Family","Romance"],"episodes":[["5712634","mediasource_5712634",0,1,"",5198752]]},{"id":"5712635","type":"Movie","title":"Christmas Everlasting","year":2018,"rating":"TV-PG","genres":["Romance","Drama","TV Movie"],"episodes":[["5712635","mediasource_5712635",0,1,"",5340416]]},{"id":"5712651","type":"Movie","title":"Crown for Christmas","year":2015,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["5712651","mediasource_5712651",0,1,"",5195023]]},{"id":"5712652","type":"Movie","title":"The Christmas Cottage","year":2017,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5712652","mediasource_5712652",0,1,"",5048480]]},{"id":"5712666","type":"Movie","title":"Christmas Under Wraps","year":2014,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["5712666","mediasource_5712666",0,1,"",5073861]]},{"id":"5712671","type":"Movie","title":"Check Inn to Christmas","year":2019,"rating":"","genres":["TV Movie","Romance"],"episodes":[["5712671","mediasource_5712671",0,1,"",5043104]]},{"id":"5712676","type":"Movie","title":"A Christmas Miracle","year":2019,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["5712676","mediasource_5712676",0,1,"",4992512]]},{"id":"5712680","type":"Movie","title":"Christmas in Love","year":2018,"rating":"TV-G","genres":["TV Movie","Romance","Family","Comedy"],"episodes":[["5712680","mediasource_5712680",0,1,"",5173344]]},{"id":"5712685","type":"Movie","title":"Christmas in Evergreen","year":2017,"rating":"G","genres":["Romance","TV Movie","Drama"],"episodes":[["5712685","mediasource_5712685",0,1,"",5048000]]},{"id":"5712688","type":"Movie","title":"Christmas Bells Are Ringing","year":2018,"rating":"TV-G","genres":["Family","TV Movie","Comedy"],"episodes":[["5712688","mediasource_5712688",0,1,"",5284288]]},{"id":"5712721","type":"Movie","title":"The Christmas Cure","year":2017,"rating":"G","genres":["TV Movie","Romance","Drama"],"episodes":[["5712721","mediasource_5712721",0,1,"",5258042]]},{"id":"5712730","type":"Movie","title":"A Christmas Melody","year":2015,"rating":"G","genres":["Comedy","Romance","TV Movie"],"episodes":[["5712730","mediasource_5712730",0,1,"",4993572]]},{"id":"5712739","type":"Movie","title":"Coming Home for Christmas","year":2017,"rating":"G","genres":["TV Movie","Romance","Comedy"],"episodes":[["5712739","mediasource_5712739",0,1,"",5178336]]},{"id":"5712742","type":"Movie","title":"Christmas Scavenger Hunt","year":2019,"rating":"TV-G","genres":["Romance","Drama","TV Movie"],"episodes":[["5712742","mediasource_5712742",0,1,"",4965760]]},{"id":"5712754","type":"Movie","title":"Christmas List","year":2016,"rating":"TV-G","genres":["Comedy","Romance","TV Movie"],"episodes":[["5712754","mediasource_5712754",0,1,"",5106944]]},{"id":"5712755","type":"Movie","title":"The Christmas Parade","year":2014,"rating":"TV-G","genres":["Drama","Family","TV Movie"],"episodes":[["5712755","mediasource_5712755",0,1,"",5129568]]},{"id":"5712757","type":"Movie","title":"Christmas Connection","year":2017,"rating":"G","genres":["Drama","TV Movie","Mystery","Romance"],"episodes":[["5712757","mediasource_5712757",0,1,"",5210560]]},{"id":"5712758","type":"Movie","title":"Christmas at Pemberley Manor","year":2018,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5712758","mediasource_5712758",0,1,"",5195232]]},{"id":"5712765","type":"Movie","title":"Christmas at the Palace","year":2018,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["5712765","mediasource_5712765",0,1,"",5231264]]},{"id":"5712767","type":"Movie","title":"A Christmas Duet","year":2019,"rating":"Not Rated","genres":["Romance","TV Movie"],"episodes":[["5712767","mediasource_5712767",0,1,"",5040064]]},{"id":"5712776","type":"Movie","title":"Christmas at Cartwright's","year":2014,"rating":"TV-G","genres":["Romance","Family","Drama","TV Movie"],"episodes":[["5712776","mediasource_5712776",0,1,"",5004833]]},{"id":"5712777","type":"Movie","title":"The Christmas Secret","year":2014,"rating":"TV-G","genres":["Romance","Drama","Family","TV Movie"],"episodes":[["5712777","mediasource_5712777",0,1,"",5161400]]},{"id":"5712778","type":"Movie","title":"Christmas Made to Order","year":2018,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["5712778","mediasource_5712778",0,1,"",5073440]]},{"id":"5712805","type":"Movie","title":"Home for Christmas Day","year":2017,"rating":"G","genres":["Romance","Drama","TV Movie"],"episodes":[["5712805","mediasource_5712805",0,1,"",5097120]]},{"id":"5712823","type":"Movie","title":"Hearts of Christmas","year":2016,"rating":"TV-G","genres":["Drama","TV Movie"],"episodes":[["5712823","mediasource_5712823",0,1,"",5165568]]},{"id":"5712827","type":"Movie","title":"Hope at Christmas","year":2018,"rating":"TV-G","genres":["Family","Romance","TV Movie"],"episodes":[["5712827","mediasource_5712827",0,1,"",5195232]]},{"id":"5712832","type":"Movie","title":"Holiday Hearts","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5712832","mediasource_5712832",0,1,"",5047488]]},{"id":"5712837","type":"Movie","title":"Holiday for Heroes","year":2019,"rating":"TV-PG","genres":["Romance","TV Movie"],"episodes":[["5712837","mediasource_5712837",0,1,"",5141984]]},{"id":"5712871","type":"Movie","title":"Homegrown Christmas","year":2018,"rating":"TV-G","genres":["Drama","TV Movie","Romance"],"episodes":[["5712871","mediasource_5712871",0,1,"",5320000]]},{"id":"5712910","type":"Movie","title":"Debbie Macomber's Dashing Through The Snow","year":2015,"rating":"Not Rated","genres":["TV Movie","Family","Mystery","Romance"],"episodes":[["5712910","mediasource_5712910",0,1,"",4982112]]},{"id":"5712946","type":"Movie","title":"A Dream of Christmas","year":2016,"rating":"TV-G","genres":["Drama","Romance","TV Movie"],"episodes":[["5712946","mediasource_5712946",0,1,"",5122272]]},{"id":"5713011","type":"Movie","title":"It's Beginning to Look a Lot Like Christmas","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5713011","mediasource_5713011",0,1,"",4969984]]},{"id":"5713015","type":"Movie","title":"It's Christmas, Eve","year":2018,"rating":"TV-G","genres":["Romance","Drama","TV Movie","Music"],"episodes":[["5713015","mediasource_5713015",0,1,"",5203232]]},{"id":"5713016","type":"Movie","title":"It's Christmas, Carol!","year":2012,"rating":"TV-G","genres":["TV Movie","Family","Fantasy"],"episodes":[["5713016","mediasource_5713016",0,1,"",5198016]]},{"id":"5713019","type":"Movie","title":"I'm Not Ready for Christmas","year":2015,"rating":"TV-G","genres":["Family","TV Movie","Comedy","Drama","Romance"],"episodes":[["5713019","mediasource_5713019",0,1,"",5142054]]},{"id":"5713025","type":"Movie","title":"I'll Be Home for Christmas","year":2016,"rating":"G","genres":["TV Movie","Family","Drama"],"episodes":[["5713025","mediasource_5713025",0,1,"",5102464]]},{"id":"5713060","type":"Movie","title":"The Perfect Christmas Present","year":2017,"rating":"G","genres":["TV Movie","Romance"],"episodes":[["5713060","mediasource_5713060",0,1,"",4931385]]},{"id":"5713105","type":"Movie","title":"A Perfect Christmas List","year":2014,"rating":"TV-G","genres":["Comedy","Drama","Family","TV Movie"],"episodes":[["5713105","mediasource_5713105",0,1,"",5367424]]},{"id":"5713126","type":"Movie","title":"Picture a Perfect Christmas","year":2019,"rating":"TV-G","genres":["Romance","TV Movie","Drama","Comedy"],"episodes":[["5713126","mediasource_5713126",0,1,"",5031968]]},{"id":"5713194","type":"Movie","title":"A Perfect Christmas","year":2016,"rating":"TV-G","genres":["Comedy","Family","Romance","TV Movie"],"episodes":[["5713194","mediasource_5713194",0,1,"",5040064]]},{"id":"5713205","type":"Movie","title":"Pride, Prejudice and Mistletoe","year":2018,"rating":"TV-PG","genres":["Romance","TV Movie"],"episodes":[["5713205","mediasource_5713205",0,1,"",5178272]]},{"id":"5713223","type":"Movie","title":"Once Upon a Christmas Miracle","year":2018,"rating":"TV-G","genres":["Romance","Drama","TV Movie","Comedy"],"episodes":[["5713223","mediasource_5713223",0,1,"",5103904]]},{"id":"5713225","type":"Movie","title":"Operation Christmas","year":2016,"rating":"TV-G","genres":["TV Movie","Romance","Drama"],"episodes":[["5713225","mediasource_5713225",0,1,"",5294112]]},{"id":"5713235","type":"Movie","title":"Once Upon A Holiday","year":2015,"rating":"TV-G","genres":["Family","Romance","TV Movie"],"episodes":[["5713235","mediasource_5713235",0,1,"",5272331]]},{"id":"5713256","type":"Movie","title":"A Bramble House Christmas","year":2017,"rating":"Not Rated","genres":["Drama","TV Movie"],"episodes":[["5713256","mediasource_5713256",0,1,"",5043200]]},{"id":"5713283","type":"Movie","title":"The Bridge Part 2","year":2016,"rating":"G","genres":["TV Movie","Drama"],"episodes":[["5713283","mediasource_5713283",0,1,"",5175776]]},{"id":"5713284","type":"Movie","title":"A Blue Ridge Mountain Christmas","year":2019,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["5713284","mediasource_5713284",0,1,"",5015491]]},{"id":"5713289","type":"Movie","title":"Broadcasting Christmas","year":2016,"rating":"G","genres":["TV Movie","Romance","Drama","Comedy"],"episodes":[["5713289","mediasource_5713289",0,1,"",5190048]]},{"id":"5713313","type":"Movie","title":"A Boyfriend for Christmas","year":2004,"rating":"TV-G","genres":["TV Movie","Romance","Comedy","Drama","Family"],"episodes":[["5713313","mediasource_5713313",0,1,"",5557920]]},{"id":"5713332","type":"Movie","title":"The Bridge","year":2015,"rating":"G","genres":["TV Movie","Drama"],"episodes":[["5713332","mediasource_5713332",0,1,"",5191008]]},{"id":"5713349","type":"Movie","title":"Baby's First Christmas","year":2012,"rating":"","genres":["Romance","Drama","TV Movie"],"episodes":[["5713349","mediasource_5713349",0,1,"",5080000]]},{"id":"5713567","type":"Movie","title":"Love Always, Santa","year":2016,"rating":"TV-G","genres":["Romance","Comedy","TV Movie"],"episodes":[["5713567","mediasource_5713567",0,1,"",5040064]]},{"id":"5713596","type":"Movie","title":"Love at the Thanksgiving Day Parade","year":2012,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["5713596","mediasource_5713596",0,1,"",5207072]]},{"id":"5713613","type":"Movie","title":"Looks Like Christmas","year":2016,"rating":"TV-G","genres":["TV Movie","Comedy","Romance"],"episodes":[["5713613","mediasource_5713613",0,1,"",5049584]]},{"id":"5713663","type":"Movie","title":"Let It Snow","year":2013,"rating":"TV-G","genres":["Drama","Romance","Family","TV Movie"],"episodes":[["5713663","mediasource_5713663",0,1,"",4971000]]},{"id":"5713680","type":"Movie","title":"Enchanted Christmas","year":2017,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5713680","mediasource_5713680",0,1,"",5206251]]},{"id":"5713697","type":"Movie","title":"Entertaining Christmas","year":2018,"rating":"TV-G","genres":["TV Movie","Romance","Family"],"episodes":[["5713697","mediasource_5713697",0,1,"",5114848]]},{"id":"5713836","type":"Movie","title":"Single Santa Seeks Mrs. Claus","year":2004,"rating":"","genres":["Comedy","Fantasy","Family","TV Movie"],"episodes":[["5713836","mediasource_5713836",0,1,"",5034048]]},{"id":"5713858","type":"Movie","title":"A Song for Christmas","year":2017,"rating":"TV-G","genres":["TV Movie","Drama","Romance"],"episodes":[["5713858","mediasource_5713858",0,1,"",5046240]]},{"id":"5713882","type":"Movie","title":"A Shoe Addict's Christmas","year":2018,"rating":"TV-G","genres":["Romance","Drama","TV Movie","Fantasy"],"episodes":[["5713882","mediasource_5713882",0,1,"",5160064]]},{"id":"5713927","type":"Movie","title":"Small Town Christmas","year":2018,"rating":"TV-G","genres":["Drama","Romance","TV Movie"],"episodes":[["5713927","mediasource_5713927",0,1,"",5134496]]},{"id":"5714165","type":"Movie","title":"Switched for Christmas","year":2017,"rating":"TV-G","genres":["TV Movie","Drama"],"episodes":[["5714165","mediasource_5714165",0,1,"",5201312]]},{"id":"5714239","type":"Movie","title":"The Sweetest Christmas","year":2017,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["5714239","mediasource_5714239",0,1,"",5198208]]},{"id":"5714378","type":"Movie","title":"A Gift to Remember","year":2017,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5714378","mediasource_5714378",0,1,"",5195232]]},{"id":"5714417","type":"Movie","title":"A Godwink Christmas: Meant For Love","year":2019,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["5714417","mediasource_5714417",0,1,"",5141152]]},{"id":"5714429","type":"Movie","title":"A Gingerbread Romance","year":2018,"rating":"TV-PG","genres":["Romance","TV Movie"],"episodes":[["5714429","mediasource_5714429",0,1,"",5073600]]},{"id":"5714480","type":"Movie","title":"Reunited at Christmas","year":2018,"rating":"TV-G","genres":["Family","TV Movie"],"episodes":[["5714480","mediasource_5714480",0,1,"",5271840]]},{"id":"5714512","type":"Movie","title":"Road to Christmas","year":2018,"rating":"TV-G","genres":["Family","Romance","TV Movie"],"episodes":[["5714512","mediasource_5714512",0,1,"",5135232]]},{"id":"5714588","type":"Movie","title":"A Royal Winter","year":2017,"rating":"G","genres":["TV Movie","Romance"],"episodes":[["5714588","mediasource_5714588",0,1,"",5033184]]},{"id":"5714598","type":"Movie","title":"A Royal Christmas","year":2014,"rating":"G","genres":["TV Movie","Romance","Family"],"episodes":[["5714598","mediasource_5714598",0,1,"",5335712]]},{"id":"5714599","type":"Movie","title":"Return to Christmas Creek","year":2018,"rating":"TV-G","genres":["Romance","Family","TV Movie"],"episodes":[["5714599","mediasource_5714599",0,1,"",5177696]]},{"id":"5714709","type":"Movie","title":"Rocky Mountain Christmas","year":2017,"rating":"G","genres":["Drama","TV Movie","Romance"],"episodes":[["5714709","mediasource_5714709",0,1,"",5286304]]},{"id":"5714732","type":"Movie","title":"Romance at Reindeer Lodge","year":2017,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["5714732","mediasource_5714732",0,1,"",4843008]]},{"id":"5716265","type":"Movie","title":"Jingle Bell Bride","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5716265","mediasource_5716265",0,1,"",5010506]]},{"id":"5716735","type":"Movie","title":"Christmas in Vienna","year":2020,"rating":"TV-G","genres":["Romance","Drama","TV Movie"],"episodes":[["5716735","mediasource_5716735",0,1,"",5028693]]},{"id":"5716760","type":"Movie","title":"A Christmas Tree Grows in Colorado","year":2020,"rating":"TV-G","genres":["Family","Romance","TV Movie"],"episodes":[["5716760","mediasource_5716760",0,1,"",5023445]]},{"id":"5716917","type":"Movie","title":"Chateau Christmas","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["5716917","mediasource_5716917",0,1,"",5040555]]},{"id":"5718377","type":"Movie","title":"Window Wonderland","year":2013,"rating":"G","genres":["Romance","Comedy","TV Movie"],"episodes":[["5718377","mediasource_5718377",0,1,"",5210016]]},{"id":"5719064","type":"Movie","title":"One Special Night","year":1999,"rating":"PG","genres":["Drama","Romance","TV Movie"],"episodes":[["5719064","mediasource_5719064",0,1,"",5443018]]},{"id":"5729207","type":"Movie","title":"Naughty or Nice","year":2012,"rating":"TV-G","genres":["Fantasy","TV Movie","Comedy","Drama"],"episodes":[["5729207","mediasource_5729207",0,1,"",5202316]]},{"id":"5729229","type":"Movie","title":"A Christmas for the Books","year":2018,"rating":"","genres":["Romance","TV Movie"],"episodes":[["5729229","mediasource_5729229",0,1,"",4795583]]},{"id":"5729231","type":"Movie","title":"Christmas Wonderland","year":2018,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["5729231","mediasource_5729231",0,1,"",5107616]]},{"id":"5729258","type":"Movie","title":"Best Christmas Party Ever","year":2014,"rating":"TV-G","genres":["Comedy","TV Movie","Drama"],"episodes":[["5729258","mediasource_5729258",0,1,"",5080096]]},{"id":"5729261","type":"Movie","title":"Last Vermont Christmas","year":2018,"rating":"TV-G","genres":["Drama","TV Movie","Romance"],"episodes":[["5729261","mediasource_5729261",0,1,"",4573056]]},{"id":"6035764","type":"Movie","title":"Christmas Tree Lane","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6035764","mediasource_6035764",0,1,"",5028852]]},{"id":"6035775","type":"Movie","title":"Christmas with Tucker","year":2013,"rating":"G","genres":["Drama","TV Movie"],"episodes":[["6035775","mediasource_6035775",0,1,"",4997920]]},{"id":"6035862","type":"Movie","title":"The Case for Christmas","year":2011,"rating":"G","genres":["TV Movie","Fantasy","Comedy","Drama"],"episodes":[["6035862","mediasource_6035862",0,1,"",5029792]]},{"id":"6035871","type":"Movie","title":"The Christmas Blessing","year":2005,"rating":"NR","genres":["Drama","Family","Romance","TV Movie"],"episodes":[["6035871","mediasource_6035871",0,1,"",5464843]]},{"id":"6035964","type":"Movie","title":"Christmas in Canaan","year":2009,"rating":"PG-13","genres":["Family","Drama","TV Movie"],"episodes":[["6035964","mediasource_6035964",0,1,"",4996617]]},{"id":"6036275","type":"Movie","title":"The Christmas Choir","year":2008,"rating":"TV-G","genres":["TV Movie","Drama","Romance"],"episodes":[["6036275","mediasource_6036275",0,1,"",4996512]]},{"id":"6036622","type":"Movie","title":"Heart of the Holidays","year":2020,"rating":"","genres":["TV Movie","Romance"],"episodes":[["6036622","mediasource_6036622",0,1,"",5155616]]},{"id":"6036949","type":"Movie","title":"Love's Christmas Journey","year":2011,"rating":"TV-G","genres":["Drama","Romance","Western","Family","TV Movie"],"episodes":[["6036949","mediasource_6036949",0,1,"",5019415]]},{"id":"6037715","type":"Movie","title":"Unlocking Christmas","year":2020,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["6037715","mediasource_6037715",0,1,"",4817760]]},{"id":"6038321","type":"Movie","title":"Our Christmas Love Song","year":2019,"rating":"Not Rated","genres":["Romance","TV Movie"],"episodes":[["6038321","mediasource_6038321",0,1,"",4957003]]},{"id":"6038612","type":"Movie","title":"Time for Us to Come Home for Christmas","year":2020,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["6038612","mediasource_6038612",0,1,"",4993504]]},{"id":"6044900","type":"Movie","title":"Swept Up by Christmas","year":2020,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["6044900","mediasource_6044900",0,1,"",5009726]]},{"id":"6045060","type":"Movie","title":"A Heavenly Christmas","year":2016,"rating":"TV-G","genres":["Drama","Romance","Fantasy","TV Movie"],"episodes":[["6045060","mediasource_6045060",0,1,"",5565393]]},{"id":"6045499","type":"Movie","title":"A Cheerful Christmas","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6045499","mediasource_6045499",0,1,"",4986496]]},{"id":"6045515","type":"Movie","title":"A Christmas Wedding Tail","year":2011,"rating":"PG","genres":["Comedy","Drama","Romance","TV Movie"],"episodes":[["6045515","mediasource_6045515",0,1,"",5276032]]},{"id":"6045543","type":"Movie","title":"A Godwink Christmas: Second Chance, First Love","year":2020,"rating":"TV-G","genres":["Romance","TV Movie","Drama"],"episodes":[["6045543","mediasource_6045543",0,1,"",5029358]]},{"id":"6045598","type":"Movie","title":"A Nutcracker Christmas","year":2016,"rating":"TV-G","genres":["Drama","Family","TV Movie","Romance"],"episodes":[["6045598","mediasource_6045598",0,1,"",5162411]]},{"id":"6045979","type":"Movie","title":"A Cookie Cutter Christmas","year":2014,"rating":"TV-G","genres":["TV Movie","Comedy","Romance"],"episodes":[["6045979","mediasource_6045979",0,1,"",4997457]]},{"id":"6045994","type":"Movie","title":"A Dog Named Christmas","year":2009,"rating":"PG","genres":["Family","Drama","TV Movie"],"episodes":[["6045994","mediasource_6045994",0,1,"",5678112]]},{"id":"6046001","type":"Movie","title":"A Family Christmas Gift","year":2019,"rating":"Not Rated","genres":["TV Movie","Romance"],"episodes":[["6046001","mediasource_6046001",0,1,"",5018569]]},{"id":"6046010","type":"Movie","title":"A Glenbrooke Christmas","year":2020,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["6046010","mediasource_6046010",0,1,"",5048480]]},{"id":"6046019","type":"Movie","title":"A Homecoming for the Holidays","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6046019","mediasource_6046019",0,1,"",5007813]]},{"id":"6046063","type":"Movie","title":"A Prince for Christmas","year":2015,"rating":"","genres":["Romance","TV Movie"],"episodes":[["6046063","mediasource_6046063",0,1,"",5242144]]},{"id":"6046910","type":"Movie","title":"One Christmas Eve","year":2014,"rating":"G","genres":["Comedy","Drama","Family","TV Movie"],"episodes":[["6046910","mediasource_6046910",0,1,"",5225792]]},{"id":"6046916","type":"Movie","title":"Our First Christmas","year":2008,"rating":"G","genres":["Family","Comedy","TV Movie","Drama"],"episodes":[["6046916","mediasource_6046916",0,1,"",5171083]]},{"id":"6046992","type":"Movie","title":"Matchmaker Santa","year":2012,"rating":"TV-G","genres":["TV Movie","Comedy","Drama","Romance"],"episodes":[["6046992","mediasource_6046992",0,1,"",4985248]]},{"id":"6047019","type":"Movie","title":"Merry Matrimony","year":2015,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["6047019","mediasource_6047019",0,1,"",5053760]]},{"id":"6047722","type":"Movie","title":"The Three Gifts","year":2009,"rating":"","genres":["TV Movie","Family","Drama"],"episodes":[["6047722","mediasource_6047722",0,1,"",5278016]]},{"id":"6048310","type":"Movie","title":"The Christmas Spirit","year":2013,"rating":"G","genres":["Comedy","Drama","Romance","TV Movie"],"episodes":[["6048310","mediasource_6048310",0,1,"",5128032]]},{"id":"6048408","type":"Movie","title":"Christmas Incorporated","year":2015,"rating":"TV-G","genres":["TV Movie","Drama"],"episodes":[["6048408","mediasource_6048408",0,1,"",5004750]]},{"id":"6048409","type":"Movie","title":"Christmas in Conway","year":2013,"rating":"TV-PG","genres":["Drama","Romance","TV Movie"],"episodes":[["6048409","mediasource_6048409",0,1,"",5784285]]},{"id":"6048410","type":"Movie","title":"Christmas with Holly","year":2012,"rating":"Not Rated","genres":["Drama","Family","TV Movie","Romance"],"episodes":[["6048410","mediasource_6048410",0,1,"",5510144]]},{"id":"6048525","type":"Movie","title":"The Christmas Bow","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6048525","mediasource_6048525",0,1,"",5266645]]},{"id":"6048526","type":"Movie","title":"The Christmas Card","year":2006,"rating":"G","genres":["Drama","Romance","TV Movie"],"episodes":[["6048526","mediasource_6048526",0,1,"",5024640]]},{"id":"6048529","type":"Movie","title":"The Christmas Doctor","year":2020,"rating":"TV-G","genres":["TV Movie","Drama","Romance"],"episodes":[["6048529","mediasource_6048529",0,1,"",5047488]]},{"id":"6048530","type":"Movie","title":"The Christmas Ring","year":2020,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["6048530","mediasource_6048530",0,1,"",5136480]]},{"id":"6048531","type":"Movie","title":"The Christmas Shepherd","year":2014,"rating":"TV-G","genres":["TV Movie","Romance","Drama"],"episodes":[["6048531","mediasource_6048531",0,1,"",5301472]]},{"id":"6048641","type":"Movie","title":"Christmas Land","year":2015,"rating":"G","genres":["TV Movie","Romance"],"episodes":[["6048641","mediasource_6048641",0,1,"",5133952]]},{"id":"6048723","type":"Movie","title":"Cranberry Christmas","year":2020,"rating":"","genres":["Romance","TV Movie","Comedy","Drama"],"episodes":[["6048723","mediasource_6048723",0,1,"",5047488]]},{"id":"6048921","type":"Movie","title":"Finding Father Christmas","year":2016,"rating":"TV-G","genres":["Drama","TV Movie","Romance"],"episodes":[["6048921","mediasource_6048921",0,1,"",5184596]]},{"id":"6049409","type":"Movie","title":"Holly & Ivy","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6049409","mediasource_6049409",0,1,"",5059488]]},{"id":"6053708","type":"Movie","title":"A Season for Miracles","year":1999,"rating":"G","genres":["Drama","Romance","TV Movie"],"episodes":[["6053708","mediasource_6053708",0,1,"",4998880]]},{"id":"6056377","type":"Movie","title":"Every Christmas Has a Story","year":2016,"rating":"G","genres":["TV Movie","Drama","Comedy"],"episodes":[["6056377","mediasource_6056377",0,1,"",4920124]]},{"id":"6056451","type":"Movie","title":"Ice Sculpture Christmas","year":2015,"rating":"NR","genres":["Romance","TV Movie"],"episodes":[["6056451","mediasource_6056451",0,1,"",5182208]]},{"id":"6056664","type":"Movie","title":"Sharing Christmas","year":2017,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["6056664","mediasource_6056664",0,1,"",5154784]]},{"id":"6056670","type":"Movie","title":"Sleigh Bells Ring","year":2016,"rating":"TV-G","genres":["Family","TV Movie","Romance"],"episodes":[["6056670","mediasource_6056670",0,1,"",4920992]]},{"id":"6056724","type":"Movie","title":"Snow Bride","year":2013,"rating":"G","genres":["Romance","Comedy","Family","TV Movie"],"episodes":[["6056724","mediasource_6056724",0,1,"",5119104]]},{"id":"6056805","type":"Movie","title":"Angels and Ornaments","year":2014,"rating":"TV-G","genres":["TV Movie","Romance","Family"],"episodes":[["6056805","mediasource_6056805",0,1,"",5055712]]},{"id":"6056813","type":"Movie","title":"Angel Falls: A Novel Holiday","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6056813","mediasource_6056813",0,1,"",5028454]]},{"id":"6056820","type":"Movie","title":"A Joyous Christmas","year":2017,"rating":"TV-G","genres":["TV Movie","Romance","Drama"],"episodes":[["6056820","mediasource_6056820",0,1,"",5060064]]},{"id":"6056827","type":"Movie","title":"Journey Back to Christmas","year":2016,"rating":"G","genres":["Drama","Family","TV Movie"],"episodes":[["6056827","mediasource_6056827",0,1,"",4814806]]},{"id":"6056828","type":"Movie","title":"Just in Time for Christmas","year":2015,"rating":"TV-G","genres":["Fantasy","TV Movie","Romance","Drama"],"episodes":[["6056828","mediasource_6056828",0,1,"",5793413]]},{"id":"6056844","type":"Movie","title":"Jingle Around the Clock","year":2018,"rating":"TV-G","genres":["Comedy","Romance","TV Movie"],"episodes":[["6056844","mediasource_6056844",0,1,"",5193216]]},{"id":"6056880","type":"Movie","title":"Nostalgic Christmas","year":2019,"rating":"","genres":["Romance","TV Movie"],"episodes":[["6056880","mediasource_6056880",0,1,"",5010641]]},{"id":"6056885","type":"Movie","title":"The Nine Lives of Christmas","year":2014,"rating":"G","genres":["TV Movie","Romance","Drama","Comedy"],"episodes":[["6056885","mediasource_6056885",0,1,"",5190251]]},{"id":"6056923","type":"Movie","title":"Mistletoe Over Manhattan","year":2011,"rating":"G","genres":["TV Movie","Family"],"episodes":[["6056923","mediasource_6056923",0,1,"",5002957]]},{"id":"6056949","type":"Movie","title":"My Christmas Dream","year":2016,"rating":"PG","genres":["TV Movie","Romance","Comedy"],"episodes":[["6056949","mediasource_6056949",0,1,"",5166240]]},{"id":"6056958","type":"Movie","title":"The Most Wonderful Time of the Year","year":2008,"rating":"TV-PG","genres":["TV Movie","Drama","Romance"],"episodes":[["6056958","mediasource_6056958",0,1,"",5420022]]},{"id":"6056961","type":"Movie","title":"On the Twelfth Day of Christmas","year":2015,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6056961","mediasource_6056961",0,1,"",5166048]]},{"id":"6057227","type":"Movie","title":"Christmas Wishes & Mistletoe Kisses","year":2019,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["6057227","mediasource_6057227",0,1,"",5040064]]},{"id":"6057228","type":"Movie","title":"Christmas at Dollywood","year":2019,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["6057228","mediasource_6057228",0,1,"",5004448]]},{"id":"6057229","type":"Movie","title":"Christmas in the Air","year":2017,"rating":"G","genres":["TV Movie","Romance","Drama"],"episodes":[["6057229","mediasource_6057229",0,1,"",5133152]]},{"id":"6057240","type":"Movie","title":"Cherished Memories: A Gift to Remember 2","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6057240","mediasource_6057240",0,1,"",5008466]]},{"id":"6057241","type":"Movie","title":"Christmas Homecoming","year":2017,"rating":"TV-G","genres":["Drama","TV Movie","Romance"],"episodes":[["6057241","mediasource_6057241",0,1,"",5105664]]},{"id":"6057242","type":"Movie","title":"Christmas Joy","year":2018,"rating":"TV-G","genres":["Family","TV Movie","Romance"],"episodes":[["6057242","mediasource_6057242",0,1,"",5195232]]},{"id":"6057243","type":"Movie","title":"Christmas in Evergreen: Letters to Santa","year":2018,"rating":"G","genres":["Family","Romance","TV Movie"],"episodes":[["6057243","mediasource_6057243",0,1,"",5284288]]},{"id":"6057246","type":"Movie","title":"The Christmas Note","year":2015,"rating":"Not Rated","genres":["Family","Mystery","TV Movie"],"episodes":[["6057246","mediasource_6057246",0,1,"",5235072]]},{"id":"6057254","type":"Movie","title":"A Christmas to Remember","year":2016,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6057254","mediasource_6057254",0,1,"",5189952]]},{"id":"6057257","type":"Movie","title":"Christmas Festival of Ice","year":2017,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6057257","mediasource_6057257",0,1,"",5046080]]},{"id":"6057322","type":"Movie","title":"A Godwink Christmas","year":2018,"rating":"TV-G","genres":["TV Movie","Family","Romance"],"episodes":[["6057322","mediasource_6057322",0,1,"",5189984]]},{"id":"6057348","type":"Movie","title":"Holiday Date","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6057348","mediasource_6057348",0,1,"",5048480]]},{"id":"6057361","type":"Movie","title":"Holiday Engagement","year":2011,"rating":"NR","genres":["TV Movie","Comedy","Romance"],"episodes":[["6057361","mediasource_6057361",0,1,"",5005501]]},{"id":"6057374","type":"Movie","title":"Love You Like Christmas","year":2016,"rating":"TV-G","genres":["Drama","Romance","TV Movie"],"episodes":[["6057374","mediasource_6057374",0,1,"",5067008]]},{"id":"6057435","type":"Movie","title":"A Rose for Christmas","year":2017,"rating":"TV-G","genres":["Drama","TV Movie","Romance"],"episodes":[["6057435","mediasource_6057435",0,1,"",5040160]]},{"id":"6062857","type":"Movie","title":"Northpole: Open for Christmas","year":2015,"rating":"TV-G","genres":["TV Movie","Family","Fantasy"],"episodes":[["6062857","mediasource_6062857",0,1,"",5193981]]},{"id":"6063088","type":"Movie","title":"A Timeless Christmas","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6063088","mediasource_6063088",0,1,"",5025813]]},{"id":"6063927","type":"Movie","title":"Love, Lights, Hanukkah!","year":2020,"rating":"TV-G","genres":["TV Movie","Drama"],"episodes":[["6063927","mediasource_6063927",0,1,"",5021717]]},{"id":"6064085","type":"Movie","title":"Christmas with the Darlings","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6064085","mediasource_6064085",0,1,"",5030613]]},{"id":"6066717","type":"Movie","title":"The Christmas Gift","year":1986,"rating":"Not Rated","genres":["Drama","Family","TV Movie"],"episodes":[["6066717","mediasource_6066717",0,1,"",5038765]]},{"id":"6066770","type":"Movie","title":"The Christmas Shoes","year":2002,"rating":"NR","genres":["Drama","TV Movie"],"episodes":[["6066770","mediasource_6066770",0,1,"",5415030]]},{"id":"6221757","type":"Movie","title":"Charming Christmas","year":2015,"rating":"G","genres":["TV Movie","Romance","Drama"],"episodes":[["6221757","mediasource_6221757",0,1,"",5101120]]},{"id":"6260912","type":"Movie","title":"Christmas Comes Home to Canaan","year":2011,"rating":"G","genres":["Drama","Family","TV Movie"],"episodes":[["6260912","mediasource_6260912",0,1,"",5198016]]},{"id":"6260914","type":"Movie","title":"The Christmas Heart","year":2012,"rating":"TV-G","genres":["Drama","Family","TV Movie"],"episodes":[["6260914","mediasource_6260914",0,1,"",5198016]]},{"id":"6336078","type":"Movie","title":"Christmas on Honeysuckle Lane","year":2018,"rating":"G","genres":["TV Movie","Romance"],"episodes":[["6336078","mediasource_6336078",0,1,"",6273056]]},{"id":"6349411","type":"Movie","title":"Christmas Song","year":2012,"rating":"G","genres":["Family","Romance","TV Movie"],"episodes":[["6349411","mediasource_6349411",0,1,"",5205440]]},{"id":"6386331","type":"Movie","title":"Time for You to Come Home for Christmas","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6386331","mediasource_6386331",0,1,"",5027022]]},{"id":"6386374","type":"Movie","title":"Christmas by Starlight","year":2020,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["6386374","mediasource_6386374",0,1,"",5221920]]},{"id":"6386376","type":"Movie","title":"Christmas in Rome","year":2019,"rating":"G","genres":["TV Movie","Comedy","Romance"],"episodes":[["6386376","mediasource_6386376",0,1,"",5188000]]},{"id":"6389891","type":"Movie","title":"A Christmas Love Story","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6389891","mediasource_6389891",0,1,"",5169728]]},{"id":"6397143","type":"Movie","title":"One Royal Holiday","year":2020,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["6397143","mediasource_6397143",0,1,"",5203488]]},{"id":"6397208","type":"Movie","title":"Call Me Mrs. Miracle","year":2010,"rating":"PG","genres":["TV Movie","Fantasy","Drama","Family","Comedy"],"episodes":[["6397208","mediasource_6397208",0,1,"",5361932]]},{"id":"6397213","type":"Movie","title":"Catch a Christmas Star","year":2013,"rating":"G","genres":["Family","Romance","TV Movie"],"episodes":[["6397213","mediasource_6397213",0,1,"",5066144]]},{"id":"6398515","type":"Movie","title":"A Princess for Christmas","year":2011,"rating":"PG","genres":["Comedy","Family","TV Movie","Romance","Drama"],"episodes":[["6398515","mediasource_6398515",0,1,"",5449504]]},{"id":"6398628","type":"Movie","title":"A Bride for Christmas","year":2012,"rating":"TV-G","genres":["Romance","Comedy","TV Movie"],"episodes":[["6398628","mediasource_6398628",0,1,"",5235680]]},{"id":"6398886","type":"Movie","title":"Christmas Comes Twice","year":2020,"rating":"TV-G","genres":["Romance","TV Movie","Comedy","Fantasy"],"episodes":[["6398886","mediasource_6398886",0,1,"",5218272]]},{"id":"6398925","type":"Movie","title":"Christmas Waltz","year":2020,"rating":"TV-G","genres":["TV Movie","Romance","Drama"],"episodes":[["6398925","mediasource_6398925",0,1,"",5203392]]},{"id":"6398935","type":"Movie","title":"Christmas in Evergreen: Bells Are Ringing","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6398935","mediasource_6398935",0,1,"",5040107]]},{"id":"6398945","type":"Movie","title":"A Carol Christmas","year":2003,"rating":"TV-G","genres":["Family","Fantasy","Comedy","TV Movie"],"episodes":[["6398945","mediasource_6398945",0,1,"",5035638]]},{"id":"6399326","type":"Movie","title":"Good Morning Christmas!","year":2020,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["6399326","mediasource_6399326",0,1,"",5169440]]},{"id":"6399546","type":"Movie","title":"Help for the Holidays","year":2012,"rating":"G","genres":["Family","Fantasy","TV Movie"],"episodes":[["6399546","mediasource_6399546",0,1,"",4949632]]},{"id":"6400487","type":"Movie","title":"Finding Christmas","year":2013,"rating":"G","genres":["Family","Comedy","Romance","TV Movie"],"episodes":[["6400487","mediasource_6400487",0,1,"",5151488]]},{"id":"6400499","type":"Movie","title":"Five Star Christmas","year":2020,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["6400499","mediasource_6400499",0,1,"",5202944]]},{"id":"6402151","type":"Movie","title":"One Starry Christmas","year":2014,"rating":"G","genres":["TV Movie","Romance"],"episodes":[["6402151","mediasource_6402151",0,1,"",5278347]]},{"id":"6402162","type":"Movie","title":"On the 12th Date of Christmas","year":2020,"rating":"G","genres":["TV Movie","Romance"],"episodes":[["6402162","mediasource_6402162",0,1,"",5203488]]},{"id":"6402197","type":"Movie","title":"A Nashville Christmas Carol","year":2020,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["6402197","mediasource_6402197",0,1,"",5192480]]},{"id":"6402399","type":"Movie","title":"If I Only Had Christmas","year":2020,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["6402399","mediasource_6402399",0,1,"",5040064]]},{"id":"6402680","type":"Movie","title":"A December Bride","year":2016,"rating":"PG","genres":["Romance","TV Movie"],"episodes":[["6402680","mediasource_6402680",0,1,"",5165184]]},{"id":"6402931","type":"Movie","title":"A Christmas Carousel","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6402931","mediasource_6402931",0,1,"",5318560]]},{"id":"6402944","type":"Movie","title":"Christmas She Wrote","year":2020,"rating":"TV-G","genres":["TV Movie","Romance"],"episodes":[["6402944","mediasource_6402944",0,1,"",5211904]]},{"id":"6402951","type":"Movie","title":"Christmas In Evergreen: Tidings of Joy","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6402951","mediasource_6402951",0,1,"",5133195]]},{"id":"6408264","type":"Movie","title":"Mrs. Miracle","year":2009,"rating":"PG","genres":["TV Movie","Comedy","Family","Fantasy","Romance"],"episodes":[["6408264","mediasource_6408264",0,1,"",5240085]]},{"id":"6408900","type":"Movie","title":"Christmas Next Door","year":2017,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["6408900","mediasource_6408900",0,1,"",5195264]]},{"id":"6411423","type":"Movie","title":"Royal New Year's Eve","year":2017,"rating":"TV-G","genres":["Romance","TV Movie","Comedy","Drama"],"episodes":[["6411423","mediasource_6411423",0,1,"",5197269]]},{"id":"6413774","type":"Movie","title":"The Christmas Ornament","year":2013,"rating":"NR","genres":["Romance","TV Movie"],"episodes":[["6413774","mediasource_6413774",0,1,"",5197151]]},{"id":"6414754","type":"Movie","title":"The Christmas House","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6414754","mediasource_6414754",0,1,"",5160192]]},{"id":"6562840","type":"Movie","title":"The Angel Tree","year":2020,"rating":"","genres":["Mystery","TV Movie","Romance"],"episodes":[["6562840","mediasource_6562840",0,1,"",5026855]]},{"id":"6615691","type":"Movie","title":"The National Tree","year":2009,"rating":"TV-G","genres":["Family","Drama","TV Movie"],"episodes":[["6615691","mediasource_6615691",0,1,"",5262816]]},{"id":"6620090","type":"Movie","title":"Christmas in Homestead","year":2016,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6620090","mediasource_6620090",0,1,"",5199104]]},{"id":"6645499","type":"Movie","title":"Never Kiss a Man in a Christmas Sweater","year":2020,"rating":"TV-G","genres":["Romance","Comedy","TV Movie"],"episodes":[["6645499","mediasource_6645499",0,1,"",5123065]]},{"id":"6691303","type":"Movie","title":"Engaging Father Christmas","year":2017,"rating":"TV-G","genres":["TV Movie","Romance","Drama"],"episodes":[["6691303","mediasource_6691303",0,1,"",5124288]]},{"id":"6717346","type":"Movie","title":"Moonlight & Mistletoe","year":2008,"rating":"TV-G","genres":["TV Movie","Drama","Comedy","Romance","Family"],"episodes":[["6717346","mediasource_6717346",0,1,"",5033920]]},{"id":"6723834","type":"Movie","title":"Sound of Christmas","year":2016,"rating":"TV-G","genres":["TV Movie","Drama"],"episodes":[["6723834","mediasource_6723834",0,1,"",5045408]]},{"id":"6807035","type":"Movie","title":"Christmas at Holly Lodge","year":2017,"rating":"G","genres":["Drama","TV Movie","Romance"],"episodes":[["6807035","mediasource_6807035",0,1,"",5176043]]},{"id":"6885760","type":"Movie","title":"Double Holiday","year":2019,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6885760","mediasource_6885760",0,1,"",5015052]]},{"id":"6895229","type":"Movie","title":"A Grandpa for Christmas","year":2007,"rating":"TV-PG","genres":["Drama","TV Movie","Comedy"],"episodes":[["6895229","mediasource_6895229",0,1,"",5106656]]},{"id":"6895231","type":"Movie","title":"Angel in the Family","year":2004,"rating":"NR","genres":["Drama","TV Movie"],"episodes":[["6895231","mediasource_6895231",0,1,"",5280544]]},{"id":"6895233","type":"Movie","title":"Eve's Christmas","year":2004,"rating":"TV-PG","genres":["Drama","TV Movie","Fantasy"],"episodes":[["6895233","mediasource_6895233",0,1,"",5329376]]},{"id":"6895238","type":"Movie","title":"The Sons of Mistletoe","year":2001,"rating":"Not Rated","genres":["Drama","Family","TV Movie"],"episodes":[["6895238","mediasource_6895238",0,1,"",5293724]]},{"id":"6895305","type":"Movie","title":"A Christmas Visitor","year":2002,"rating":"PG-13","genres":["Drama","TV Movie"],"episodes":[["6895305","mediasource_6895305",0,1,"",5047680]]},{"id":"6935182","type":"Movie","title":"A Little Christmas Charm","year":2020,"rating":"TV-G","genres":["Romance","TV Movie"],"episodes":[["6935182","mediasource_6935182",0,1,"",5044480]]},{"id":"6937900","type":"Movie","title":"A Veteran's Christmas","year":2018,"rating":"PG","genres":["TV Movie","Family","Drama"],"episodes":[["6937900","mediasource_6937900",0,1,"",4898602]]},{"id":"6937901","type":"Movie","title":"Trading Christmas","year":2011,"rating":"TV-G","genres":["TV Movie","Family"],"episodes":[["6937901","mediasource_6937901",0,1,"",5206944]]},{"id":"6937902","type":"Movie","title":"Christmas in Angel Falls","year":2017,"rating":"G","genres":["Drama","TV Movie"],"episodes":[["6937902","mediasource_6937902",0,1,"",5105184]]},{"id":"6938118","type":"Movie","title":"Christmas in Montana","year":2019,"rating":"Not Rated","genres":["TV Movie","Romance"],"episodes":[["6938118","mediasource_6938118",0,1,"",4933952]]},{"id":"6939862","type":"Movie","title":"Christmas at the Plaza","year":2019,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["6939862","mediasource_6939862",0,1,"",5191200]]},{"id":"7045145","type":"Movie","title":"The Town Christmas Forgot","year":2010,"rating":"TV-G","genres":["Comedy","TV Movie","Family"],"episodes":[["7045145","mediasource_7045145",0,1,"",5086112]]},{"id":"7220585","type":"Movie","title":"November Christmas","year":2011,"rating":"TV-G","genres":["TV Movie","Drama"],"episodes":[["7220585","mediasource_7220585",0,1,"",5618048]]},{"id":"7318846","type":"Movie","title":"Angels Sing","year":2013,"rating":"PG","genres":["Comedy","Family","Drama"],"episodes":[["7318846","mediasource_7318846",0,1,"",5243675]]},{"id":"7413807","type":"Movie","title":"The Christmas Secret","year":2000,"rating":"G","genres":["Family","Fantasy","Drama","TV Movie"],"episodes":[["7413807","mediasource_7413807",0,1,"",5064993]]},{"id":"7415696","type":"Movie","title":"Heaven Sent","year":2016,"rating":"TV-PG","genres":["Romance","Drama","TV Movie"],"episodes":[["7415696","mediasource_7415696",0,1,"",5435264]]},{"id":"7493088","type":"Movie","title":"Christmas Getaway","year":2017,"rating":"G","genres":["Romance","TV Movie"],"episodes":[["7493088","mediasource_7493088",0,1,"",5215200]]},{"id":"7634963","type":"Movie","title":"A Town Without Christmas","year":2001,"rating":"TV-G","genres":["TV Movie","Family","Drama"],"episodes":[["7634963","mediasource_7634963",0,1,"",5224400]]},{"id":"7635054","type":"Movie","title":"Silent Night","year":2002,"rating":"PG","genres":["Drama","War"],"episodes":[["7635054","mediasource_7635054",0,1,"",5160080]]},{"id":"7791277","type":"Movie","title":"Gift of the Magi","year":2010,"rating":"Not Rated","genres":["Drama","Romance","TV Movie"],"episodes":[["7791277","mediasource_7791277",0,1,"",5116153]]},{"id":"7791683","type":"Movie","title":"The Christmas Pageant","year":2011,"rating":"TV-G","genres":["TV Movie","Family"],"episodes":[["7791683","mediasource_7791683",0,1,"",5206848]]},{"id":"7794428","type":"Movie","title":"An Old Fashioned Christmas","year":2010,"rating":"TV-G","genres":["Drama"],"episodes":[["7794428","mediasource_7794428",0,1,"",5275552]]},{"id":"7901518","type":"Movie","title":"Hitched for the Holidays","year":2012,"rating":"TV-PG","genres":["Romance","TV Movie"],"episodes":[["7901518","mediasource_7901518",0,1,"",5206720]]},{"id":"7901523","type":"Movie","title":"A Christmas Wish","year":2011,"rating":"Not Rated","genres":["TV Movie","Family","Drama","Comedy"],"episodes":[["7901523","mediasource_7901523",0,1,"",5811232]]},{"id":"7901562","type":"Movie","title":"Hats Off to Christmas!","year":2013,"rating":"PG","genres":["TV Movie","Family","Drama","Romance"],"episodes":[["7901562","mediasource_7901562",0,1,"",5285656]]},{"id":"7990069","type":"Movie","title":"Cancel Christmas","year":2011,"rating":"G","genres":["Family","Fantasy","TV Movie"],"episodes":[["7990069","mediasource_7990069",0,1,"",5282848]]}]} \ No newline at end of file