")})),u="$0"==="a".replace(/./,"$0"),d=i("replace"),p=!!/./[d]&&""===/./[d]("a","$0"),f=!a((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,d){var h=i(e),m=!a((function(){var t={};return t[h]=function(){return 7},7!=""[e](t)})),y=m&&!a((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[s]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t}));if(!m||!y||"replace"===e&&(!c||!u||p)||"split"===e&&!f){var g=/./[h],b=n(h,""[e],(function(e,t,n,r,a){return t.exec===o?m&&!a?{done:!0,value:g.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),v=b[0],A=b[1];r(String.prototype,e,v),r(RegExp.prototype,h,2==t?function(e,t){return A.call(e,this,t)}:function(e){return A.call(e,this)})}d&&l(RegExp.prototype[h],"sham",!0)}},6677:function(e,t,n){var r=n(7293);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,a){return e.call(t,n,r,a)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),a=n(7854),i=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(a[e]):r[e]&&r[e][t]||a[e]&&a[e][t]}},1246:function(e,t,n){var r=n(648),a=n(7497),i=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[i]||e["@@iterator"]||a[r(e)]}},647:function(e,t,n){var r=n(7908),a=Math.floor,i="".replace,o=/\$([$&'`]|\d\d?|<[^>]*>)/g,l=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,s,c,u){var d=n+e.length,p=s.length,f=l;return void 0!==c&&(c=r(c),f=o),i.call(u,f,(function(r,i){var o;switch(i.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":o=c[i.slice(1,-1)];break;default:var l=+i;if(0===l)return r;if(l>p){var u=a(l/10);return 0===u?r:u<=p?void 0===s[u-1]?i.charAt(1):s[u-1]+i.charAt(1):r}o=s[l-1]}return void 0===o?"":o}))}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==("undefined"==typeof globalThis?"undefined":o(globalThis))&&globalThis)||r("object"==("undefined"==typeof window?"undefined":o(window))&&window)||r("object"==("undefined"==typeof self?"undefined":o(self))&&self)||r("object"==o(n.g)&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),a=n(7293),i=n(317);e.exports=!r&&!a((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,a=Math.log,i=Math.LN2;e.exports={pack:function(e,o,l){var s,c,u,d=new Array(l),p=8*l-o-1,f=(1<>1,m=23===o?n(2,-24)-n(2,-77):0,y=e<0||0===e&&1/e<0?1:0,g=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,s=f):(s=r(a(e)/i),e*(u=n(2,-s))<1&&(s--,u*=2),(e+=s+h>=1?m/u:m*n(2,1-h))*u>=2&&(s++,u/=2),s+h>=f?(c=0,s=f):s+h>=1?(c=(e*u-1)*n(2,o),s+=h):(c=e*n(2,h-1)*n(2,o),s=0));o>=8;d[g++]=255&c,c/=256,o-=8);for(s=s<0;d[g++]=255&s,s/=256,p-=8);return d[--g]|=128*y,d},unpack:function(e,t){var r,a=e.length,i=8*a-t-1,o=(1<>1,s=i-7,c=a-1,u=e[c--],d=127&u;for(u>>=7;s>0;d=256*d+e[c],c--,s-=8);for(r=d&(1<<-s)-1,d>>=-s,s+=t;s>0;r=256*r+e[c],c--,s-=8);if(0===d)d=1-l;else{if(d===o)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=l}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),a=n(4326),i="".split;e.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==a(e)?i.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),a=n(7674);e.exports=function(e,t,n){var i,o;return a&&"function"==typeof(i=t.constructor)&&i!==n&&r(o=i.prototype)&&o!==n.prototype&&a(e,o),e}},2788:function(e,t,n){var r=n(5465),a=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return a.call(e)}),e.exports=r.inspectSource},2423:function(e,t,n){var r=n(3501),a=n(111),i=n(6656),l=n(3070).f,s=n(9711),c=n(6677),u=s("meta"),d=0,p=Object.isExtensible||function(){return!0},f=function(e){l(e,u,{value:{objectID:"O"+ ++d,weakData:{}}})},h=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!a(e))return"symbol"==o(e)?e:("string"==typeof e?"S":"P")+e;if(!i(e,u)){if(!p(e))return"F";if(!t)return"E";f(e)}return e[u].objectID},getWeakData:function(e,t){if(!i(e,u)){if(!p(e))return!0;if(!t)return!1;f(e)}return e[u].weakData},onFreeze:function(e){return c&&h.REQUIRED&&p(e)&&!i(e,u)&&f(e),e}};r[u]=!0},9909:function(e,t,n){var r,a,i,o=n(8536),l=n(7854),s=n(111),c=n(8880),u=n(6656),d=n(5465),p=n(6200),f=n(3501),h=l.WeakMap;if(o){var m=d.state||(d.state=new h),y=m.get,g=m.has,b=m.set;r=function(e,t){return t.facade=e,b.call(m,e,t),t},a=function(e){return y.call(m,e)||{}},i=function(e){return g.call(m,e)}}else{var v=p("state");f[v]=!0,r=function(e,t){return t.facade=e,c(e,v,t),t},a=function(e){return u(e,v)?e[v]:{}},i=function(e){return u(e,v)}}e.exports={set:r,get:a,has:i,enforce:function(e){return i(e)?a(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!s(t)||(n=a(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),a=n(7497),i=r("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(a.Array===e||o[i]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),a=/#|\.prototype\./,i=function(e,t){var n=l[o(e)];return n==c||n!=s&&("function"==typeof t?r(t):!!t)},o=i.normalize=function(e){return String(e).replace(a,".").toLowerCase()},l=i.data={},s=i.NATIVE="N",c=i.POLYFILL="P";e.exports=i},111:function(e){e.exports=function(e){return"object"==o(e)?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},408:function(e,t,n){var r=n(9670),a=n(7659),i=n(7466),l=n(9974),s=n(1246),c=n(9212),u=function(e,t){this.stopped=e,this.result=t};e.exports=function(e,t,n){var d,p,f,h,m,y,g,b=n&&n.that,v=!(!n||!n.AS_ENTRIES),A=!(!n||!n.IS_ITERATOR),C=!(!n||!n.INTERRUPTED),w=l(t,b,1+v+C),x=function(e){return d&&c(d),new u(!0,e)},k=function(e){return v?(r(e),C?w(e[0],e[1],x):w(e[0],e[1])):C?w(e,x):w(e)};if(A)d=e;else{if("function"!=typeof(p=s(e)))throw TypeError("Target is not iterable");if(a(p)){for(f=0,h=i(e.length);h>f;f++)if((m=k(e[f]))&&m instanceof u)return m;return new u(!1)}d=p.call(e)}for(y=d.next;!(g=y.call(d)).done;){try{m=k(g.value)}catch(e){throw c(d),e}if("object"==o(m)&&m&&m instanceof u)return m}return new u(!1)}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,a,i,o=n(7293),l=n(9518),s=n(8880),c=n(6656),u=n(5112),d=n(1913),p=u("iterator"),f=!1;[].keys&&("next"in(i=[].keys())?(a=l(l(i)))!==Object.prototype&&(r=a):f=!0);var h=null==r||o((function(){var e={};return r[p].call(e)!==e}));h&&(r={}),d&&!h||c(r,p)||s(r,p,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:f}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},8536:function(e,t,n){var r=n(7854),a=n(2788),i=r.WeakMap;e.exports="function"==typeof i&&/native code/.test(a(i))},7023:function(e,t,n){var r=n(7854).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&r(e)}},3009:function(e,t,n){var r=n(7854),a=n(3111).trim,i=n(1361),o=r.parseInt,l=/^[+-]?0[Xx]/,s=8!==o(i+"08")||22!==o(i+"0x16");e.exports=s?function(e,t){var n=a(String(e));return o(n,t>>>0||(l.test(n)?16:10))}:o},30:function(e,t,n){var r,a=n(9670),i=n(6048),o=n(748),l=n(3501),s=n(490),c=n(317),u=n(6200)("IE_PROTO"),d=function(){},p=function(e){return"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},r]}]}}),e.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}}),e.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},i={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},a=[e.BE,r,n],o=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),i,{cN:"string",c:a,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=o,i.c=o,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:o}}),e.registerLanguage("php",function(e){var t={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},r={cN:"meta",b:/<\?(php)?|\?>/},i={cN:"string",c:[e.BE,r],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[r]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},r,{cN:"keyword",b:/\$this\b/},t,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",t,e.CBCM,i,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},i,n]}}),e.registerLanguage("python",function(e){var t={cN:"meta",b:/^(>>>|\.\.\.) /},r={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[t],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[t],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},i={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},n={cN:"params",b:/\(/,e:/\)/,c:["self",t,i,r]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[t,i,r,e.HCM,{v:[{cN:"function",bK:"def",r:10},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,n,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}}),e.registerLanguage("scss",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",r={cN:"variable",b:"(\\$"+t+")\\b"},i={cN:"number",b:"#[0-9A-Fa-f]+"};return{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:!0,i:"[^\\s]",starts:{eW:!0,eE:!0,c:[i,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"meta",b:"!important"}]}},{cI:!0,i:"[=/|']",c:[e.CLCM,e.CBCM,{cN:"selector-id",b:"\\#[A-Za-z0-9_-]+",r:0},{cN:"selector-class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"selector-attr",b:"\\[",e:"\\]",i:"$"},{cN:"selector-tag",b:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",r:0},{b:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{b:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},r,{cN:"attribute",b:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",i:"[^\\s]"},{b:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"
+},{b:":",e:";",c:[r,i,e.CSSNM,e.QSM,e.ASM,{cN:"meta",b:"!important"}]},{b:"@",e:"[{;]",k:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",c:[r,e.QSM,e.ASM,i,e.CSSNM,{b:"\\s[A-Za-z0-9_.-]+",r:0}]}]}}),e.registerLanguage("typescript",function(e){var t={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void"};return{aliases:["ts"],k:t,c:[{cN:"meta",b:/^\s*['"]use strict['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM],r:0},{cN:"function",b:"function",e:/[\{;]/,eE:!0,k:t,c:["self",e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:[e.CLCM,e.CBCM],i:/["'\(]/}],i:/%/,r:0},{bK:"constructor",e:/\{/,eE:!0},{b:/module\./,k:{built_in:"module"},r:0},{bK:"module",e:/\{/,eE:!0},{bK:"interface",e:/\{/,eE:!0,k:"interface extends"},{b:/\$[(.]/},{b:"\\."+e.IR,r:0}]}}),e.registerLanguage("yaml",function(e){var t={literal:"{ } true false yes no Yes No True False null"},r="^[ \\-]*",i="[a-zA-Z_][\\w\\-]*",n={cN:"attr",v:[{b:r+i+":"},{b:r+'"'+i+'":'},{b:r+"'"+i+"':"}]},a={cN:"template-variable",v:[{b:"{{",e:"}}"},{b:"%{",e:"}"}]},o={cN:"string",r:0,v:[{b:/'/,e:/'/},{b:/"/,e:/"/}],c:[e.BE,a]};return{cI:!0,aliases:["yml","YAML","yaml"],c:[n,{cN:"meta",b:"^---s*$",r:10},{cN:"string",b:"[\\|>] *$",rE:!0,c:o.c,e:n.v[0].b},{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0,r:0},{cN:"type",b:"!!"+e.UIR},{cN:"meta",b:"&"+e.UIR+"$"},{cN:"meta",b:"\\*"+e.UIR+"$"},{cN:"bullet",b:"^ *-",r:0},o,e.HCM,e.CNM],k:t}}),e}),function(){"use strict";function e(e){function t(t,r){this.element=t,this.options=e.extend({},a,r),this._create()}function r(e){return e.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")}var i="searcher",n="plugin_"+i,a={itemSelector:"tbody > tr",textSelector:"td",inputSelector:"",caseSensitive:!1,toggle:function(t,r){e(t).toggle(r)}};t.prototype={dispose:function(){this._$input.unbind("."+i);var e=this.options,t=e.toggle||a.toggle;this._$element.find(e.itemSelector).each(function(){t(this,!0)})},filter:function(t){this._lastValue=t;var i=this.options,n=i.textSelector,o=i.toggle||a.toggle,s="gm"+(i.caseSensitive?"":"i"),l=new RegExp("("+r(t)+")",s);this._$element.find(i.itemSelector).each(function(){var t=e(this),r=n?t.find(n):t,i=!1;r=r.each(function(){return i=i||!!e(this).text().match(l),!i}),o(this,i)})},_create:function(){var t=this.options;this._$element=e(this.element),this._fn=e.proxy(this._onValueChange,this);var r="input."+i+" change."+i+" keyup."+i;this._$input=e(t.inputSelector).bind(r,this._fn),this._lastValue=null;var n=t.toggle||a.toggle;this._$element.find(t.itemSelector).each(function(){n(this,!0)})},_onValueChange:function(){var e=this._$input.val();e!==this._lastValue&&this.filter(e)}},e.fn[i]=function(r){var i=Array.prototype.slice.call(arguments,1);return this.each(function(){var a=e.data(this,n),o=typeof r;"string"===o&&a?(a[r].apply(a,i),"dispose"===r&&e.removeData(this,n)):"object"===o&&(a?e.extend(a.options,r):e.data(this,n,new t(this,r)))})}}"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}.call(this),function(e){e.fn.stupidtable=function(t){return this.each(function(){var r=e(this);t=t||{},t=e.extend({},e.fn.stupidtable.default_sort_fns,t),r.data("sortFns",t),r.on("click.stupidtable","thead th",function(){e(this).stupidsort()})})},e.fn.stupidsort=function(t){var r=e(this),i=0,n=e.fn.stupidtable.dir,a=r.closest("table"),o=r.data("sort")||null;if(null!==o){r.parents("tr").find("th").slice(0,e(this).index()).each(function(){var t=e(this).attr("colspan")||1;i+=parseInt(t,10)});var s;return 1==arguments.length?s=t:(s=t||r.data("sort-default")||n.ASC,r.data("sort-dir")&&(s=r.data("sort-dir")===n.ASC?n.DESC:n.ASC)),a.trigger("beforetablesort",{column:i,direction:s}),a.css("display"),setTimeout(function(){var t=[],l=a.data("sortFns")[o],c=a.children("tbody").children("tr");c.each(function(r,n){var a=e(n).children().eq(i),o=a.data("sort-value");"undefined"==typeof o&&(o=a.text(),a.data("sort-value",o)),t.push([o,n])}),t.sort(function(e,t){return l(e[0],t[0])}),s!=n.ASC&&t.reverse(),c=e.map(t,function(e){return e[1]}),a.children("tbody").append(c),a.find("th").data("sort-dir",null).removeClass("sorting-desc sorting-asc"),r.data("sort-dir",s).addClass("sorting-"+s),a.trigger("aftertablesort",{column:i,direction:s}),a.css("display")},10),r}},e.fn.updateSortVal=function(t){var r=e(this);return r.is("[data-sort-value]")&&r.attr("data-sort-value",t),r.data("sort-value",t),r},e.fn.stupidtable.dir={ASC:"asc",DESC:"desc"},e.fn.stupidtable.default_sort_fns={int:function(e,t){return parseInt(e,10)-parseInt(t,10)},float:function(e,t){return parseFloat(e)-parseFloat(t)},string:function(e,t){return e.localeCompare(t)},"string-ins":function(e,t){return e=e.toLocaleLowerCase(),t=t.toLocaleLowerCase(),e.localeCompare(t)}}}(jQuery);var column=$("#file-count").index(),striped_bg=$(".table-striped > tbody > tr:nth-of-type(odd)").css("background-color"),hover_bg,stripedRows=function(){$("#listr-table").has(".table-striped")&&($("tbody tr").css("background-color","inherit"),$("tbody tr:not(.hidden-xs-up):even").css("background-color",striped_bg))};stripedRows(),$(".table-hover>tbody>tr").bind({mouseenter:function(e){hover_bg||($(this).removeAttr("style"),hover_bg=$(this).css("background-color")),$(this).css("background-color",hover_bg)},mouseleave:function(e){stripedRows()}});var decodeFile=function(e){try{return decodeURIComponent(e)}catch(t){return e}};"undefined"!=typeof Dropbox&&$(".save-dropbox").click(function(e){e.preventDefault();var t=$(this).get(0).href;Dropbox.save(t)});var K,Keyboard={elements:{hidden:$("tr.hidden-xs-up"),keyboard:$("#viewer-modal"),search:$("#listr-search"),viewer:$("#viewer-modal")},init:function(){K=this.elements,this.events()},events:function(){$(document).bind("keydown",function(e){Keyboard.revealFiles()}).bind("keyup",function(){Keyboard.hideFiles()}),$(document).bind("keyup",function(e){Keyboard.playerControls()}),$(document).bind("keyup",function(e){Keyboard.focusSearch()})},revealFiles:function(){event.altKey&&($(K.hidden).addClass("reveal").removeClass("hidden-xs-up"),stripedRows())},hideFiles:function(){$(K.hidden).removeClass("reveal").addClass("hidden-xs-up"),stripedRows()},focusSearch:function(){K.viewer.hasClass("in")||70===event.which&&($(K.search).focus(),$(document).scrollTop(0))},playerControls:function(){K.viewer.hasClass("in")&&"undefined"!=typeof player&&(70===event.which&&(player.requestFullscreen?player.requestFullscreen():player.msRequestFullscreen?player.msRequestFullscreen():player.mozRequestFullScreen?player.mozRequestFullScreen():player.webkitRequestFullscreen&&player.webkitRequestFullscreen()),32===event.which&&(event.preventDefault(),player.paused===!1?player.pause():player.play()),playerEnd=player.seekable.end(0),37===event.which&&player.currentTime>=1&&(player.currentTime-=1),39===event.which&&player.currentTime<=playerEnd-1&&(player.currentTime+=1),37===event.which&&event.shiftKey&&(player.currentTime=0),38===event.which&&player.volume<1&&(player.volume+=.1),38===event.which&&event.shiftKey&&(player.volume=1),40===event.which&&player.volume>0&&(player.volume-=.1),40===event.which&&event.shiftKey&&(player.volume=0))}},M,Modal={elements:{viewer:$("#viewer-modal"),modal_body:$(".modal-body"),modal_title:$(".modal-title"),file_meta:$("#file-meta"),full_view:$(".fullview"),button:$(".fullview").data("button"),dropbox:$(".save-dropbox"),email:$(".email-link"),twitter:$(".twitter-link"),facebook:$(".facebook-link"),google:$(".google-link")},init:function(){M=this.elements,this.events()},events:function(){$("#viewer-modal").on("show.bs.modal",function(e){var t=$(e.relatedTarget),r=t.data("type");"text"===r?Modal.setTextModal(t):"source"===r?Modal.setSourceModal(t):"audio"===r?Modal.setAudioModal(t):"video"===r?Modal.setVideoModal(t):"image"===r?Modal.setImageModal(t):"website"===r?Modal.setWebModal(t):"pdf"===r?Modal.setPdfModal(t):"virtual"===r?Modal.setVirtualModal(t):"flash"===r?Modal.setFlashModal(t):"quicktime"===r&&Modal.setQuicktimeModal(t)}),$(M.viewer).on("hide.bs.modal",function(){Modal.stopPlayer()}),$(M.viewer).on("hidden.bs.modal",function(){Modal.reset()})},setAudioModal:function(e){var t={open:null,close:null,file:e.attr("href"),uri:e.get(0).href,size:e.data("size")};t.file&&(M.modal_body.html('Your browser does not support the audio element. '),Modal.setMeta(t),M.viewer.modal("show"))},setVideoModal:function(e){var t={open:null,close:null,file:e.attr("href"),uri:e.get(0).href,size:e.data("size")};t.file&&(M.modal_body.html('Video format or MIME type is not supported '),Modal.setMeta(t),M.viewer.modal("show"))},setImageModal:function(e){var t={open:null,close:null,file:e.attr("href"),uri:e.get(0).href,size:e.data("size")};t.file&&(M.modal_body.html(' '),Modal.setMeta(t),M.viewer.modal("show"))},setWebModal:function(e){var t={open:' ',close:"
",file:e.attr("href"),uri:e.get(0).href,size:e.data("size")};t.file&&(t.html='',M.modal_body.html(t.open+t.html+t.close),Modal.setMeta(t),M.viewer.modal("show"))},setPdfModal:function(e){var t={open:'',close:"
",file:e.attr("href"),uri:e.get(0).href,size:e.data("size")};t.file&&(t.html='',M.modal_body.html(t.open+t.html+t.close),Modal.setMeta(t),M.viewer.modal("show"))},setFlashModal:function(e){var t={open:'',close:"
",file:e.attr("href"),uri:e.get(0).href,size:e.data("size")};t.file&&(t.html=' ',M.modal_body.html(t.open+t.html+t.close),Modal.setMeta(t),M.viewer.modal("show"))},setQuicktimeModal:function(e){var t={open:'',close:"
",file:e.attr("href"),uri:e.get(0).href,size:e.data("size")};t.html='',close:"",file:e.attr("href"),uri:e.data("url"),size:e.data("url"),id:e.data("id")};t.file.endsWith(".soundcloud")?(t.open='',t.html='
'):t.file.endsWith(".flickr")?(t.open='
',t.html='
'):t.file.endsWith("vimeo")?(t.open='
',t.html='
'):t.file.endsWith("youtube")&&(t.open='
',t.html='
'),M.modal_body.html(t.open+t.html+t.close),Modal.setMeta(t),M.viewer.modal("show")},setTextModal:function(e){var t={open:'
',close:"
",file:e.attr("href"),uri:e.get(0).href,size:e.data("size")};t.file&&$.ajax(t.file,{dataType:"text",success:function(e){M.modal_body.html(t.open,t.close),$("#text").text(decodeFile(e)),Modal.setMeta(t)}}).done(function(){$(M.viewer).modal("show")})},setSourceModal:function(e){var t=e.attr("href")[0].split(".").pop(),r={open:'
',close:"
",file:e.attr("href"),uri:e.get(0).href,size:e.data("size"),highlight:e.data("highlight")};r.file&&$.ajax(r.file,{dataType:"text",success:function(e){M.modal_body.html(r.open,r.close),$("#source").text(decodeFile(e)),Modal.setMeta(r),$("#source").each(function(e,t){"undefined"!=typeof hljs&&hljs.highlightBlock(t);var r=$("code").css("background-color");$("pre").css("background-color",r)})}}).done(function(){M.viewer.modal("show")})},setMeta:function(e){M.full_view.attr("href",e.file),M.modal_title.text(decodeFile(e.file)),meta="undefined"!=typeof e.size?e.size:null,M.file_meta.text(meta),M.dropbox.attr("href",e.file),M.email.attr("href","mailto:?body="+e.uri),M.twitter.attr("href","http://twitter.com/share?url="+e.uri),M.facebook.attr("href","http://www.facebook.com/sharer/sharer.php?u="+e.uri),M.google.attr("href","https://plus.google.com/share?url="+e.uri)},stopPlayer:function(){var e=document.getElementById("player");e&&(e.pause(),e.src="")},reset:function(){$(".highlight").addClass("hidden-xs-up"),M.modal_body.empty()}},S,Search={elements:{input:$("#listr-search"),table:$("#listr-table")},init:function(){S=this.elements,this.events(),$(S.table).searcher({inputSelector:"#listr-search"})},events:function(){$(S.input).keyup(function(e){Search.clearInput()})},clearInput:function(){27==event.keyCode&&(""===S.input.val()?S.input.blur():S.input.val(""))}};if(jQuery().stupidtable)var table=$("#listr-table").stupidtable();$(function(){Keyboard.init(),Modal.init(),jQuery().searcher&&Search.init()});
\ No newline at end of file
diff --git a/build/static/js/main.4c186c3c.chunk.js b/build/static/js/main.4c186c3c.chunk.js
new file mode 100644
index 0000000000000000000000000000000000000000..8e308602ebd71be9be91c837033bf490cc0db723
--- /dev/null
+++ b/build/static/js/main.4c186c3c.chunk.js
@@ -0,0 +1,2 @@
+(this["webpackJsonplibdrive-web"]=this["webpackJsonplibdrive-web"]||[]).push([[0],{114:function(e){e.exports=JSON.parse('{"a":"1.4.7"}')},186:function(e,t,n){},188:function(e,t,n){},189:function(e,t,n){},190:function(e,t,n){},192:function(e,t,n){},193:function(e,t,n){},194:function(e,t,n){"use strict";n.r(t);var a=n(8),r=n(0),o=n.n(r),i=n(20),s=n.n(i),c=n(15),l=n(27),d=n(241),u=n(253),h=n(9),p=n(10),m=n(6),j=n(11),b=n(12),g=n(228),f=n(141),O=n(232),v=n(233),x=n(115),w=n.n(x),y=(n(39),n(1)),S=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={menuAnchor:!1},a.handleClick=a.handleClick.bind(Object(m.a)(a)),a.handleClose=a.handleClose.bind(Object(m.a)(a)),a}return Object(p.a)(n,[{key:"handleClick",value:function(e){this.setState({menuAnchor:e.currentTarget})}},{key:"handleClose",value:function(e){this.setState({menuAnchor:!1})}},{key:"render",value:function(){var e=this.props,t=e.accounts,n=e.ui_config,a=Object(y.jsx)(w.a,{});return t&&t.pic&&(t.pic.includes("http")||t.pic.includes("www"))&&(a=Object(y.jsx)("img",{src:t.pic,width:"32px",alt:"profile-pic"})),Object(y.jsxs)("div",{className:"AccountMenu",children:[Object(y.jsx)(g.a,{"aria-label":"more","aria-controls":"account-menu","aria-haspopup":"true",onClick:this.handleClick,children:a}),Object(y.jsxs)(f.a,{id:"account-menu",anchorEl:this.state.menuAnchor,anchorOrigin:{vertical:"top",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},keepMounted:!0,open:Boolean(this.state.menuAnchor),onClose:this.handleClose,children:[(n.custom_button||{}).text?Object(y.jsxs)("div",{children:[Object(y.jsx)(O.a,{}),Object(y.jsx)("a",{href:n.custom_button.url,target:"__blank",className:"no_decoration_link",children:Object(y.jsx)(v.a,{onClick:this.handleClose,children:n.custom_button.text})})]}):null,Object(y.jsx)(c.b,{to:"/settings",className:"no_decoration_link",children:Object(y.jsx)(v.a,{onClick:this.handleClose,children:"Settings"})}),Object(y.jsx)(c.b,{to:"/logout",className:"no_decoration_link",children:Object(y.jsx)(v.a,{onClick:this.handleClose,children:"Logout"})})]})]})}}]),n}(r.Component),C=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={auth:window.sessionStorage.getItem("auth")||window.localStorage.getItem("auth"),server:window.sessionStorage.getItem("server")||window.localStorage.getItem("server")},a}return Object(p.a)(n,[{key:"componentDidMount",value:function(){window.localStorage.getItem("_VERSION")||window.localStorage.setItem("_VERSION",Pt.a),window.localStorage.getItem("_VERSION")!==Pt.a&&("caches"in window&&(caches.keys().then((function(e){e.forEach((function(e){caches.delete(e)}))})),window.location.reload(!0)),window.localStorage.setItem("_VERSION",Pt.a))}},{key:"render",value:function(){var e=this.state,t=e.auth,n=e.server;return t&&n?Object(y.jsx)(l.a,{to:"/browse"},we()):Object(y.jsx)(l.a,{to:"/login"},we())}}]),n}(r.Component),k=n(234),_=n(13),I=n(19),N=n.n(I),B=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={auth:window.sessionStorage.getItem("auth")||window.localStorage.getItem("auth")||"0",isLoaded:!1,metadata:{},server:window.sessionStorage.getItem("server")||window.localStorage.getItem("server")||window.location.origin,starred_lists:JSON.parse(window.localStorage.getItem("starred_lists")||"[]"),ui_config:JSON.parse(window.localStorage.getItem("ui_config")||window.sessionStorage.getItem("ui_config")||"{}")},a}return Object(p.a)(n,[{key:"componentDidMount",value:function(){var e=this,t=this.state,n=t.auth,a=t.server,r=t.starred_lists,o=t.ui_config;n&&a||this.props.history.push("/logout");var i="".concat(a,"/api/v1/metadata"),s="?a=".concat(n,"&r=0:").concat(o.range||"16","&s=popularity-des&rmdup=true");N.a.get(i+s).then((function(t){for(var n=t.data.content,a=r.length-1;a>=0;a--)r[a].categoryInfo.pinned&&n.unshift(r[a]);e.setState({isLoaded:!0,metadata:n})})).catch((function(t){if(console.error(t),t.response){var n=t.response.data;401===n.code?_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"Login",confirmButtonColor:Dt.palette.success.main}).then((function(t){t.isConfirmed&&e.props.history.push("/logout")})):a?_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(t){t.isConfirmed?e.props.history.push("/logout"):t.isDismissed&&location.reload()})):e.props.history.push("/logout")}else t.request&&(a?_.a.fire({title:"Error!",text:"libDrive could not communicate with the server! Is '".concat(a,"' the correct address?"),icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(t){t.isConfirmed?e.props.history.push("/logout"):t.isDismissed&&location.reload()})):e.props.history.push("/logout"))}))}},{key:"render",value:function(){var e=this.state,t=e.isLoaded,n=e.metadata;return t?Object(y.jsxs)("div",{className:"Browse",children:[Object(y.jsx)(Ue,Object(a.a)({},this.props)),Object(y.jsx)(ue,{metadata:n}),Object(y.jsx)(ve,{})]}):Object(y.jsx)("div",{className:"Loading",children:Object(y.jsx)(k.a,{})})}}]),n}(r.Component),T=n(235),D=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={menuAnchor:!1},a.handleClick=a.handleClick.bind(Object(m.a)(a)),a.handleClose=a.handleClose.bind(Object(m.a)(a)),a}return Object(p.a)(n,[{key:"handleClick",value:function(e){this.setState({menuAnchor:e.currentTarget})}},{key:"handleClose",value:function(e){this.setState({menuAnchor:!1})}},{key:"render",value:function(){var e=this,t=this.props.categories,n=JSON.parse(window.localStorage.getItem("starred_lists")||"[]");return Object(y.jsxs)("div",{className:"Browse",style:{marginRight:"15px"},children:[Object(y.jsx)(T.a,{"aria-controls":"browse-menu","aria-haspopup":"true",onClick:this.handleClick,children:"Browse"}),Object(y.jsxs)(f.a,{id:"browse-menu",anchorEl:this.state.menuAnchor,keepMounted:!0,anchorOrigin:{vertical:"top",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},open:Boolean(this.state.menuAnchor),onClose:this.handleClose,children:[Object(y.jsx)(c.b,{to:"/",className:"no_decoration_link",children:Object(y.jsx)(v.a,{onClick:this.handleClose,children:"Home Page"})}),Object(y.jsx)(O.a,{}),t.length?t.map((function(t){return Object(y.jsx)(c.b,{to:"/browse/".concat(t.name),className:"no_decoration_link",children:Object(y.jsx)(v.a,{onClick:e.handleClose,children:t.name})},we())})):null,n.length?Object(y.jsxs)("div",{children:[Object(y.jsx)(O.a,{}),Object(y.jsx)(c.b,{to:"/starred",className:"no_decoration_link",children:Object(y.jsx)(v.a,{onClick:this.handleClose,children:"Starred Lists"})})]}):null]})]})}}]),n}(r.Component),E=n(121),L=n.n(E),R=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var r;return Object(h.a)(this,n),(r=t.call(this,e)).state=Object(a.a)({menuAnchor:!1},e.state),r.handleClick=r.handleClick.bind(Object(m.a)(r)),r.handleClose=r.handleClose.bind(Object(m.a)(r)),r.handleSeason=r.handleSeason.bind(Object(m.a)(r)),r}return Object(p.a)(n,[{key:"handleClick",value:function(e){this.setState({menuAnchor:e.currentTarget})}},{key:"handleClose",value:function(){this.setState({menuAnchor:!1})}},{key:"handleSeason",value:function(e){e.preventDefault();for(var t=this.state,n=t.auth,a=t.metadata,r=t.server,o=0;o
1?Object(y.jsx)(O.a,{}):null})]},we())})):null,this.props.tv?Object(y.jsxs)("div",{children:[Object(y.jsx)(O.a,{}),Object(y.jsx)(v.a,{onClick:this.handleSeason,children:"Entire Season"})]}):null]})]})}}]),n}(r.Component),A=n(258),M=n(65),P=n(257),J=n(236),U=n(126),q=n.n(U),W=n(125),F=n.n(W),K=n(124),V=n.n(K),z=n(123),H=n.n(z),G=n(129),Y=n.n(G),X=n(130),Q=n.n(X),$=n(128),Z=n.n($),ee=n(61),te=n.n(ee),ne=n(93),ae=n(140),re=n(231),oe=n(196),ie=n(239),se=n(237),ce=n(238),le=n(127),de=n.n(le),ue=(n(186),function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={currentEditing:null,hide:e.hide||!1,isAndroid:/(android)/i.test(navigator.userAgent||navigator.vendor||window.opera),isIOS:/iPad|iPhone|iPod/.test(navigator.userAgent||navigator.vendor||window.opera)&&!window.MSStream,isEditOpen:!1,metadata:a.props.metadata,server:window.sessionStorage.getItem("server")||window.localStorage.getItem("server")||window.location.origin,star:e.star},a.handleStar=a.handleStar.bind(Object(m.a)(a)),a.handleStarReset=a.handleStarReset.bind(Object(m.a)(a)),a.handleStarImport=a.handleStarImport.bind(Object(m.a)(a)),a.handleStarExport=a.handleStarExport.bind(Object(m.a)(a)),a.handlePin=a.handlePin.bind(Object(m.a)(a)),a.handleEditOpen=a.handleEditOpen.bind(Object(m.a)(a)),a.handleEditClose=a.handleEditClose.bind(Object(m.a)(a)),a.handleEditDrop=a.handleEditDrop.bind(Object(m.a)(a)),a.handleEditSave=a.handleEditSave.bind(Object(m.a)(a)),a.handleScroll=a.handleScroll.bind(Object(m.a)(a)),a}return Object(p.a)(n,[{key:"handleStar",value:function(e,t){var n=this.state.metadata,a=JSON.parse(window.localStorage.getItem("starred_lists")||"[]");try{var r=a.findIndex((function(e){return e.id==t.id})),o=a[r].children.findIndex((function(t){return t.id==e.id})),i=n.findIndex((function(e){return e.id==t.id})),s=n[i].children.findIndex((function(t){return t.id==e.id}));a[r].children.splice(o,1),n[i].children.splice(s,1),window.localStorage.setItem("starred_lists",JSON.stringify(a)),this.setState({metadata:n})}catch(c){_.a.fire({title:"Error!",text:"Your starred list seems to be corrupted!",icon:"error",confirmButtonText:"Reset",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Ignore",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(e){e.isConfirmed&&(window.localStorage.setItem("starred_lists","[]"),location.reload())}))}}},{key:"handleStarReset",value:function(e){var t=this,n=this.state.metadata;_.a.fire({title:"Warning!",text:"Are you sure you want to delete this starred list?",icon:"warning",confirmButtonText:"Delete",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"No",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(a){if(a.isConfirmed){var r=JSON.parse(window.localStorage.getItem("starred_lists")||"[]");1==r.length?(r.shift(),n.shift()):(r.splice(e,1),n.splice(e,1)),window.localStorage.setItem("starred_lists",JSON.stringify(r)),t.setState({metadata:n})}}))}},{key:"handleStarImport",value:function(e){var t=this;if(e.target.files.length){var n=e.target.files[0],a=new FileReader;a.onload=function(n){var a=JSON.parse(window.localStorage.getItem("starred_lists")||"[]"),r=JSON.parse(n.target.result),o=parseInt(e.target.id.replace("file-input-",""));a[o].children=r.children,window.localStorage.setItem("starred_lists",JSON.stringify(a));var i=t.state.metadata;i.length&&"Starred"==i[o].type&&(i[o].children=r.children,t.setState({metadata:i}))},a.readAsText(n)}}},{key:"handleStarExport",value:function(e){var t=JSON.parse(window.localStorage.getItem("starred_lists")||"[]")[e],n=new Blob([JSON.stringify(t)],{type:"application/json"}),a=document.createElement("a");a.href=window.URL.createObjectURL(n),a.download="libdrive-starred-".concat(t.name,"-").concat(+new Date,".json"),a.click()}},{key:"handlePin",value:function(e,t){var n=JSON.parse(window.localStorage.getItem("starred_lists")||"[]");t?(n[e].categoryInfo.pinned=!0,window.localStorage.setItem("starred_lists",JSON.stringify(n)),this.setState({metadata:n})):(n[e].categoryInfo.pinned=!1,window.localStorage.setItem("starred_lists",JSON.stringify(n)),this.setState({metadata:n}))}},{key:"handleEditOpen",value:function(e){this.setState({currentEditing:e,isEditOpen:!0})}},{key:"handleEditClose",value:function(){var e=JSON.parse(window.localStorage.getItem("starred_lists")||"[]");this.setState({currentEditing:null,isEditOpen:!1,metadata:e})}},{key:"handleEditDrop",value:function(e){var t=e.removedIndex,n=e.addedIndex,a=this.state,r=a.metadata,o=a.currentEditing,i=r[o].children;r[o].children=Object(ae.a)(i,t,n),this.setState({metadata:r})}},{key:"handleEditSave",value:function(){var e=this.state.metadata;window.localStorage.setItem("starred_lists",JSON.stringify(e)),this.setState({currentEditing:null,isEditOpen:!1})}},{key:"handleScroll",value:function(e,t){document.getElementsByClassName("carousel__items")[e].scrollLeft+=t}},{key:"render",value:function(){var e=this,t=this.state,n=t.currentEditing,a=t.hide,r=t.isAndroid,o=t.isIOS,i=t.isEditOpen,s=t.metadata,l=t.server;return t.star?Object(y.jsxs)("div",{className:"Carousel",style:{paddingTop:"3%"},children:[s.length?s.map((function(t,n){return t.children.length||!a?Object(y.jsxs)("div",{className:"carousel__category",style:{margin:"0 auto 0 auto"},children:[Object(y.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center"},children:Object(y.jsxs)("div",{style:{width:"100%"},children:[Object(y.jsxs)("div",{style:{float:"left",display:"flex",justifyContent:"center",alignItems:"center"},children:[Object(y.jsx)(c.b,{id:"".concat(t.categoryInfo.name),to:"#".concat(t.categoryInfo.name),className:"carousel__category__title no_decoration_link",children:t.categoryInfo.name}),Object(y.jsx)(A.a,{title:"Edit",placement:"top",children:Object(y.jsx)(g.a,{color:"primary",onClick:function(){return e.handleEditOpen(n)},style:{marginLeft:"20px"},children:Object(y.jsx)(H.a,{})})}),Object(y.jsx)(A.a,{title:"Delete",placement:"top",children:Object(y.jsx)(g.a,{color:"primary",onClick:function(){return e.handleStarReset(n)},children:Object(y.jsx)(V.a,{})})})]}),Object(y.jsxs)("div",{style:{float:"right",display:"flex",justifyContent:"center",alignItems:"center"},children:[Object(y.jsx)("input",{id:"file-input-".concat(n),hidden:!0,onChange:e.handleStarImport,type:"file"}),Object(y.jsx)("label",{htmlFor:"file-input-".concat(n),children:Object(y.jsx)(A.a,{title:"Upload",placement:"top",children:Object(y.jsx)(g.a,{color:"primary",children:Object(y.jsx)(F.a,{})})})}),Object(y.jsx)(A.a,{title:"Export",placement:"top",children:Object(y.jsx)(g.a,{color:"primary",onClick:function(){return e.handleStarExport(n)},children:Object(y.jsx)(q.a,{})})}),t.categoryInfo.pinned?Object(y.jsx)(A.a,{title:"Unpin",placement:"top",children:Object(y.jsx)(g.a,{color:"primary",onClick:function(){return e.handlePin(n,!1)},children:Object(y.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",enableBackground:"new 0 0 24 24",height:"24px",viewBox:"0 0 24 24",width:"24px",fill:Dt.palette.primary.main,children:[Object(y.jsx)("g",{children:Object(y.jsx)("rect",{fill:"none",height:"24",width:"24"})}),Object(y.jsx)("g",{children:Object(y.jsx)("path",{d:"M16,9V4l1,0c0.55,0,1-0.45,1-1v0c0-0.55-0.45-1-1-1H7C6.45,2,6,2.45,6,3v0 c0,0.55,0.45,1,1,1l1,0v5c0,1.66-1.34,3-3,3h0v2h5.97v7l1,1l1-1v-7H19v-2h0C17.34,12,16,10.66,16,9z",fillRule:"evenodd"})})]})})}):Object(y.jsx)(A.a,{title:"Pin",placement:"top",children:Object(y.jsx)(g.a,{color:"primary",onClick:function(){return e.handlePin(n,!0)},children:Object(y.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",enableBackground:"new 0 0 24 24",height:"24px",viewBox:"0 0 24 24",width:"24px",fill:Dt.palette.primary.main,children:[Object(y.jsx)("g",{children:Object(y.jsx)("rect",{fill:"none",height:"24",width:"24"})}),Object(y.jsx)("g",{children:Object(y.jsx)("path",{d:"M14,4v5c0,1.12,0.37,2.16,1,3H9c0.65-0.86,1-1.9,1-3V4H14 M17,2H7C6.45,2,6,2.45,6,3c0,0.55,0.45,1,1,1c0,0,0,0,0,0l1,0v5 c0,1.66-1.34,3-3,3v2h5.97v7l1,1l1-1v-7H19v-2c0,0,0,0,0,0c-1.66,0-3-1.34-3-3V4l1,0c0,0,0,0,0,0c0.55,0,1-0.45,1-1 C18,2.45,17.55,2,17,2L17,2z"})})]})})})]})]})}),Object(y.jsx)("div",{className:"carousel__items",children:t.children.length?t.children.map((function(n){return Object(y.jsx)("div",{children:Object(y.jsxs)("figure",{className:"carousel__item__figure",children:[Object(y.jsx)(c.b,{to:"/view/".concat(n.id),children:Object(y.jsx)("img",{src:n.posterPath||"".concat(l,"/api/v1/image/poster?text=").concat(n.title,"&extention=jpeg"),className:"carousel__item__poster",alt:n.title},we())},we()),Object(y.jsx)(M.a,{className:"carousel__item__title",children:n.title}),Object(y.jsx)("div",{style:{display:"flex",justifyContent:"center"},children:Object(y.jsx)(g.a,{style:{padding:"2px"},onClick:function(){return e.handleStar(n,t)},children:Object(y.jsx)(te.a,{})})})]},we())})})):null})]},we()):null})):null,i?Object(y.jsxs)(P.a,{onClose:this.handleEditClose,"aria-labelledby":"simple-dialog-title",fullWidth:!0,maxWidth:"md",open:i||!1,children:[Object(y.jsx)(J.a,{id:"simple-dialog-title",children:s[n].categoryInfo.name}),Object(y.jsx)(re.a,{children:Object(y.jsxs)(ne.Container,{dragHandleSelector:".drag-handle",lockAxis:"y",onDrop:this.handleEditDrop,children:[s[n].children.map((function(e){var t=e.id,n=e.title;return Object(y.jsx)(ne.Draggable,{children:Object(y.jsxs)(oe.a,{divider:!0,children:[Object(y.jsx)(se.a,{primary:n}),Object(y.jsx)(ce.a,{children:Object(y.jsx)(ie.a,{className:"drag-handle",children:Object(y.jsx)(de.a,{})})})]})},t)})),Object(y.jsx)(T.a,{variant:"contained",color:"primary",style:{width:"135px",margin:"30px 0 15px 15px"},onClick:this.handleEditSave,startIcon:Object(y.jsx)(Z.a,{}),children:"Save"})]})})]}):null]}):Object(y.jsx)("div",{className:"Carousel",children:s.length?s.map((function(t,n){return t.children.length||!a?Object(y.jsxs)("div",{className:"carousel__category",children:[Object(y.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center"},children:[Object(y.jsx)("div",{style:{display:"flex",flexShrink:"0"},children:Object(y.jsx)(c.b,{id:"".concat(t.categoryInfo.name),to:"Starred"==t.categoryInfo.type?"/starred#".concat(t.categoryInfo.name):"/browse/".concat(t.categoryInfo.name),className:"carousel__category__title no_decoration_link",children:t.categoryInfo.name},we())}),r||o?null:Object(y.jsxs)("div",{style:{width:"100%",display:"flex",justifyContent:"space-between"},children:[Object(y.jsx)(g.a,{onClick:function(){return e.handleScroll(n,-500)},children:Object(y.jsx)(Y.a,{style:{fontSize:"36px",fill:Dt.palette.primary.main}})}),Object(y.jsx)(g.a,{onClick:function(){return e.handleScroll(n,500)},children:Object(y.jsx)(Q.a,{style:{fontSize:"36px",fill:Dt.palette.primary.main}})})]})]}),Object(y.jsx)("div",{className:"carousel__items",children:t.children.length?t.children.map((function(e){return Object(y.jsxs)("figure",{className:"carousel__item__figure",children:[Object(y.jsx)(c.b,{to:"/view/".concat("file"==e.type?"m":"tb","/").concat(e.id),children:Object(y.jsx)("img",{src:e.posterPath||"".concat(l,"/api/v1/image/poster?text=").concat(e.title,"&extention=jpeg"),className:"carousel__item__poster",alt:e.title},we())},we()),Object(y.jsx)(M.a,{className:"carousel__item__title",children:e.title},we())]},we())})):null})]},we()):null})):null})}}]),n}(r.Component)),he=n(31),pe=n.n(he),me=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={auth:window.sessionStorage.getItem("auth")||window.localStorage.getItem("auth")||"0",category:a.props.match.params.category,genre:pe.a.parse(a.props.location.search).genre||"",isLoaded:!1,metadata:{},page:parseInt(pe.a.parse(a.props.location.search).page)||1,range:"".concat(void 0===pe.a.parse(a.props.location.search).page?"0:".concat(JSON.parse(window.localStorage.getItem("ui_config")||window.sessionStorage.getItem("ui_config")||"{}").range||"16"):"".concat((parseInt(pe.a.parse(a.props.location.search).page)-1)*parseInt(JSON.parse(window.localStorage.getItem("ui_config")||window.sessionStorage.getItem("ui_config")||"{}").range||"16"),":").concat(parseInt(pe.a.parse(a.props.location.search).page)*parseInt(JSON.parse(window.localStorage.getItem("ui_config")||window.sessionStorage.getItem("ui_config")||"{}").range||"16"))),server:window.sessionStorage.getItem("server")||window.localStorage.getItem("server")||window.location.origin,sort:pe.a.parse(a.props.location.search).sort||"",ui_config:JSON.parse(window.localStorage.getItem("ui_config")||window.sessionStorage.getItem("ui_config")||"{}")},a}return Object(p.a)(n,[{key:"componentDidMount",value:function(){var e=this,t=this.state,n=t.auth,a=t.category,r=t.genre,o=t.range,i=t.server,s=t.sort,c=t.ui_config;n&&i||this.props.history.push("/logout"),window.scrollTo(0,0);var l="".concat(i,"/api/v1/metadata"),d="?a=".concat(n,"&c=").concat(encodeURIComponent(a),"&g=").concat(encodeURIComponent(r),"&r=").concat(o,"&s=").concat(s);N.a.get(l+d).then((function(t){e.setState({isLoaded:!0,metadata:t.data.content,pages:Math.ceil(t.data.content[0].length/parseInt(c.range||"16"))||1})})).catch((function(t){if(console.error(t),t.response){var n=t.response.data;401===n.code?_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"Login",confirmButtonColor:Dt.palette.success.main}).then((function(t){t.isConfirmed&&e.props.history.push("/logout")})):i?_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(t){t.isConfirmed?e.props.history.push("/logout"):t.isDismissed&&location.reload()})):e.props.history.push("/logout")}else t.request&&(i?_.a.fire({title:"Error!",text:"libDrive could not communicate with the server! Is '".concat(i,"' the correct address?"),icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(t){t.isConfirmed?e.props.history.push("/logout"):t.isDismissed&&location.reload()})):e.props.history.push("/logout"))}))}},{key:"componentWillUnmount",value:function(){at()}},{key:"render",value:function(){var e=this.state,t=e.genre,n=e.isLoaded,r=e.metadata,o=e.page,i=e.pages,s=e.sort,c=e.ui_config;return n&&at({title:"".concat(c.title||"libDrive"," - ").concat(r[0].categoryInfo.name),description:"Browse ".concat(r[0].categoryInfo.name," on ").concat(c.title||"libDrive","!")}),n?Object(y.jsxs)("div",{className:"CategoryBrowse",children:[Object(y.jsx)(Ue,Object(a.a)({},this.props)),Object(y.jsx)(At,{metadata:r}),Object(y.jsx)(Ye,{state:{genre:t,page:o,pages:i,sort:s},props:this.props}),Object(y.jsx)(jt,{state:{genre:t,sort:s},props:this.props}),Object(y.jsx)(ve,{})]}):Object(y.jsx)("div",{className:"Loading",children:Object(y.jsx)(k.a,{})})}}]),n}(r.Component),je=n(131),be=n.n(je),ge=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var r;return Object(h.a)(this,n),(r=t.call(this,e)).state=Object(a.a)({menuAnchor:!1},e.state),r.handleClick=r.handleClick.bind(Object(m.a)(r)),r.handleClose=r.handleClose.bind(Object(m.a)(r)),r}return Object(p.a)(n,[{key:"handleClick",value:function(e){this.setState({menuAnchor:e.currentTarget})}},{key:"handleClose",value:function(){this.setState({menuAnchor:!1})}},{key:"render",value:function(){var e=this,t=this.state,n=t.metadata,a=t.menuAnchor;return Object(y.jsxs)("div",{className:"info__button2",children:[Object(y.jsx)(T.a,{variant:"outlined",color:"primary",style:{width:"135px"},"aria-controls":"children-menu","aria-haspopup":"true",onClick:this.handleClick,startIcon:Object(y.jsx)(be.a,{}),children:"Seasons"}),Object(y.jsx)(f.a,{id:"children-menu",anchorEl:a,keepMounted:!0,anchorOrigin:{vertical:"top",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},open:Boolean(a),onClose:this.handleClose,children:n.children.length?n.children.map((function(t){if("directory"==t.type)return Object(y.jsx)(c.b,{to:"/view/ts/".concat(t.id),className:"no_decoration_link",children:Object(y.jsx)(v.a,{onClick:e.handleClose,children:t.name})},we())})):null})]})}}]),n}(r.Component);var fe=n(5),Oe=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(){return Object(h.a)(this,n),t.apply(this,arguments)}return Object(p.a)(n,[{key:"render",value:function(){var e=this.props.classes;return Object(y.jsx)("div",{style:{paddingTop:"75px"},children:Object(y.jsxs)("footer",{className:e.footer__container,id:"footer__container",children:[Object(y.jsx)("img",{src:"https://cdn2.iconfinder.com/data/icons/social-media-2285/512/1_Instagram_colored_svg_1-512.png",className:"footer__github",height:"64px",alt:"github-logo"}),Object(y.jsx)("a",{className:"no_decoration_link footer__text",href:"https://www.instagram.com/thejagstudio/",target:"_blank",children:"\xa9 2024 Copyright: TheJagStudio - v".concat(Pt.a)})]})})}}]),n}(r.Component),ve=Object(fe.a)((function(e){return{footer__container:{width:"100%",height:"75px",display:"flex",alignItems:"center",justifyContent:"center"}}}),{withTheme:!0})(Oe),xe=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={auth:window.sessionStorage.getItem("auth")||window.localStorage.getItem("auth")||"0",genre:pe.a.parse(a.props.location.search).genre||"",isLoaded:!1,metadata:{},page:parseInt(pe.a.parse(a.props.location.search).page)||1,range:"".concat(void 0===pe.a.parse(a.props.location.search).page?"0:8":"".concat(8*(parseInt(pe.a.parse(a.props.location.search).page)-1),":").concat(8*parseInt(pe.a.parse(a.props.location.search).page))),server:window.sessionStorage.getItem("server")||window.localStorage.getItem("server")||window.location.origin,sort:pe.a.parse(a.props.location.search).sort||"",ui_config:JSON.parse(window.localStorage.getItem("ui_config")||window.sessionStorage.getItem("ui_config")||"{}")},a}return Object(p.a)(n,[{key:"componentDidMount",value:function(){var e=this,t=this.state,n=t.auth,a=t.genre,r=t.range,o=t.server,i=t.sort;n&&o||this.props.history.push("/logout");var s="".concat(o,"/api/v1/metadata"),c="?a=".concat(n,"&g=").concat(encodeURIComponent(a),"&r=").concat(r,"&s=").concat(i);N.a.get(s+c).then((function(t){e.setState({isLoaded:!0,metadata:t.data.content,pages:Math.ceil(t.data.content[0].length/8)||1})})).catch((function(t){if(console.error(t),t.response){var n=t.response.data;401===n.code?_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"Login",confirmButtonColor:Dt.palette.success.main}).then((function(t){t.isConfirmed&&e.props.history.push("/logout")})):o?_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(t){t.isConfirmed?e.props.history.push("/logout"):t.isDismissed&&location.reload()})):e.props.history.push("/logout")}else t.request&&(o?_.a.fire({title:"Error!",text:"libDrive could not communicate with the server! Is '".concat(o,"' the correct address?"),icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(t){t.isConfirmed?e.props.history.push("/logout"):t.isDismissed&&location.reload()})):e.props.history.push("/logout"))}))}},{key:"componentWillUnmount",value:function(){at()}},{key:"render",value:function(){var e=this.state,t=e.genre,n=e.isLoaded,r=e.metadata,o=e.page,i=e.pages,s=e.sort,c=e.ui_config;return n&&at({title:"".concat(c.title||"libDrive").concat(t?" - ".concat(t):""),description:"Browse ".concat(t?"the ".concat(t," genre"):"genres"," on ").concat(c.title||"libDrive","!")}),n?Object(y.jsxs)("div",{className:"CategoryBrowse",children:[Object(y.jsx)(Ue,Object(a.a)({},this.props)),Object(y.jsx)(At,{metadata:r}),Object(y.jsx)(Ye,{state:{genre:t,page:o,pages:i,sort:s},props:this.props}),Object(y.jsx)(jt,{state:{genre:t,sort:s},props:this.props}),Object(y.jsx)(ve,{})]}):Object(y.jsx)("div",{className:"Loading",children:Object(y.jsx)(k.a,{})})}}]),n}(r.Component);function we(){function e(e){var t=(Math.random().toString(16)+"000000000").substr(2,8);return e?"-"+t.substr(0,4)+"-"+t.substr(4,4):t}return e()+e(!0)+e(!0)+e()}var ye=n(240),Se=n(259),Ce=n(260),ke=n(69),_e=n.n(ke),Ie=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={auth:"",error:"",page:!1,password:"",signup:!1,server:window.location.origin,username:""},a.handleTempServerChange=a.handleTempServerChange.bind(Object(m.a)(a)),a.handlePassChange=a.handlePassChange.bind(Object(m.a)(a)),a.handleUserChange=a.handleUserChange.bind(Object(m.a)(a)),a.handleServerSubmit=a.handleServerSubmit.bind(Object(m.a)(a)),a.handleSubmit=a.handleSubmit.bind(Object(m.a)(a)),a.handleSignup=a.handleSignup.bind(Object(m.a)(a)),a.dismissError=a.dismissError.bind(Object(m.a)(a)),a}return Object(p.a)(n,[{key:"componentDidMount",value:function(){var e=this,t=this.state.server,n="".concat(t,"/api/v1/auth");N.a.get(n+"?rules=signup").then((function(n){var a=n.data;200===a.code?(window.localStorage.setItem("auth","0"),window.localStorage.setItem("server",t),window.localStorage.setItem("ui_config",JSON.stringify(a.content.ui_config)),window.sessionStorage.setItem("auth","0"),window.sessionStorage.setItem("server",t),window.sessionStorage.setItem("ui_config",JSON.stringify(a.content.ui_config)),e.props.history.push("/browse")):!0===a.content?e.setState({signup:!0,page:!0}):!1===a.content&&e.setState({signup:!1,page:!0})}))}},{key:"dismissError",value:function(){this.setState({error:""})}},{key:"handleServerSubmit",value:function(e){var t=this;e.preventDefault();var n=this.state.server;if(!n)return this.setState({error:"Server is required"});n.startsWith("http")||(n="https://".concat(n));var a="".concat(n,"/api/v1/auth");N.a.get(a+"?rules=signup").then((function(e){var a=e.data;200===a.code?(window.localStorage.setItem("auth","0"),window.localStorage.setItem("server",n),window.localStorage.setItem("ui_config",JSON.stringify(a.content.ui_config)),window.sessionStorage.setItem("auth","0"),window.sessionStorage.setItem("server",n),window.sessionStorage.setItem("ui_config",JSON.stringify(a.content.ui_config)),t.props.history.push("/browse")):!0===a.content?t.setState({server:n,signup:!0,page:!0}):!1===a.content&&t.setState({server:n,signup:!1,page:!0})})).catch((function(e){console.error(e);try{var t=response.data;_.a.fire({title:"Error!",text:t.message,icon:"error",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main})}catch(a){_.a.fire({title:"Error!",text:"You were unable to communicate with the server. Are you sure ".concat(n," is the correct server?"),icon:"error",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main})}}))}},{key:"handleSubmit",value:function(e){var t=this;e.preventDefault();var n=this.state,a=n.password,r=n.server,o=n.username,i="".concat(r,"/api/v1/auth"),s="?u=".concat(encodeURIComponent(o),"&p=").concat(encodeURIComponent(a));return N.a.get(i+s).then((function(e){var n=e.data;window.localStorage.setItem("server",r),window.sessionStorage.setItem("server",r),window.localStorage.setItem("ui_config",JSON.stringify(n.content.ui_config)),window.localStorage.setItem("auth",n.content.auth),window.sessionStorage.setItem("auth",n.content.auth),window.sessionStorage.setItem("ui_config",JSON.stringify(n.content.ui_config)),t.props.history.push("/")})).catch((function(e){console.error(e);try{var t=response.data;_.a.fire({title:"Error!",text:t.message,icon:"error",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main})}catch(n){_.a.fire({title:"Error!",text:"The username and or password was incorrect!",icon:"error",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main})}})),this.setState({error:""})}},{key:"handleSignup",value:function(){var e=this,t=this.state,n=t.password,a=t.server,r=t.username;if(!r)return this.setState({error:"Username is required"});if(!n)return this.setState({error:"Password is required"});var o="".concat(a,"/api/v1/signup"),i="?u=".concat(encodeURIComponent(r),"&p=").concat(encodeURIComponent(n));return N.a.get(o+i).then((function(t){var n=t.data;window.localStorage.setItem("server",a),window.sessionStorage.setItem("server",a),window.localStorage.setItem("auth",n.content.auth),window.sessionStorage.setItem("auth",n.content.auth),e.props.history.push("/")})).catch((function(e){console.error(e);var t=e.response;try{_.a.fire({title:"Error!",text:t.message,icon:"error",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main})}catch(n){_.a.fire({title:"Error!",text:"Something went wrong while communicating with the server ".concat(a),icon:"error",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main})}})),this.setState({error:""})}},{key:"handleTempServerChange",value:function(e){this.setState({server:e.target.value})}},{key:"handleUserChange",value:function(e){this.setState({username:e.target.value})}},{key:"handlePassChange",value:function(e){this.setState({password:e.target.value})}},{key:"render",value:function(){var e=this.state,t=e.error,n=e.password,a=e.page,r=e.server,o=e.username,i=this.props.classes;return a?Object(y.jsxs)("div",{className:"Login",children:[Object(y.jsxs)(ye.a,{component:"main",maxWidth:"xs",children:[Object(y.jsx)(d.a,{}),Object(y.jsxs)("div",{className:i.paper,children:[Object(y.jsx)(Se.a,{className:i.avatar,children:Object(y.jsx)(_e.a,{})}),Object(y.jsx)(M.a,{variant:"h5",children:"Sign in"}),Object(y.jsxs)("form",{className:i.form,onSubmit:this.handleSubmit,noValidate:!0,children:[t&&Object(y.jsx)("div",{style:{},children:Object(y.jsxs)("h3",{"data-test":"error",onClick:this.dismissError,children:[Object(y.jsx)("button",{onClick:this.dismissError,children:"\u2716"}),t]})}),Object(y.jsx)(Ce.a,{variant:"outlined",margin:"normal",required:!0,fullWidth:!0,id:"server",label:"Server",name:"server",autoComplete:"server",onChange:this.handleTempServerChange,value:r,autoFocus:!0,disabled:!0}),Object(y.jsx)(Ce.a,{variant:"outlined",margin:"normal",required:!0,fullWidth:!0,id:"username",label:"Username",name:"username",autoComplete:"username",onChange:this.handleUserChange,value:o}),Object(y.jsx)(Ce.a,{variant:"outlined",margin:"normal",required:!0,fullWidth:!0,name:"password",label:"Password",type:"password",id:"password",autoComplete:"current-password",onChange:this.handlePassChange,value:n}),Object(y.jsx)(T.a,{type:"submit",fullWidth:!0,variant:"contained",color:"primary",className:i.submit,children:"Sign In"}),this.state.signup?Object(y.jsxs)("div",{className:"Signup",style:{textAlign:"center"},children:[Object(y.jsx)(T.a,{type:"button",onClick:this.handleSignup,fullWidth:!0,variant:"contained",color:"primary",style:{marginTop:0},className:i.submit,children:"Sign Up"}),Object(y.jsx)(M.a,{variant:"body1",children:"Be aware that the owner of this server can view your credentials!"})]}):Object(y.jsx)("div",{className:"Signup"})]})]})]}),Object(y.jsx)(ve,{})]}):Object(y.jsxs)("div",{className:"Login",children:[Object(y.jsxs)(ye.a,{component:"main",maxWidth:"xs",children:[Object(y.jsx)(d.a,{}),Object(y.jsxs)("div",{className:i.paper,children:[Object(y.jsx)(Se.a,{className:i.avatar,children:Object(y.jsx)(_e.a,{})}),Object(y.jsx)(M.a,{variant:"h5",children:"Sign in"}),Object(y.jsxs)("form",{className:i.form,onSubmit:this.handleServerSubmit,noValidate:!0,children:[t&&Object(y.jsx)("div",{style:{},children:Object(y.jsxs)("h3",{"data-test":"error",onClick:this.dismissError,children:[Object(y.jsx)("button",{onClick:this.dismissError,children:"\u2716"}),t]})}),Object(y.jsx)(Ce.a,{variant:"outlined",margin:"normal",required:!0,fullWidth:!0,id:"server",label:"Server",name:"server",autoComplete:"server",onChange:this.handleTempServerChange,value:r,autoFocus:!0}),Object(y.jsx)(T.a,{type:"submit",fullWidth:!0,variant:"contained",color:"primary",className:i.submit,children:"Next"})]})]})]}),Object(y.jsx)(ve,{})]})}}]),n}(r.Component),Ne=Object(fe.a)((function(e){return{paper:{marginTop:e.spacing(8),display:"flex",flexDirection:"column",alignItems:"center"},avatar:{margin:e.spacing(1),backgroundColor:e.palette.secondary.main},form:{width:"100%",marginTop:e.spacing(1)},submit:{margin:e.spacing(3,0,2)}}}),{withTheme:!0})(Ie),Be=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={isLoaded:!1},a}return Object(p.a)(n,[{key:"componentDidMount",value:function(){var e=this;window.localStorage.clear(),window.sessionStorage.clear(),setTimeout((function(){return e.setState({isLoaded:!0})}),500)}},{key:"render",value:function(){return this.state.isLoaded?Object(y.jsx)(l.a,{to:"/login"},we()):Object(y.jsx)("div",{className:"Loading",children:Object(y.jsx)(k.a,{})})}}]),n}(r.Component),Te=n(66),De=n(245),Ee=n(246),Le=n(144),Re=n(18),Ae=n(132),Me=n.n(Ae),Pe=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var r;return Object(h.a)(this,n),(r=t.call(this,e)).state=Object(a.a)(Object(a.a)({},e.state),{},{ui_config:JSON.parse(window.localStorage.getItem("ui_config")||window.sessionStorage.getItem("ui_config")||"{}")}),r.searchChange=r.searchChange.bind(Object(m.a)(r)),r.searchSubmit=r.searchSubmit.bind(Object(m.a)(r)),r.onMouseOver=r.onMouseOver.bind(Object(m.a)(r)),r.onMouseOut=r.onMouseOut.bind(Object(m.a)(r)),r}return Object(p.a)(n,[{key:"searchChange",value:function(e){this.setState({search:e.target.value})}},{key:"searchSubmit",value:function(e){e.preventDefault(),""!=this.state.search&&null!=this.state.search&&this.props.history.push({pathname:"/search/".concat(this.state.search),key:we()})}},{key:"onMouseOver",value:function(e){e.target.style.width="20vw"}},{key:"onMouseOut",value:function(e){e.target.style.width="15vw"}},{key:"render",value:function(){var e=this.state,t=e.accounts,n=e.categories,a=e.query,r=e.search,o=e.ui_config,i=this.props.classes;return Object(y.jsx)("div",{className:i.grow,children:Object(y.jsx)(De.a,{position:"static",className:i.root,children:Object(y.jsxs)(Ee.a,{children:[Object(y.jsx)(c.b,{to:"/",className:"no_decoration_link",children:o.icon_on_nav?Object(y.jsx)(Se.a,{alt:"logo",src:o.icon,children:"L"}):Object(y.jsx)(M.a,{className:i.title,variant:"h6",noWrap:!0,children:o.title||"libDrive"})}),Object(y.jsxs)("form",{className:i.search,onSubmit:this.searchSubmit,children:[Object(y.jsx)(g.a,{onClick:this.searchSubmit,className:i.searchIcon,children:Object(y.jsx)(Me.a,{})}),Object(y.jsx)(Le.a,{placeholder:"Search\u2026",classes:{root:i.inputRoot,input:i.inputInput},inputProps:{"aria-label":"search"},onChange:this.searchChange,onMouseOver:this.onMouseOver,onMouseOut:this.onMouseOut,value:null==r?a:r})]}),Object(y.jsx)("div",{className:i.grow}),Object(y.jsx)(D,{categories:n}),Object(y.jsx)(Rt,{ui_config:o}),o.hide_news?null:Object(y.jsx)(Ke,{}),Object(y.jsx)(S,{accounts:t,ui_config:o})]})})})}}]),n}(r.Component),Je=Object(fe.a)((function(e){return{root:{backgroundColor:e.palette.background.default,color:e.palette.text.primary},grow:{flexGrow:1},title:Object(Te.a)({display:"none"},e.breakpoints.up("sm"),{display:"block"}),search:Object(Te.a)({position:"relative",borderRadius:e.shape.borderRadius,backgroundColor:Object(Re.a)(e.palette.common.main,.15),"&:hover":{backgroundColor:Object(Re.a)(e.palette.common.main,.25)},marginRight:e.spacing(2),marginLeft:0,width:"100%"},e.breakpoints.up("sm"),{marginLeft:e.spacing(3),width:"auto"}),searchIcon:{padding:e.spacing(0,2),height:"100%",position:"absolute",zIndex:10,display:"flex",alignItems:"center",justifyContent:"center"},inputRoot:{color:"inherit"},inputInput:{padding:e.spacing(1,1,1,0),paddingLeft:"calc(1em + ".concat(e.spacing(4),"px)"),transition:e.transitions.create("width"),width:"15vw",maxWidth:"500px"}}}),{withTheme:!0})(Pe),Ue=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={accounts:{},auth:window.sessionStorage.getItem("auth")||window.localStorage.getItem("auth")||"0",categories:[],isLoaded:!1,server:window.sessionStorage.getItem("server")||window.localStorage.getItem("server")||window.location.origin,ui_config:{}},a}return Object(p.a)(n,[{key:"componentDidMount",value:function(){var e=this,t=this.state,n=t.auth,a=t.server,r="".concat(a,"/api/v1/environment"),o="?a=".concat(n);N.a.get(r+o).then((function(t){var n=t.data;e.setState({accounts:n.content.account_list,categories:n.content.category_list,isLoaded:!0,ui_config:n.content.ui_config}),"object"==typeof n.content.ui_config&&(window.localStorage.setItem("ui_config",JSON.stringify(n.content.ui_config)),window.sessionStorage.setItem("ui_config",JSON.stringify(n.content.ui_config)))}))}},{key:"render",value:function(){var e=this.state,t=e.accounts,n=e.categories,r=e.isLoaded;return r||r?Object(y.jsx)("div",{className:"Nav",children:Object(y.jsx)(Je,Object(a.a)({state:{accounts:t,categories:n,query:this.props.query}},this.props))}):Object(y.jsx)(Je,Object(a.a)({state:{accounts:[],categories:[],query:this.props.query}},this.props))}}]),n}(r.Component),qe=n(247),We=n(94),Fe=n.n(We),Ke=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={dismissed:"true"==(window.localStorage.getItem("dismissed")||"false"),isLoaded:!1,isNew:!1,lastChecked:new Date(window.localStorage.getItem("last_news_check")||"0").getTime(),menuAnchor:!1,news:JSON.parse(window.localStorage.getItem("news")||"[]"),now:(new Date).getTime()},a.handleClick=a.handleClick.bind(Object(m.a)(a)),a.handleClose=a.handleClose.bind(Object(m.a)(a)),a}return Object(p.a)(n,[{key:"componentDidMount",value:function(){var e=this,t=this.state,n=t.isNew,a=t.lastChecked,r=t.news,o=t.now,i=a+108e5;r.length&&r[0].tag_name&&Pt.a!=r[0].tag_name.replace("v","")&&(n=!0),o>=i?N.a.get("https://api.github.com/repos/libDrive/libDrive/releases").then((function(t){var a=t.data;window.localStorage.setItem("news",JSON.stringify(a)),window.localStorage.setItem("last_news_check",o),r.length&&a.length&&r[0].tag_name!=a[0].tag_name?(window.localStorage.setItem("dismissed","false"),e.setState({dismissed:!1,isLoaded:!0,isNew:n,news:a})):e.setState({isLoaded:!0,isNew:n,news:a})})):this.setState({isLoaded:!0,isNew:n})}},{key:"handleClick",value:function(e){var t=this,n=this.state,a=(n.news,n.now);this.setState({menuAnchor:e.currentTarget}),N.a.get("https://api.github.com/repos/libDrive/libDrive/releases").then((function(e){var n=e.data;window.localStorage.setItem("news",JSON.stringify(n)),window.localStorage.setItem("last_news_check",a),window.localStorage.setItem("dismissed","true"),t.setState({dismissed:!0,news:n})}))}},{key:"handleClose",value:function(){this.setState({menuAnchor:!1})}},{key:"render",value:function(){var e=this.state,t=e.dismissed,n=e.isNew,a=e.isLoaded,r=e.menuAnchor,i=e.news;return a?Object(y.jsxs)("div",{className:"NewsMenu",children:[Object(y.jsx)(g.a,{"aria-label":"more","aria-controls":"news-menu","aria-haspopup":"true",onClick:this.handleClick,children:!t&&n?Object(y.jsx)(qe.a,{badgeContent:"N",color:"primary",children:Object(y.jsx)(Fe.a,{})}):Object(y.jsx)(Fe.a,{})}),Object(y.jsx)(f.a,{id:"news-menu",anchorEl:r,keepMounted:!0,open:Boolean(r),onClose:this.handleClose,children:Object(y.jsxs)(re.a,{style:{width:"530px",maxwidth:"90vw"},children:[Object(y.jsx)(oe.a,{pri:"true",alignItems:"flex-start",children:Object(y.jsx)(se.a,{primary:n?Object(y.jsx)("strong",{style:{color:Dt.palette.warning.main},children:"There is a new version available!"}):Object(y.jsx)("strong",{style:{color:Dt.palette.success.main},children:"You are on the latest version"})})}),Object(y.jsx)(O.a,{}),i.length?i.slice(0,3).map((function(e){return Object(y.jsx)(oe.a,{pri:"true",alignItems:"flex-start",children:Object(y.jsx)(se.a,{primary:Object(y.jsxs)("strong",{children:["libDrive ",e.tag_name]}),secondary:Object(y.jsx)(o.a.Fragment,{children:Object(y.jsxs)("span",{style:{whiteSpace:"pre-line"},children:["Version: ",e.tag_name,"\n","Date: ",new Date(e.published_at).toDateString(),"\n","Info:"," ",Object(y.jsx)("a",{href:e.html_url,target:"_blank",className:"no_decoration_link",children:Object(y.jsx)("u",{children:e.html_url.replace("https://github.com/","")})})]})})})},we())})):null]})})]}):null}}]),n}(r.Component),Ve=(n(188),function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(){return Object(h.a)(this,n),t.apply(this,arguments)}return Object(p.a)(n,[{key:"render",value:function(){return Object(y.jsxs)("div",{className:"NotFound",children:[Object(y.jsx)(Ue,Object(a.a)({},this.props)),Object(y.jsx)("div",{className:"nf",children:Object(y.jsx)("div",{className:"fof",children:Object(y.jsx)("h1",{children:"Error 404: Not Found"})})})]})}}]),n}(r.Component)),ze=n(265),He=n(256),Ge=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state=e.state,a}return Object(p.a)(n,[{key:"render",value:function(){var e=this,t=this.state,n=t.genre,r=t.page,o=t.pages,i=t.sort,s=this.props.classes;return r>o?Object(y.jsx)(l.a,{to:{pathname:this.props.props.location.pathname,search:"?page=".concat(o,"&genre=").concat(n,"&sort=").concat(i)}},we()):Object(y.jsx)("div",{className:s.root,children:Object(y.jsx)(ze.a,{page:r,count:o,variant:"outlined",size:window.innerWidth>=600?"large":window.innerWidth>=390?"medium":"small",color:"primary",renderItem:function(t){return t.page?Object(y.jsx)(c.b,{to:{pathname:e.props.props.location.pathname,search:"?page=".concat(t.page,"&genre=").concat(n,"&sort=").concat(i)},className:"no_decoration_link",children:Object(y.jsx)(He.a,Object(a.a)({},t))},we()):Object(y.jsx)(He.a,Object(a.a)({},t))}})})}}]),n}(r.Component),Ye=Object(fe.a)((function(e){return{root:{"& > *":{display:"flex",justifyContent:"center",alignItems:"center",margin:"20px"}}}}),{withTheme:!0})(Ge),Xe=n(133),Qe=n.n(Xe),$e=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var r;return Object(h.a)(this,n),(r=t.call(this,e)).state=Object(a.a)({menuAnchor:!1},e.state),r.handleClick=r.handleClick.bind(Object(m.a)(r)),r.handleClose=r.handleClose.bind(Object(m.a)(r)),r}return Object(p.a)(n,[{key:"handleClick",value:function(e){this.setState({menuAnchor:e.currentTarget})}},{key:"handleClose",value:function(e){this.setState({menuAnchor:!1})}},{key:"render",value:function(){var e,t=this,n=this.state,a=(n.auth,n.id),r=n.isAndroid,o=n.isIOS,i=n.metadata,s=n.server,c=new URL("".concat(s,"/api/v1/redirectdownload/").concat(encodeURIComponent(i.name),"?id=").concat(a));if(r){var l=c.protocol.slice(0,-1);c.hash="Intent;action=android.intent.action.VIEW;scheme=".concat(l,";type=").concat(i.mimeType,";S.title=").concat(encodeURIComponent(i.name),";end"),c.protocol="intent",e=c.toString()}else o&&(c.host="x-callback-url",c.port="",c.pathname="stream",c.search="url=".concat(s,"/api/v1/redirectdownload/").concat(encodeURIComponent(i.name),"?id=").concat(a),c.protocol="vlc-x-callback",e=c.toString());return Object(y.jsxs)("div",{className:"info__button",children:[Object(y.jsx)(T.a,{variant:"outlined",color:"primary",style:{width:"135px"},"aria-controls":"player-menu","aria-haspopup":"true",onClick:this.handleClick,startIcon:Object(y.jsx)(Qe.a,{}),children:"Player"}),Object(y.jsxs)(f.a,{id:"player-menu",anchorEl:this.state.menuAnchor,keepMounted:!0,anchorOrigin:{vertical:"top",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},open:Boolean(this.state.menuAnchor),onClose:this.handleClose,children:[r||o?Object(y.jsxs)("div",{children:[Object(y.jsx)("a",{href:e,className:"no_decoration_link",children:Object(y.jsx)(v.a,{onClick:this.handleClose,children:r?"Android":o?"IOS selector":null})}),Object(y.jsx)(O.a,{})]}):Object(y.jsx)("div",{children:Object(y.jsx)("a",{href:"potplayer://".concat(s,"/api/v1/redirectdownload/").concat(encodeURIComponent(i.name),"?id=").concat(a),className:"no_decoration_link",children:Object(y.jsx)(v.a,{onClick:this.handleClose,children:"PotPlayer"})})}),Object(y.jsx)(O.a,{}),Object(y.jsx)(v.a,{onClick:function(){navigator.clipboard.writeText("".concat(s,"/api/v1/redirectdownload/").concat(encodeURIComponent(i.name),"?id=").concat(a)),t.handleClose()},children:"Copy URL"})]})]})}}]),n}(r.Component),Ze=n(134),et=n.n(Ze),tt=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state=e.state,a.handleClick=a.handleClick.bind(Object(m.a)(a)),a}return Object(p.a)(n,[{key:"handleClick",value:function(e){for(var t=this.state,n=(t.auth,t.metadata),a=t.server,r="#EXTM3U\n#EXTENC: UTF-8\n#PLAYLIST: ".concat(n.name,"\n"),o=0;o0&&void 0!==arguments[0]?arguments[0]:{},t=JSON.parse(window.localStorage.getItem("ui_config")||window.sessionStorage.getItem("ui_config")||"{}");e.title=e.title||t.title||"libDrive",e.description=e.description||"libDrive is a Google Drive media library manager and indexer, similar to Plex, that organizes Google Drive media to offer an intuitive and user-friendly experience.",e.image=e.image||t.icon||"/images/icons/icon-512x512.png",e.type=e.type||"website",document.title=e.title||t.title,document.querySelector('meta[property="og:title"]').setAttribute("content",e.title),document.querySelector('meta[name="description"]').setAttribute("content",e.description),document.querySelector('meta[property="og:description"]').setAttribute("content",e.description),document.querySelector('meta[property="og:image"]').setAttribute("content",e.image),document.querySelector('meta[property="og:type"]').setAttribute("content",e.type)}var rt,ot,it=n(263),st=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={auth:window.sessionStorage.getItem("auth")||window.localStorage.getItem("auth")||"0",error:"",isLoaded:!1,secret:window.sessionStorage.getItem("secret"),server:window.sessionStorage.getItem("server")||window.localStorage.getItem("server")||window.location.origin},a.dismissError=a.dismissError.bind(Object(m.a)(a)),a.handleSubmit=a.handleSubmit.bind(Object(m.a)(a)),a.handleChange=a.handleChange.bind(Object(m.a)(a)),a.handleRestart=a.handleRestart.bind(Object(m.a)(a)),a.handleKillSwitch=a.handleKillSwitch.bind(Object(m.a)(a)),a.handleRebuild=a.handleRebuild.bind(Object(m.a)(a)),a.handleFileBrowser=a.handleFileBrowser.bind(Object(m.a)(a)),a}return Object(p.a)(n,[{key:"componentDidMount",value:function(){var e=this,t=this.state,n=t.secret,r=t.server,o=Object(a.a)({},this.props);if(o.classes={},null==window.sessionStorage.getItem("secret"))this.props.history.push("/settings/login");else{var i="".concat(r,"/api/v1/config"),s="?a=".concat(auth,"&secret=").concat(encodeURIComponent(n));N.a.get(i+s).then((function(t){return e.setState({config:JSON.stringify(t.data.content,null,4),isLoaded:!0,navProps:o,tempSecret:t.data.content.secret_key})})).catch((function(t){if(console.error(t),t.response){var n=t.response.data;401===n.code?_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"Login",confirmButtonColor:Dt.palette.success.main}).then((function(t){t.isConfirmed&&e.props.history.push("/logout")})):r?_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(t){t.isConfirmed?e.props.history.push("/logout"):t.isDismissed&&location.reload()})):e.props.history.push("/logout")}else t.request&&(r?_.a.fire({title:"Error!",text:"libDrive could not communicate with the server! Is '".concat(r,"' the correct address?"),icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(t){t.isConfirmed?e.props.history.push("/logout"):t.isDismissed&&location.reload()})):e.props.history.push("/logout"))}))}}},{key:"dismissError",value:function(){this.setState({error:""})}},{key:"handleRestart",value:function(e){e.preventDefault();var t=this.state,n=t.secret,a=t.server,r="".concat(a,"/api/v1/restart"),o="?a=".concat(auth,"&secret=").concat(encodeURIComponent(n));N.a.get(r+o).then((function(e){_.a.fire({title:"Success!",text:e.data.message,icon:"success",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main})})).catch((function(e){console.error(e),_.a.fire({title:"Success!",text:"libDrive is being restarted, this might take some time, so the app won't load",icon:"success",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main})}))}},{key:"handleSubmit",value:function(e){var t=this;e.preventDefault();var n=this.state,a=n.secret,r=n.server,o="".concat(r,"/api/v1/config"),i="?a=".concat(auth,"&secret=").concat(encodeURIComponent(a));N.a.post(o+i,JSON.parse(this.state.config)).then((function(e){_.a.fire({title:"Success!",text:e.data.message,icon:"success",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main})})).catch((function(e){if(console.error(e),e.response){var n=e.response.data;401===n.code?_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main}).then((function(e){e.isConfirmed&&(window.sessionStorage.removeItem("secret"),t.props.history.push("/settings/login"))})):_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(e){e.isConfirmed?t.props.history.push("/logout"):e.isDismissed&&location.reload()}))}else e.request&&_.a.fire({title:"Error!",text:"libDrive could not communicate with the server! Is ".concat(r," the correct address?"),icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(e){e.isConfirmed?t.props.history.push("/logout"):e.isDismissed&&location.reload()}))}))}},{key:"handleChange",value:function(e){this.setState({config:e.target.value})}},{key:"handleKillSwitch",value:function(e){var t=JSON.parse(this.state.config);t.kill_switch=e.target.checked,this.setState({config:JSON.stringify(t,null,4)}),this.handleSubmit(e)}},{key:"handleRebuild",value:function(e){var t=this,n=this.state,a=n.secret,r=n.server,o="".concat(r,"/api/v1/rebuild"),i="?a=".concat(auth,"&secret=").concat(encodeURIComponent(a));N.a.get(o+i).then((function(e){return _.a.fire({title:"Success!",text:"libDrive's metadata is being rebuilt...",icon:"success",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main})})).catch((function(e){console.error(e),null==auth||null==r?t.props.history.push("/login"):e.response?401===e.response.status?_.a.fire({title:"Error!",text:"Your credentials are invalid!",icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main}).then((function(e){e.isConfirmed&&t.props.history.push("/logout")})):_.a.fire({title:"Error!",text:"Something went wrong while communicating with the server!",icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(e){e.isConfirmed?t.props.history.push("/logout"):e.isDismissed&&location.reload()})):e.request&&_.a.fire({title:"Error!",text:"libDrive could not communicate with the server! Is ".concat(r," the correct address?"),icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(e){e.isConfirmed?t.props.history.push("/logout"):e.isDismissed&&location.reload()}))}))}},{key:"handleFileBrowser",value:function(){var e=this.state,t=e.secret,n=e.server;window.open("".concat(n,"/api/v1/debug?secret=").concat(t))}},{key:"render",value:function(){var e=this.state,t=e.config,n=e.isLoaded,r=e.navProps,o=this.props.classes;return n?Object(y.jsxs)("div",{className:"Settings",children:[Object(y.jsx)(Ue,Object(a.a)({},r)),Object(y.jsx)("div",{style:{margin:"auto",marginTop:"50px",width:"80vw",maxWidth:"1500px"},children:Object(y.jsx)(Ce.a,{style:{width:"100%",backgroundColor:Dt.palette.background.paper},variant:"outlined",label:"Config",value:t,id:"config-box",onChange:this.handleChange,multiline:!0,minRows:15,maxRows:30})}),Object(y.jsx)("form",{className:o.Form,noValidate:!0,autoComplete:"off",onSubmit:this.handleSubmit,children:Object(y.jsxs)("div",{style:{margin:"30px"},children:[Object(y.jsx)(T.a,{style:{margin:"10px",width:"175px"},type:"submit",fullWidth:!0,variant:"contained",color:"primary",className:o.submit,children:"Submit Config"}),Object(y.jsx)(T.a,{style:{margin:"10px",width:"175px"},fullWidth:!0,variant:"contained",color:"primary",className:o.submit,onClick:this.handleRestart,children:"Restart Server"}),Object(y.jsx)(T.a,{style:{margin:"10px",width:"175px"},fullWidth:!0,variant:"contained",color:"primary",className:o.submit,onClick:this.handleRebuild,children:"Rebuild Metadata"}),Object(y.jsx)(T.a,{style:{margin:"10px",width:"175px"},fullWidth:!0,variant:"contained",color:"primary",className:o.submit,onClick:this.handleFileBrowser,children:"File Browser"}),Object(y.jsx)("br",{}),Object(y.jsx)("p",{style:{fontSize:"16px",marginTop:"10px",marginBotoom:"5px"},children:"Kill Switch"}),Object(y.jsx)(it.a,{checked:this.state.config.kill_switch,onChange:this.handleKillSwitch,color:"primary",name:"checkedB",inputProps:{"aria-label":"primary checkbox"}})]})}),Object(y.jsx)(ve,{})]}):Object(y.jsx)("div",{className:"Loading",children:Object(y.jsx)(k.a,{})})}}]),n}(r.Component),ct=Object(fe.a)((function(e){return{Form:{textAlign:"center","& .MuiTextField-root":{width:"30ch",margin:e.spacing(1),textAlign:"left"},"& .MuiTypography-root":{margin:"30px 30px"}},submit:{margin:e.spacing(4,0,2),width:"20ch"}}}),{withTheme:!0})(st),lt=function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state={auth:window.sessionStorage.getItem("auth")||window.localStorage.getItem("auth")||"0",isLoaded:!1,secret:"",server:window.sessionStorage.getItem("server")||window.localStorage.getItem("server")||window.location.origin},a.handleSecretChange=a.handleSecretChange.bind(Object(m.a)(a)),a.handleSubmit=a.handleSubmit.bind(Object(m.a)(a)),a}return Object(p.a)(n,[{key:"componentDidMount",value:function(){var e=Object(a.a)({},this.props);e.classes={},this.setState({isLoaded:!0,navProps:e})}},{key:"handleSubmit",value:function(e){var t=this;e.preventDefault();var n=this.state,a=n.secret,r=n.server,o="".concat(r,"/api/v1/config"),i="?a=".concat(auth,"&secret=").concat(encodeURIComponent(a));N.a.get(o+i).then((function(e){window.sessionStorage.setItem("secret",a),t.props.history.push("/settings")})).catch((function(e){if(console.error(e),e.response){var n=e.response.data;401===n.code?_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main}):_.a.fire({title:"Error!",text:n.message,icon:"error",confirmButtonText:"OK",confirmButtonColor:Dt.palette.success.main}).then((function(e){location.reload()}))}else e.request&&_.a.fire({title:"Error!",text:"libDrive could not communicate with the server. Is ${server} the correct address?",icon:"error",confirmButtonText:"Logout",confirmButtonColor:Dt.palette.success.main,cancelButtonText:"Retry",cancelButtonColor:Dt.palette.error.main,showCancelButton:!0}).then((function(e){e.isConfirmed?t.props.history.push("/logout"):e.isDismissed&&location.reload()}))}))}},{key:"handleSecretChange",value:function(e){this.setState({secret:e.target.value})}},{key:"render",value:function(){var e=this.state,t=e.isLoaded,n=e.navProps,r=e.secret,o=this.props.classes;return t?Object(y.jsxs)("div",{className:"SettingsLoginForm",children:[Object(y.jsx)(Ue,Object(a.a)({},n)),Object(y.jsxs)(ye.a,{component:"main",maxWidth:"xs",children:[Object(y.jsx)(d.a,{}),Object(y.jsxs)("div",{className:o.paper,children:[Object(y.jsx)(Se.a,{className:o.avatar,children:Object(y.jsx)(_e.a,{})}),Object(y.jsx)(M.a,{variant:"h5",children:"Settings Login"}),Object(y.jsxs)("form",{className:o.form,onSubmit:this.handleSubmit,noValidate:!0,children:[Object(y.jsx)(Ce.a,{variant:"outlined",margin:"normal",fullWidth:!0,id:"secret",label:"Secret",name:"secret",type:"password",autoComplete:"secret",onChange:this.handleSecretChange,value:r,required:!0,autoFocus:!0}),Object(y.jsx)(T.a,{type:"submit",fullWidth:!0,variant:"contained",color:"primary",className:o.submit,children:"Sign In"})]})]})]}),Object(y.jsx)(ve,{})]}):Object(y.jsx)("div",{className:"Loading",children:Object(y.jsx)(k.a,{})})}}]),n}(r.Component),dt=Object(fe.a)((function(e){return{paper:{marginTop:e.spacing(8),display:"flex",flexDirection:"column",alignItems:"center"},avatar:{margin:e.spacing(1),backgroundColor:e.palette.secondary.main},form:{width:"100%",marginTop:e.spacing(1)},submit:{margin:e.spacing(3,0,2)}}}),{withTheme:!0})(lt),ut=n(244),ht=n(262),pt=n(255),mt=(n(189),function(e){Object(j.a)(n,e);var t=Object(b.a)(n);function n(e){var a;return Object(h.a)(this,n),(a=t.call(this,e)).state=e.state,a.formatSort=a.formatSort.bind(Object(m.a)(a)),a}return Object(p.a)(n,[{key:"formatSort",value:function(e){if(!e)return"Sort";for(var t=e.split("-"),n=0;n ;\r\n if (\r\n accounts &&\r\n accounts.pic &&\r\n (accounts.pic.includes(\"http\") || accounts.pic.includes(\"www\"))\r\n ) {\r\n pic = ;\r\n }\r\n\r\n return (\r\n \r\n \r\n {pic}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Redirect } from \"react-router-dom\";\r\n\r\nimport { clear, guid, version } from \"./components\";\r\n\r\nexport default class App extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n auth:\r\n window.sessionStorage.getItem(\"auth\") ||\r\n window.localStorage.getItem(\"auth\"),\r\n server:\r\n window.sessionStorage.getItem(\"server\") ||\r\n window.localStorage.getItem(\"server\"),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (!window.localStorage.getItem(\"_VERSION\")) {\r\n window.localStorage.setItem(\"_VERSION\", version);\r\n }\r\n if (window.localStorage.getItem(\"_VERSION\") !== version) {\r\n clear();\r\n window.localStorage.setItem(\"_VERSION\", version);\r\n }\r\n }\r\n\r\n render() {\r\n let { auth, server } = this.state;\r\n\r\n return auth && server ? (\r\n \r\n ) : (\r\n \r\n );\r\n }\r\n}\r\n","export default function clear() {\r\n if (\"caches\" in window) {\r\n caches.keys().then((names) => {\r\n names.forEach((name) => {\r\n caches.delete(name);\r\n });\r\n });\r\n window.location.reload(true);\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { CircularProgress } from \"@material-ui/core\";\r\n\r\nimport Swal from \"sweetalert2/src/sweetalert2.js\";\r\nimport \"@sweetalert2/theme-dark/dark.css\";\r\n\r\nimport axios from \"axios\";\r\n\r\nimport { Carousel, Footer, Nav, theme } from \"../../components\";\r\n\r\nexport default class Browse extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n auth: window.sessionStorage.getItem(\"auth\") || window.localStorage.getItem(\"auth\") || \"0\",\r\n isLoaded: false,\r\n metadata: {},\r\n server: window.sessionStorage.getItem(\"server\") || window.localStorage.getItem(\"server\") || window.location.origin,\r\n starred_lists: JSON.parse(window.localStorage.getItem(\"starred_lists\") || \"[]\"),\r\n ui_config: JSON.parse(window.localStorage.getItem(\"ui_config\") || window.sessionStorage.getItem(\"ui_config\") || \"{}\"),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n let { auth, server, starred_lists, ui_config } = this.state;\r\n\r\n if (!auth || !server) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n\r\n let req_path = `${server}/api/v1/metadata`;\r\n let req_args = `?a=${auth}&r=0:${ui_config.range || \"16\"}&s=popularity-des&rmdup=true`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) => {\r\n let metadata = response.data.content;\r\n for (let i = starred_lists.length - 1; i >= 0; i--) {\r\n if (starred_lists[i].categoryInfo.pinned) {\r\n metadata.unshift(starred_lists[i]);\r\n }\r\n }\r\n this.setState({\r\n isLoaded: true,\r\n metadata: metadata,\r\n });\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Login\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n });\r\n } else if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n } else if (error.request) {\r\n if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `libDrive could not communicate with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n let { isLoaded, metadata } = this.state;\r\n\r\n return isLoaded ? (\r\n \r\n \r\n \r\n \r\n
\r\n ) : (\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { Button, Divider, Menu, MenuItem } from \"@material-ui/core\";\r\n\r\nimport { guid } from \"../../components\";\r\n\r\nexport default class BrowseMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n menuAnchor: false,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n }\r\n\r\n handleClick(evt) {\r\n this.setState({\r\n menuAnchor: evt.currentTarget,\r\n });\r\n }\r\n\r\n handleClose(evt) {\r\n this.setState({\r\n menuAnchor: false,\r\n });\r\n }\r\n\r\n render() {\r\n let { categories } = this.props;\r\n let starred_lists = JSON.parse(\r\n window.localStorage.getItem(\"starred_lists\") || \"[]\"\r\n );\r\n\r\n return (\r\n \r\n \r\n Browse\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Button, Divider, Menu, MenuItem } from \"@material-ui/core\";\r\nimport CloudDownloadOutlinedIcon from \"@material-ui/icons/CloudDownloadOutlined\";\r\n\r\nimport { guid } from \"../../components\";\r\n\r\nexport default class DownloadMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n menuAnchor: false,\r\n ...props.state,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleSeason = this.handleSeason.bind(this);\r\n }\r\n\r\n handleClick(evt) {\r\n this.setState({\r\n menuAnchor: evt.currentTarget,\r\n });\r\n }\r\n\r\n handleClose() {\r\n this.setState({\r\n menuAnchor: false,\r\n });\r\n }\r\n\r\n handleSeason(evt) {\r\n evt.preventDefault();\r\n let { auth, metadata, server } = this.state;\r\n for (let n = 0; n < metadata.children.length; n++) {\r\n let req_path = `${server}/api/v1/redirectdownload/${encodeURIComponent(metadata.children[n].name)}`;\r\n let req_args = `?a=${auth}&id=${metadata.children[n].id}`;\r\n\r\n window.open(req_path + req_args);\r\n }\r\n this.setState({\r\n menuAnchor: evt.currentTarget,\r\n });\r\n }\r\n\r\n render() {\r\n let { menuAnchor, videos } = this.state;\r\n\r\n return (\r\n \r\n }>\r\n Download\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogTitle,\r\n IconButton,\r\n Tooltip,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport CloudDownloadIcon from \"@material-ui/icons/CloudDownload\";\r\nimport CloudUploadIcon from \"@material-ui/icons/CloudUpload\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport KeyboardArrowLeftIcon from \"@material-ui/icons/KeyboardArrowLeft\";\r\nimport KeyboardArrowRightIcon from \"@material-ui/icons/KeyboardArrowRight\";\r\nimport SaveAltIcon from \"@material-ui/icons/SaveAlt\";\r\nimport StarIcon from \"@material-ui/icons/Star\";\r\n\r\nimport { Container, Draggable } from \"react-smooth-dnd\";\r\nimport { arrayMoveImmutable } from \"array-move\";\r\nimport List from \"@material-ui/core/List\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\r\nimport DragHandleIcon from \"@material-ui/icons/DragHandle\";\r\n\r\nimport Swal from \"sweetalert2/src/sweetalert2.js\";\r\nimport \"@sweetalert2/theme-dark/dark.css\";\r\n\r\nimport { guid, theme } from \"../../components\";\r\nimport \"./index.css\";\r\n\r\nexport default class Carousel extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n currentEditing: null,\r\n hide: props.hide || false,\r\n isAndroid: /(android)/i.test(\r\n navigator.userAgent || navigator.vendor || window.opera\r\n ),\r\n isIOS:\r\n /iPad|iPhone|iPod/.test(\r\n navigator.userAgent || navigator.vendor || window.opera\r\n ) && !window.MSStream,\r\n isEditOpen: false,\r\n metadata: this.props.metadata,\r\n server:\r\n window.sessionStorage.getItem(\"server\") ||\r\n window.localStorage.getItem(\"server\") ||\r\n window.location.origin,\r\n star: props.star,\r\n };\r\n this.handleStar = this.handleStar.bind(this);\r\n this.handleStarReset = this.handleStarReset.bind(this);\r\n this.handleStarImport = this.handleStarImport.bind(this);\r\n this.handleStarExport = this.handleStarExport.bind(this);\r\n this.handlePin = this.handlePin.bind(this);\r\n this.handleEditOpen = this.handleEditOpen.bind(this);\r\n this.handleEditClose = this.handleEditClose.bind(this);\r\n this.handleEditDrop = this.handleEditDrop.bind(this);\r\n this.handleEditSave = this.handleEditSave.bind(this);\r\n this.handleScroll = this.handleScroll.bind(this);\r\n }\r\n\r\n handleStar(item, category) {\r\n let { metadata } = this.state;\r\n let starred_lists = JSON.parse(\r\n window.localStorage.getItem(\"starred_lists\") || \"[]\"\r\n );\r\n\r\n try {\r\n let index1 = starred_lists.findIndex((i) => i.id == category.id);\r\n let index2 = starred_lists[index1].children.findIndex(\r\n (i) => i.id == item.id\r\n );\r\n let index3 = metadata.findIndex((i) => i.id == category.id);\r\n let index4 = metadata[index3].children.findIndex((i) => i.id == item.id);\r\n starred_lists[index1].children.splice(index2, 1);\r\n metadata[index3].children.splice(index4, 1);\r\n window.localStorage.setItem(\r\n \"starred_lists\",\r\n JSON.stringify(starred_lists)\r\n );\r\n this.setState({ metadata: metadata });\r\n } catch {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: \"Your starred list seems to be corrupted!\",\r\n icon: \"error\",\r\n confirmButtonText: \"Reset\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Ignore\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n window.localStorage.setItem(\"starred_lists\", \"[]\");\r\n location.reload();\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleStarReset(evt) {\r\n let { metadata } = this.state;\r\n\r\n Swal.fire({\r\n title: \"Warning!\",\r\n text: \"Are you sure you want to delete this starred list?\",\r\n icon: \"warning\",\r\n confirmButtonText: \"Delete\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"No\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n let starred_lists = JSON.parse(\r\n window.localStorage.getItem(\"starred_lists\") || \"[]\"\r\n );\r\n if (starred_lists.length == 1) {\r\n starred_lists.shift();\r\n metadata.shift();\r\n } else {\r\n starred_lists.splice(evt, 1);\r\n metadata.splice(evt, 1);\r\n }\r\n window.localStorage.setItem(\r\n \"starred_lists\",\r\n JSON.stringify(starred_lists)\r\n );\r\n this.setState({ metadata: metadata });\r\n }\r\n });\r\n }\r\n\r\n handleStarImport(evt) {\r\n if (evt.target.files.length) {\r\n var file = evt.target.files[0];\r\n var reader = new FileReader();\r\n reader.onload = (evtR) => {\r\n let starred_lists = JSON.parse(\r\n window.localStorage.getItem(\"starred_lists\") || \"[]\"\r\n );\r\n let starred_list = JSON.parse(evtR.target.result);\r\n let i = parseInt(evt.target.id.replace(\"file-input-\", \"\"));\r\n starred_lists[i].children = starred_list.children;\r\n window.localStorage.setItem(\r\n \"starred_lists\",\r\n JSON.stringify(starred_lists)\r\n );\r\n let { metadata } = this.state;\r\n if (metadata.length && metadata[i].type == \"Starred\") {\r\n metadata[i].children = starred_list.children;\r\n this.setState({\r\n metadata: metadata,\r\n });\r\n }\r\n };\r\n reader.readAsText(file);\r\n }\r\n }\r\n\r\n handleStarExport(evt) {\r\n let starred_lists = JSON.parse(\r\n window.localStorage.getItem(\"starred_lists\") || \"[]\"\r\n );\r\n let starred_list = starred_lists[evt];\r\n\r\n const file = new Blob([JSON.stringify(starred_list)], {\r\n type: \"application/json\",\r\n });\r\n const link = document.createElement(\"a\");\r\n link.href = window.URL.createObjectURL(file);\r\n link.download = `libdrive-starred-${starred_list.name}-${+new Date()}.json`;\r\n link.click();\r\n }\r\n\r\n handlePin(evt, pin) {\r\n let starred_lists = JSON.parse(\r\n window.localStorage.getItem(\"starred_lists\") || \"[]\"\r\n );\r\n if (!pin) {\r\n starred_lists[evt].categoryInfo.pinned = false;\r\n window.localStorage.setItem(\r\n \"starred_lists\",\r\n JSON.stringify(starred_lists)\r\n );\r\n this.setState({ metadata: starred_lists });\r\n } else {\r\n starred_lists[evt].categoryInfo.pinned = true;\r\n window.localStorage.setItem(\r\n \"starred_lists\",\r\n JSON.stringify(starred_lists)\r\n );\r\n this.setState({ metadata: starred_lists });\r\n }\r\n }\r\n\r\n handleEditOpen(evt) {\r\n this.setState({ currentEditing: evt, isEditOpen: true });\r\n }\r\n\r\n handleEditClose() {\r\n let starred_lists = JSON.parse(\r\n window.localStorage.getItem(\"starred_lists\") || \"[]\"\r\n );\r\n this.setState({\r\n currentEditing: null,\r\n isEditOpen: false,\r\n metadata: starred_lists,\r\n });\r\n }\r\n\r\n handleEditDrop({ removedIndex, addedIndex }) {\r\n let { metadata, currentEditing } = this.state;\r\n let items = metadata[currentEditing].children;\r\n metadata[currentEditing].children = arrayMoveImmutable(\r\n items,\r\n removedIndex,\r\n addedIndex\r\n );\r\n this.setState({ metadata: metadata });\r\n }\r\n\r\n handleEditSave() {\r\n let { metadata } = this.state;\r\n window.localStorage.setItem(\"starred_lists\", JSON.stringify(metadata));\r\n this.setState({ currentEditing: null, isEditOpen: false });\r\n }\r\n\r\n handleScroll(n, offset) {\r\n document.getElementsByClassName(\"carousel__items\")[n].scrollLeft += offset;\r\n }\r\n\r\n render() {\r\n let {\r\n currentEditing,\r\n hide,\r\n isAndroid,\r\n isIOS,\r\n isEditOpen,\r\n metadata,\r\n server,\r\n star,\r\n } = this.state;\r\n\r\n return star ? (\r\n \r\n {metadata.length\r\n ? metadata.map((category, p) =>\r\n category.children.length || !hide ? (\r\n
\r\n
\r\n
\r\n
\r\n \r\n {category.categoryInfo.name}\r\n \r\n \r\n this.handleEditOpen(p)}\r\n style={{ marginLeft: \"20px\" }}\r\n >\r\n \r\n \r\n \r\n \r\n this.handleStarReset(p)}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n this.handleStarExport(p)}\r\n >\r\n \r\n \r\n \r\n {category.categoryInfo.pinned ? (\r\n
\r\n this.handlePin(p, false)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n this.handlePin(p, true)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n {category.children.length\r\n ? category.children.map((item) => (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {item.title}\r\n \r\n \r\n \r\n this.handleStar(item, category)\r\n }\r\n >\r\n \r\n \r\n
\r\n \r\n
\r\n ))\r\n : null}\r\n
\r\n
\r\n ) : null\r\n )\r\n : null}\r\n {isEditOpen ? (\r\n
\r\n \r\n {metadata[currentEditing].categoryInfo.name}\r\n \r\n \r\n \r\n {metadata[currentEditing].children.map(({ id, title }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n }\r\n >\r\n Save\r\n \r\n \r\n
\r\n \r\n ) : null}\r\n
\r\n ) : (\r\n \r\n {metadata.length\r\n ? metadata.map((category, n) =>\r\n category.children.length || !hide ? (\r\n
\r\n
\r\n
\r\n \r\n {category.categoryInfo.name}\r\n \r\n
\r\n {isAndroid || isIOS ? null : (\r\n
\r\n this.handleScroll(n, -500)}>\r\n \r\n \r\n this.handleScroll(n, 500)}>\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n {category.children.length\r\n ? category.children.map((item) => (\r\n
\r\n \r\n \r\n \r\n \r\n {item.title}\r\n \r\n \r\n ))\r\n : null}\r\n
\r\n
\r\n ) : null\r\n )\r\n : null}\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { CircularProgress } from \"@material-ui/core\";\r\n\r\nimport Swal from \"sweetalert2/src/sweetalert2.js\";\r\nimport \"@sweetalert2/theme-dark/dark.css\";\r\n\r\nimport axios from \"axios\";\r\nimport queryString from \"query-string\";\r\n\r\nimport { Footer, Nav, PageMenu, SortMenu, seo, theme, Tile } from \"../../components\";\r\n\r\nexport default class CategoryBrowse extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n auth: window.sessionStorage.getItem(\"auth\") || window.localStorage.getItem(\"auth\") || \"0\",\r\n category: this.props.match.params.category,\r\n genre: queryString.parse(this.props.location.search).genre || \"\",\r\n isLoaded: false,\r\n metadata: {},\r\n page: parseInt(queryString.parse(this.props.location.search).page) || 1,\r\n range: `${queryString.parse(this.props.location.search).page === undefined ? `0:${JSON.parse(window.localStorage.getItem(\"ui_config\") || window.sessionStorage.getItem(\"ui_config\") || \"{}\").range || \"16\"}` : `${(parseInt(queryString.parse(this.props.location.search).page) - 1) * parseInt(JSON.parse(window.localStorage.getItem(\"ui_config\") || window.sessionStorage.getItem(\"ui_config\") || \"{}\").range || \"16\")}:${parseInt(queryString.parse(this.props.location.search).page) * parseInt(JSON.parse(window.localStorage.getItem(\"ui_config\") || window.sessionStorage.getItem(\"ui_config\") || \"{}\").range || \"16\")}`}`,\r\n server: window.sessionStorage.getItem(\"server\") || window.localStorage.getItem(\"server\") || window.location.origin,\r\n sort: queryString.parse(this.props.location.search).sort || \"\",\r\n ui_config: JSON.parse(window.localStorage.getItem(\"ui_config\") || window.sessionStorage.getItem(\"ui_config\") || \"{}\"),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n let { auth, category, genre, range, server, sort, ui_config } = this.state;\r\n\r\n if (!auth || !server) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n\r\n window.scrollTo(0, 0);\r\n\r\n let req_path = `${server}/api/v1/metadata`;\r\n let req_args = `?a=${auth}&c=${encodeURIComponent(category)}&g=${encodeURIComponent(genre)}&r=${range}&s=${sort}`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) => {\r\n this.setState({\r\n isLoaded: true,\r\n metadata: response.data.content,\r\n pages: Math.ceil(response.data.content[0][\"length\"] / parseInt(ui_config.range || \"16\")) || 1,\r\n });\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Login\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n });\r\n } else if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n } else if (error.request) {\r\n if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `libDrive could not communicate with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n seo();\r\n }\r\n\r\n render() {\r\n let { genre, isLoaded, metadata, page, pages, sort, ui_config } = this.state;\r\n\r\n if (isLoaded) {\r\n seo({\r\n title: `${ui_config.title || \"libDrive\"} - ${metadata[0].categoryInfo.name}`,\r\n description: `Browse ${metadata[0].categoryInfo.name} on ${ui_config.title || \"libDrive\"}!`,\r\n });\r\n }\r\n\r\n return isLoaded ? (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) : (\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { Button, Menu, MenuItem } from \"@material-ui/core\";\r\nimport TvIcon from \"@material-ui/icons/Tv\";\r\n\r\nimport { guid } from \"../../components\";\r\n\r\nexport default class ChildrenMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n menuAnchor: false,\r\n ...props.state,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n }\r\n\r\n handleClick(evt) {\r\n this.setState({\r\n menuAnchor: evt.currentTarget,\r\n });\r\n }\r\n\r\n handleClose() {\r\n this.setState({\r\n menuAnchor: false,\r\n });\r\n }\r\n\r\n render() {\r\n let { metadata, menuAnchor } = this.state;\r\n return (\r\n \r\n }\r\n >\r\n Seasons\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\nimport { version } from \"../../components\";\r\n\r\nconst styles = (theme) => ({\r\n footer__container: {\r\n width: \"100%\",\r\n height: \"75px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n});\r\n\r\nclass Footer extends Component {\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles, { withTheme: true })(Footer);\r\n","import React, { Component } from \"react\";\r\n\r\nimport { CircularProgress } from \"@material-ui/core\";\r\n\r\nimport Swal from \"sweetalert2/src/sweetalert2.js\";\r\nimport \"@sweetalert2/theme-dark/dark.css\";\r\n\r\nimport axios from \"axios\";\r\nimport queryString from \"query-string\";\r\n\r\nimport { Footer, Nav, PageMenu, SortMenu, seo, theme, Tile } from \"../../components\";\r\n\r\nexport default class CategoryBrowse extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n auth: window.sessionStorage.getItem(\"auth\") || window.localStorage.getItem(\"auth\") || \"0\",\r\n genre: queryString.parse(this.props.location.search).genre || \"\",\r\n isLoaded: false,\r\n metadata: {},\r\n page: parseInt(queryString.parse(this.props.location.search).page) || 1,\r\n range: `${queryString.parse(this.props.location.search).page === undefined ? \"0:8\" : `${(parseInt(queryString.parse(this.props.location.search).page) - 1) * 8}:${parseInt(queryString.parse(this.props.location.search).page) * 8}`}`,\r\n server: window.sessionStorage.getItem(\"server\") || window.localStorage.getItem(\"server\") || window.location.origin,\r\n sort: queryString.parse(this.props.location.search).sort || \"\",\r\n ui_config: JSON.parse(window.localStorage.getItem(\"ui_config\") || window.sessionStorage.getItem(\"ui_config\") || \"{}\"),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n let { auth, genre, range, server, sort } = this.state;\r\n\r\n if (!auth || !server) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n\r\n let req_path = `${server}/api/v1/metadata`;\r\n let req_args = `?a=${auth}&g=${encodeURIComponent(genre)}&r=${range}&s=${sort}`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) => {\r\n this.setState({\r\n isLoaded: true,\r\n metadata: response.data.content,\r\n pages: Math.ceil(response.data.content[0][\"length\"] / 8) || 1,\r\n });\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Login\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n });\r\n } else if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n } else if (error.request) {\r\n if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `libDrive could not communicate with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n seo();\r\n }\r\n\r\n render() {\r\n let { genre, isLoaded, metadata, page, pages, sort, ui_config } = this.state;\r\n\r\n if (isLoaded) {\r\n seo({\r\n title: `${ui_config.title || \"libDrive\"}${genre ? ` - ${genre}` : \"\"}`,\r\n description: `Browse ${genre ? `the ${genre} genre` : \"genres\"} on ${ui_config.title || \"libDrive\"}!`,\r\n });\r\n }\r\n\r\n return isLoaded ? (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) : (\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","export default function guid() {\r\n function _p8(s) {\r\n var p = (Math.random().toString(16) + \"000000000\").substr(2, 8);\r\n return s ? \"-\" + p.substr(0, 4) + \"-\" + p.substr(4, 4) : p;\r\n }\r\n return _p8() + _p8(true) + _p8(true) + _p8();\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Avatar, Button, Container, CssBaseline, TextField, Typography } from \"@material-ui/core\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\r\n\r\nimport Swal from \"sweetalert2/src/sweetalert2.js\";\r\nimport \"@sweetalert2/theme-dark/dark.css\";\r\n\r\nimport axios from \"axios\";\r\n\r\nimport { theme } from \"../../components\";\r\nimport Footer from \"../../components/Footer\";\r\n\r\nconst styles = (theme) => ({\r\n paper: {\r\n marginTop: theme.spacing(8),\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n avatar: {\r\n margin: theme.spacing(1),\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n form: {\r\n width: \"100%\",\r\n marginTop: theme.spacing(1),\r\n },\r\n submit: {\r\n margin: theme.spacing(3, 0, 2),\r\n },\r\n});\r\n\r\nclass Login extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n auth: \"\",\r\n error: \"\",\r\n page: false,\r\n password: \"\",\r\n signup: false,\r\n server: window.location.origin,\r\n username: \"\",\r\n };\r\n\r\n this.handleTempServerChange = this.handleTempServerChange.bind(this);\r\n this.handlePassChange = this.handlePassChange.bind(this);\r\n this.handleUserChange = this.handleUserChange.bind(this);\r\n this.handleServerSubmit = this.handleServerSubmit.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n this.handleSignup = this.handleSignup.bind(this);\r\n this.dismissError = this.dismissError.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let { server } = this.state;\r\n\r\n let req_path = `${server}/api/v1/auth`;\r\n let req_args = `?rules=signup`;\r\n\r\n axios.get(req_path + req_args).then((response) => {\r\n let data = response.data;\r\n if (data.code === 200) {\r\n window.localStorage.setItem(\"auth\", \"0\");\r\n window.localStorage.setItem(\"server\", server);\r\n window.localStorage.setItem(\"ui_config\", JSON.stringify(data.content.ui_config));\r\n window.sessionStorage.setItem(\"auth\", \"0\");\r\n window.sessionStorage.setItem(\"server\", server);\r\n window.sessionStorage.setItem(\"ui_config\", JSON.stringify(data.content.ui_config));\r\n this.props.history.push(\"/browse\");\r\n } else if (data.content === true) {\r\n this.setState({ signup: true, page: true });\r\n } else if (data.content === false) {\r\n this.setState({ signup: false, page: true });\r\n }\r\n });\r\n }\r\n\r\n dismissError() {\r\n this.setState({ error: \"\" });\r\n }\r\n\r\n handleServerSubmit(evt) {\r\n evt.preventDefault();\r\n let { server } = this.state;\r\n\r\n if (!server) {\r\n return this.setState({ error: \"Server is required\" });\r\n }\r\n if (!server.startsWith(\"http\")) {\r\n server = `https://${server}`;\r\n }\r\n\r\n let req_path = `${server}/api/v1/auth`;\r\n let req_args = `?rules=signup`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) => {\r\n let data = response.data;\r\n if (data.code === 200) {\r\n window.localStorage.setItem(\"auth\", \"0\");\r\n window.localStorage.setItem(\"server\", server);\r\n window.localStorage.setItem(\"ui_config\", JSON.stringify(data.content.ui_config));\r\n window.sessionStorage.setItem(\"auth\", \"0\");\r\n window.sessionStorage.setItem(\"server\", server);\r\n window.sessionStorage.setItem(\"ui_config\", JSON.stringify(data.content.ui_config));\r\n this.props.history.push(\"/browse\");\r\n } else if (data.content === true) {\r\n this.setState({ server: server, signup: true, page: true });\r\n } else if (data.content === false) {\r\n this.setState({ server: server, signup: false, page: true });\r\n }\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n try {\r\n let data = response.data;\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n } catch {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `You were unable to communicate with the server. Are you sure ${server} is the correct server?`,\r\n icon: \"error\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n }\r\n });\r\n }\r\n\r\n handleSubmit(evt) {\r\n evt.preventDefault();\r\n let { password, server, username } = this.state;\r\n\r\n let req_path = `${server}/api/v1/auth`;\r\n let req_args = `?u=${encodeURIComponent(username)}&p=${encodeURIComponent(password)}`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) => {\r\n let data = response.data;\r\n window.localStorage.setItem(\"server\", server);\r\n window.sessionStorage.setItem(\"server\", server);\r\n window.localStorage.setItem(\"ui_config\", JSON.stringify(data.content.ui_config));\r\n window.localStorage.setItem(\"auth\", data.content.auth);\r\n window.sessionStorage.setItem(\"auth\", data.content.auth);\r\n window.sessionStorage.setItem(\"ui_config\", JSON.stringify(data.content.ui_config));\r\n this.props.history.push(\"/\");\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n try {\r\n let data = response.data;\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n } catch {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `The username and or password was incorrect!`,\r\n icon: \"error\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n }\r\n });\r\n return this.setState({ error: \"\" });\r\n }\r\n\r\n handleSignup() {\r\n let { password, server, username } = this.state;\r\n\r\n if (!username) {\r\n return this.setState({ error: \"Username is required\" });\r\n }\r\n if (!password) {\r\n return this.setState({ error: \"Password is required\" });\r\n }\r\n\r\n let req_path = `${server}/api/v1/signup`;\r\n let req_args = `?u=${encodeURIComponent(username)}&p=${encodeURIComponent(password)}`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) => {\r\n let data = response.data;\r\n window.localStorage.setItem(\"server\", server);\r\n window.sessionStorage.setItem(\"server\", server);\r\n window.localStorage.setItem(\"auth\", data.content.auth);\r\n window.sessionStorage.setItem(\"auth\", data.content.auth);\r\n this.props.history.push(\"/\");\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n let data = error.response;\r\n try {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n } catch {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `Something went wrong while communicating with the server ${server}`,\r\n icon: \"error\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n }\r\n });\r\n return this.setState({ error: \"\" });\r\n }\r\n\r\n handleTempServerChange(evt) {\r\n this.setState({\r\n server: evt.target.value,\r\n });\r\n }\r\n\r\n handleUserChange(evt) {\r\n this.setState({\r\n username: evt.target.value,\r\n });\r\n }\r\n\r\n handlePassChange(evt) {\r\n this.setState({\r\n password: evt.target.value,\r\n });\r\n }\r\n\r\n render() {\r\n let { error, password, page, server, username } = this.state;\r\n const { classes } = this.props;\r\n\r\n return !page ? (\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
Sign in \r\n
\r\n
\r\n \r\n
\r\n
\r\n ) : (\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
Sign in \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles, { withTheme: true })(Login);\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Redirect } from \"react-router-dom\";\r\n\r\nimport { CircularProgress } from \"@material-ui/core\";\r\n\r\nimport { guid } from \"../../components\";\r\n\r\nexport default class Logout extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { isLoaded: false };\r\n }\r\n\r\n componentDidMount() {\r\n window.localStorage.clear();\r\n window.sessionStorage.clear();\r\n setTimeout(() => this.setState({ isLoaded: true }), 500);\r\n }\r\n\r\n render() {\r\n let { isLoaded } = this.state;\r\n\r\n return isLoaded ? (\r\n \r\n ) : (\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport {\r\n AppBar,\r\n Avatar,\r\n IconButton,\r\n InputBase,\r\n Toolbar,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { alpha } from \"@material-ui/core/styles\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\nimport {\r\n AccountMenu,\r\n BrowseMenu,\r\n NewsMenu,\r\n ThemeMenu,\r\n guid,\r\n} from \"../../components\";\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.default,\r\n color: theme.palette.text.primary,\r\n },\r\n grow: {\r\n flexGrow: 1,\r\n },\r\n title: {\r\n display: \"none\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"block\",\r\n },\r\n },\r\n search: {\r\n position: \"relative\",\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: alpha(theme.palette.common.main, 0.15),\r\n \"&:hover\": {\r\n backgroundColor: alpha(theme.palette.common.main, 0.25),\r\n },\r\n marginRight: theme.spacing(2),\r\n marginLeft: 0,\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n marginLeft: theme.spacing(3),\r\n width: \"auto\",\r\n },\r\n },\r\n searchIcon: {\r\n padding: theme.spacing(0, 2),\r\n height: \"100%\",\r\n position: \"absolute\",\r\n zIndex: 10,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n inputRoot: {\r\n color: \"inherit\",\r\n },\r\n inputInput: {\r\n padding: theme.spacing(1, 1, 1, 0),\r\n paddingLeft: `calc(1em + ${theme.spacing(4)}px)`,\r\n transition: theme.transitions.create(\"width\"),\r\n width: \"15vw\",\r\n maxWidth: \"500px\",\r\n },\r\n});\r\n\r\nclass NavUI extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ...props.state,\r\n ui_config: JSON.parse(\r\n window.localStorage.getItem(\"ui_config\") ||\r\n window.sessionStorage.getItem(\"ui_config\") ||\r\n \"{}\"\r\n ),\r\n };\r\n this.searchChange = this.searchChange.bind(this);\r\n this.searchSubmit = this.searchSubmit.bind(this);\r\n this.onMouseOver = this.onMouseOver.bind(this);\r\n this.onMouseOut = this.onMouseOut.bind(this);\r\n }\r\n\r\n searchChange(evt) {\r\n this.setState({ search: evt.target.value });\r\n }\r\n\r\n searchSubmit(evt) {\r\n evt.preventDefault();\r\n if (!(this.state.search == \"\" || this.state.search == null)) {\r\n this.props.history.push({\r\n pathname: `/search/${this.state.search}`,\r\n key: guid(),\r\n });\r\n }\r\n }\r\n\r\n onMouseOver(evt) {\r\n evt.target.style.width = \"20vw\";\r\n }\r\n\r\n onMouseOut(evt) {\r\n evt.target.style.width = \"15vw\";\r\n }\r\n\r\n render() {\r\n let { accounts, categories, query, search, ui_config } = this.state;\r\n const { classes } = this.props;\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n {ui_config.icon_on_nav ? (\r\n \r\n L\r\n \r\n ) : (\r\n \r\n {ui_config.title || \"libDrive\"}\r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n \r\n {!ui_config.hide_news ? : null}\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles, { withTheme: true })(NavUI);\r\n","import React, { Component } from \"react\";\r\n\r\nimport axios from \"axios\";\r\n\r\nimport NavUI from \"./NavUI\";\r\n\r\nexport default class Nav extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n accounts: {},\r\n auth: window.sessionStorage.getItem(\"auth\") || window.localStorage.getItem(\"auth\") || \"0\",\r\n categories: [],\r\n isLoaded: false,\r\n server: window.sessionStorage.getItem(\"server\") || window.localStorage.getItem(\"server\") || window.location.origin,\r\n ui_config: {},\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n let { auth, server } = this.state;\r\n\r\n let req_path = `${server}/api/v1/environment`;\r\n let req_args = `?a=${auth}`;\r\n\r\n axios.get(req_path + req_args).then((response) => {\r\n let data = response.data;\r\n this.setState({\r\n accounts: data.content.account_list,\r\n categories: data.content.category_list,\r\n isLoaded: true,\r\n ui_config: data.content.ui_config,\r\n });\r\n if (typeof data.content.ui_config == \"object\") {\r\n window.localStorage.setItem(\"ui_config\", JSON.stringify(data.content.ui_config));\r\n window.sessionStorage.setItem(\"ui_config\", JSON.stringify(data.content.ui_config));\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n let { accounts, categories, isLoaded } = this.state;\r\n\r\n return isLoaded ? (\r\n \r\n \r\n
\r\n ) : isLoaded ? (\r\n \r\n \r\n
\r\n ) : (\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport {\r\n Badge,\r\n Divider,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n Menu,\r\n} from \"@material-ui/core\";\r\nimport NotificationsIcon from \"@material-ui/icons/Notifications\";\r\n\r\nimport axios from \"axios\";\r\n\r\nimport { guid, theme, version } from \"../../components\";\r\n\r\nexport default class NewsMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n dismissed:\r\n (window.localStorage.getItem(\"dismissed\") || \"false\") == \"true\",\r\n isLoaded: false,\r\n isNew: false,\r\n lastChecked: new Date(\r\n window.localStorage.getItem(\"last_news_check\") || \"0\"\r\n ).getTime(),\r\n menuAnchor: false,\r\n news: JSON.parse(window.localStorage.getItem(\"news\") || \"[]\"),\r\n now: new Date().getTime(),\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let { isNew, lastChecked, news, now } = this.state;\r\n let targetTime = lastChecked + 3 * 60 * 60 * 1000;\r\n\r\n if (news.length && news[0].tag_name) {\r\n if (version != news[0].tag_name.replace(\"v\", \"\")) {\r\n isNew = true;\r\n }\r\n }\r\n\r\n if (now >= targetTime) {\r\n axios\r\n .get(\"https://api.github.com/repos/libDrive/libDrive/releases\")\r\n .then((response) => {\r\n let data = response.data;\r\n window.localStorage.setItem(\"news\", JSON.stringify(data));\r\n window.localStorage.setItem(\"last_news_check\", now);\r\n if (\r\n news.length &&\r\n data.length &&\r\n news[0].tag_name != data[0].tag_name\r\n ) {\r\n window.localStorage.setItem(\"dismissed\", \"false\");\r\n this.setState({\r\n dismissed: false,\r\n isLoaded: true,\r\n isNew: isNew,\r\n news: data,\r\n });\r\n } else {\r\n this.setState({\r\n isLoaded: true,\r\n isNew: isNew,\r\n news: data,\r\n });\r\n }\r\n });\r\n } else {\r\n this.setState({ isLoaded: true, isNew: isNew });\r\n }\r\n }\r\n\r\n handleClick(evt) {\r\n let { news, now } = this.state;\r\n\r\n this.setState({\r\n menuAnchor: evt.currentTarget,\r\n });\r\n\r\n axios\r\n .get(\"https://api.github.com/repos/libDrive/libDrive/releases\")\r\n .then((response) => {\r\n let data = response.data;\r\n window.localStorage.setItem(\"news\", JSON.stringify(data));\r\n window.localStorage.setItem(\"last_news_check\", now);\r\n window.localStorage.setItem(\"dismissed\", \"true\");\r\n this.setState({\r\n dismissed: true,\r\n news: data,\r\n });\r\n });\r\n }\r\n\r\n handleClose() {\r\n this.setState({\r\n menuAnchor: false,\r\n });\r\n }\r\n\r\n render() {\r\n let { dismissed, isNew, isLoaded, menuAnchor, news } = this.state;\r\n\r\n return isLoaded ? (\r\n \r\n \r\n {!dismissed && isNew ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n
\r\n ) : null;\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Nav } from \"../../components\";\r\n\r\nimport \"./index.css\";\r\n\r\nexport default class NotFound extends Component {\r\n render() {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
Error 404: Not Found \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Link, Redirect } from \"react-router-dom\";\r\n\r\nimport { Pagination, PaginationItem } from \"@material-ui/lab\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\nimport { guid } from \"../../components\";\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n \"& > *\": {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n margin: \"20px\",\r\n },\r\n },\r\n});\r\n\r\nclass PageMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = props.state;\r\n }\r\n\r\n render() {\r\n let { genre, page, pages, sort } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (page > pages) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n
= 600\r\n ? \"large\"\r\n : window.innerWidth >= 390\r\n ? \"medium\"\r\n : \"small\"\r\n }\r\n color=\"primary\"\r\n renderItem={(item) =>\r\n item.page ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default withStyles(styles, { withTheme: true })(PageMenu);\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Button, Divider, Menu, MenuItem } from \"@material-ui/core\";\r\nimport PlayCircleOutlineIcon from \"@material-ui/icons/PlayCircleOutline\";\r\n\r\nexport default class PlayerMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n menuAnchor: false,\r\n ...props.state,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n }\r\n\r\n handleClick(evt) {\r\n this.setState({\r\n menuAnchor: evt.currentTarget,\r\n });\r\n }\r\n\r\n handleClose(evt) {\r\n this.setState({\r\n menuAnchor: false,\r\n });\r\n }\r\n\r\n render() {\r\n let { auth, id, isAndroid, isIOS, metadata, server } = this.state;\r\n\r\n let mobileUrl;\r\n const streamURL = new URL(`${server}/api/v1/redirectdownload/${encodeURIComponent(metadata.name)}?id=${id}`);\r\n if (isAndroid) {\r\n const scheme = streamURL.protocol.slice(0, -1);\r\n streamURL.hash = `Intent;action=android.intent.action.VIEW;scheme=${scheme};type=${metadata.mimeType};S.title=${encodeURIComponent(metadata.name)};end`;\r\n streamURL.protocol = \"intent\";\r\n mobileUrl = streamURL.toString();\r\n } else if (isIOS) {\r\n streamURL.host = \"x-callback-url\";\r\n streamURL.port = \"\";\r\n streamURL.pathname = \"stream\";\r\n streamURL.search = `url=${server}/api/v1/redirectdownload/${encodeURIComponent(metadata.name)}?id=${id}`;\r\n streamURL.protocol = \"vlc-x-callback\";\r\n mobileUrl = streamURL.toString();\r\n }\r\n\r\n return (\r\n \r\n }>\r\n Player\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Button } from \"@material-ui/core\";\r\nimport PlaylistPlayRoundedIcon from \"@material-ui/icons/PlaylistPlayRounded\";\r\n\r\nexport default class PlaylistMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = props.state;\r\n this.handleClick = this.handleClick.bind(this);\r\n }\r\n\r\n handleClick(evt) {\r\n let { auth, metadata, server } = this.state;\r\n let m3u8 = `#EXTM3U\\n#EXTENC: UTF-8\\n#PLAYLIST: ${metadata.name}\\n`;\r\n\r\n for (var i = 0; i < metadata.children.length; i++) {\r\n m3u8 += `#EXTINF:0, ${metadata.children[i].name}\\n${server}/api/v1/redirectdownload/${encodeURI(metadata.children[i].name)}?id=${metadata.children[i].id}\\n`;\r\n }\r\n\r\n var element = document.createElement(\"a\");\r\n element.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + encodeURIComponent(m3u8));\r\n element.setAttribute(\"download\", `${metadata.name}.m3u8`);\r\n element.style.display = \"none\";\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n }>\r\n Playlist\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { CircularProgress } from \"@material-ui/core\";\r\n\r\nimport Swal from \"sweetalert2/src/sweetalert2.js\";\r\nimport \"@sweetalert2/theme-dark/dark.css\";\r\n\r\nimport axios from \"axios\";\r\n\r\nimport { Carousel, Footer, Nav, seo, theme } from \"../../components\";\r\n\r\nexport default class Search extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n auth: window.sessionStorage.getItem(\"auth\") || window.localStorage.getItem(\"auth\") || \"0\",\r\n isLoaded: false,\r\n metadata: [],\r\n query: this.props.match.params.q,\r\n server: window.sessionStorage.getItem(\"server\") || window.localStorage.getItem(\"server\") || window.location.origin,\r\n ui_config: JSON.parse(window.localStorage.getItem(\"ui_config\") || window.sessionStorage.getItem(\"ui_config\") || \"{}\"),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n let { auth, query, server, ui_config } = this.state;\r\n\r\n if (!auth || !server) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n\r\n seo({\r\n title: `${ui_config.title || \"libDrive\"} - ${query}`,\r\n description: `Find ${query} on ${ui_config.title || \"libDrive\"}!`,\r\n });\r\n\r\n let req_path = `${server}/api/v1/metadata`;\r\n let req_args = `?a=${auth}&q=${encodeURIComponent(query)}`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) =>\r\n this.setState({\r\n isLoaded: true,\r\n metadata: response.data.content,\r\n })\r\n )\r\n .catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Login\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n });\r\n } else if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n } else if (error.request) {\r\n if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `libDrive could not communicate with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n seo();\r\n }\r\n\r\n render() {\r\n let { isLoaded, metadata, query } = this.state;\r\n\r\n return isLoaded ? (\r\n \r\n \r\n \r\n \r\n
\r\n ) : (\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","export default function seo(data = {}) {\r\n const ui_config = JSON.parse(\r\n window.localStorage.getItem(\"ui_config\") ||\r\n window.sessionStorage.getItem(\"ui_config\") ||\r\n \"{}\"\r\n );\r\n data.title = data.title || ui_config.title || \"libDrive\";\r\n data.description =\r\n data.description ||\r\n \"libDrive is a Google Drive media library manager and indexer, similar to Plex, that organizes Google Drive media to offer an intuitive and user-friendly experience.\";\r\n data.image = data.image || ui_config.icon || \"/images/icons/icon-512x512.png\";\r\n data.type = data.type || \"website\";\r\n document.title = data.title || ui_config.title;\r\n document\r\n .querySelector('meta[property=\"og:title\"]')\r\n .setAttribute(\"content\", data.title);\r\n document\r\n .querySelector('meta[name=\"description\"]')\r\n .setAttribute(\"content\", data.description);\r\n document\r\n .querySelector('meta[property=\"og:description\"]')\r\n .setAttribute(\"content\", data.description);\r\n document\r\n .querySelector('meta[property=\"og:image\"]')\r\n .setAttribute(\"content\", data.image);\r\n document\r\n .querySelector('meta[property=\"og:type\"]')\r\n .setAttribute(\"content\", data.type);\r\n}\r\n","import { createTheme } from \"@material-ui/core/styles\";\r\n\r\nconst lightTheme = createTheme({\r\n palette: {\r\n type: \"light\",\r\n primary: {\r\n main: \"#4197fe\",\r\n },\r\n secondary: {\r\n main: \"#68a0e5\",\r\n },\r\n error: {\r\n main: \"#d32f2f\",\r\n },\r\n warning: {\r\n main: \"#ff9800\",\r\n },\r\n success: {\r\n main: \"#4caf50\",\r\n },\r\n background: {\r\n default: \"#fafafa\",\r\n paper: \"#e8e8e8\",\r\n },\r\n text: {\r\n primary: \"#0f0f0f\",\r\n },\r\n common: {\r\n main: \"#000000\",\r\n },\r\n },\r\n});\r\n\r\nconst darkTheme = createTheme({\r\n palette: {\r\n type: \"dark\",\r\n primary: {\r\n main: \"#4197fe\",\r\n },\r\n secondary: {\r\n main: \"#68a0e5\",\r\n },\r\n error: {\r\n main: \"#d32f2f\",\r\n },\r\n warning: {\r\n main: \"#ff9800\",\r\n },\r\n success: {\r\n main: \"#4caf50\",\r\n },\r\n background: {\r\n default: \"#181a1b\",\r\n paper: \"#151617\",\r\n },\r\n text: {\r\n primary: \"#e8e6e3\",\r\n },\r\n common: {\r\n main: \"#ffffff\",\r\n },\r\n },\r\n});\r\n\r\nconst draculaTheme = createTheme({\r\n palette: {\r\n type: \"dark\",\r\n primary: {\r\n main: \"#6272a4\",\r\n },\r\n secondary: {\r\n main: \"#44475a\",\r\n },\r\n error: {\r\n main: \"#ffb86c\",\r\n },\r\n warning: {\r\n main: \"#ff5555\",\r\n },\r\n success: {\r\n main: \"#50fa7b\",\r\n },\r\n background: {\r\n default: \"#282a36\",\r\n paper: \"#242630\",\r\n },\r\n text: {\r\n primary: \"#f8f8f2\",\r\n },\r\n common: {\r\n main: \"#6272a4\",\r\n },\r\n },\r\n});\r\n\r\nconst nordTheme = createTheme({\r\n palette: {\r\n type: \"dark\",\r\n primary: {\r\n main: \"#5E81AC\",\r\n },\r\n secondary: {\r\n main: \"#88C0D0\",\r\n },\r\n error: {\r\n main: \"#BF616A\",\r\n },\r\n warning: {\r\n main: \"#EBCB8B\",\r\n },\r\n success: {\r\n main: \"#A3BE8C\",\r\n },\r\n background: {\r\n default: \"#2E3440\",\r\n paper: \"#3B4252\",\r\n },\r\n text: {\r\n primary: \"#ECEFF4\",\r\n },\r\n common: {\r\n main: \"#81A1C1\",\r\n },\r\n },\r\n});\r\n\r\nconst ui_config = JSON.parse(\r\n window.localStorage.getItem(\"ui_config\") ||\r\n window.sessionStorage.getItem(\"ui_config\") ||\r\n \"{}\"\r\n);\r\nvar customTheme;\r\nif (ui_config.custom_theme) {\r\n customTheme = createTheme(ui_config.custom_theme);\r\n}\r\n\r\nvar theme;\r\n\r\nif (\r\n window.localStorage.getItem(\"theme\") === \"light\" ||\r\n window.sessionStorage.getItem(\"theme\") === \"light\"\r\n) {\r\n theme = lightTheme;\r\n} else if (\r\n window.localStorage.getItem(\"theme\") === \"dark\" ||\r\n window.sessionStorage.getItem(\"theme\") === \"dark\"\r\n) {\r\n theme = darkTheme;\r\n} else if (\r\n window.localStorage.getItem(\"theme\") === \"dracula\" ||\r\n window.sessionStorage.getItem(\"theme\") === \"dracula\"\r\n) {\r\n theme = draculaTheme;\r\n} else if (\r\n window.localStorage.getItem(\"theme\") === \"nord\" ||\r\n window.sessionStorage.getItem(\"theme\") === \"nord\"\r\n) {\r\n theme = nordTheme;\r\n} else if (\r\n window.localStorage.getItem(\"theme\") === \"custom\" ||\r\n window.sessionStorage.getItem(\"theme\") === \"custom\"\r\n) {\r\n theme = customTheme;\r\n} else {\r\n theme = darkTheme;\r\n window.localStorage.setItem(\"theme\", \"dark\");\r\n window.sessionStorage.setItem(\"theme\", \"dark\");\r\n}\r\n\r\nexport default theme;\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Button, CircularProgress, Switch, TextField } from \"@material-ui/core\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\nimport Swal from \"sweetalert2/src/sweetalert2.js\";\r\nimport \"@sweetalert2/theme-dark/dark.css\";\r\n\r\nimport axios from \"axios\";\r\n\r\nimport { Footer, Nav, theme } from \"../../components\";\r\n\r\nconst styles = (theme) => ({\r\n Form: {\r\n textAlign: \"center\",\r\n \"& .MuiTextField-root\": {\r\n width: \"30ch\",\r\n margin: theme.spacing(1),\r\n textAlign: \"left\",\r\n },\r\n \"& .MuiTypography-root\": {\r\n margin: \"30px 30px\",\r\n },\r\n },\r\n submit: {\r\n margin: theme.spacing(4, 0, 2),\r\n width: \"20ch\",\r\n },\r\n});\r\n\r\nexport class Settings extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n auth: window.sessionStorage.getItem(\"auth\") || window.localStorage.getItem(\"auth\") || \"0\",\r\n error: \"\",\r\n isLoaded: false,\r\n secret: window.sessionStorage.getItem(\"secret\"),\r\n server: window.sessionStorage.getItem(\"server\") || window.localStorage.getItem(\"server\") || window.location.origin,\r\n };\r\n\r\n this.dismissError = this.dismissError.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleRestart = this.handleRestart.bind(this);\r\n this.handleKillSwitch = this.handleKillSwitch.bind(this);\r\n this.handleRebuild = this.handleRebuild.bind(this);\r\n this.handleFileBrowser = this.handleFileBrowser.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let { secret, server } = this.state;\r\n\r\n let navProps = { ...this.props };\r\n navProps.classes = {};\r\n\r\n if (window.sessionStorage.getItem(\"secret\") == null) {\r\n this.props.history.push(\"/settings/login\");\r\n } else {\r\n let req_path = `${server}/api/v1/config`;\r\n let req_args = `?a=${auth}&secret=${encodeURIComponent(secret)}`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) =>\r\n this.setState({\r\n config: JSON.stringify(response.data.content, null, 4),\r\n isLoaded: true,\r\n navProps: navProps,\r\n tempSecret: response.data.content.secret_key,\r\n })\r\n )\r\n .catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Login\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n });\r\n } else if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n } else if (error.request) {\r\n if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `libDrive could not communicate with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n dismissError() {\r\n this.setState({ error: \"\" });\r\n }\r\n\r\n handleRestart(evt) {\r\n evt.preventDefault();\r\n let { secret, server } = this.state;\r\n\r\n let req_path = `${server}/api/v1/restart`;\r\n let req_args = `?a=${auth}&secret=${encodeURIComponent(secret)}`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) => {\r\n Swal.fire({\r\n title: \"Success!\",\r\n text: response.data.message,\r\n icon: \"success\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n Swal.fire({\r\n title: \"Success!\",\r\n text: \"libDrive is being restarted, this might take some time, so the app won't load\",\r\n icon: \"success\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n });\r\n }\r\n\r\n handleSubmit(evt) {\r\n evt.preventDefault();\r\n let { secret, server } = this.state;\r\n\r\n let req_path = `${server}/api/v1/config`;\r\n let req_args = `?a=${auth}&secret=${encodeURIComponent(secret)}`;\r\n\r\n axios\r\n .post(req_path + req_args, JSON.parse(this.state.config))\r\n .then((response) => {\r\n Swal.fire({\r\n title: \"Success!\",\r\n text: response.data.message,\r\n icon: \"success\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n window.sessionStorage.removeItem(\"secret\");\r\n this.props.history.push(\"/settings/login\");\r\n }\r\n });\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n } else if (error.request) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `libDrive could not communicate with the server! Is ${server} the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n handleChange(evt) {\r\n this.setState({\r\n config: evt.target.value,\r\n });\r\n }\r\n\r\n handleKillSwitch(evt) {\r\n let config = JSON.parse(this.state.config);\r\n\r\n config.kill_switch = evt.target.checked;\r\n this.setState({ config: JSON.stringify(config, null, 4) });\r\n this.handleSubmit(evt);\r\n }\r\n\r\n handleRebuild(evt) {\r\n let { secret, server } = this.state;\r\n\r\n let req_path = `${server}/api/v1/rebuild`;\r\n let req_args = `?a=${auth}&secret=${encodeURIComponent(secret)}`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) =>\r\n Swal.fire({\r\n title: \"Success!\",\r\n text: \"libDrive's metadata is being rebuilt...\",\r\n icon: \"success\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n })\r\n )\r\n .catch((error) => {\r\n console.error(error);\r\n if (auth == null || server == null) {\r\n this.props.history.push(\"/login\");\r\n } else if (error.response) {\r\n if (error.response.status === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: \"Your credentials are invalid!\",\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n });\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: \"Something went wrong while communicating with the server!\",\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n } else if (error.request) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `libDrive could not communicate with the server! Is ${server} the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n handleFileBrowser() {\r\n let { secret, server } = this.state;\r\n\r\n window.open(`${server}/api/v1/debug?secret=${secret}`);\r\n }\r\n\r\n render() {\r\n let { config, isLoaded, navProps } = this.state;\r\n const { classes } = this.props;\r\n\r\n return isLoaded ? (\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n ) : (\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles, { withTheme: true })(Settings);\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Avatar, Button, Container, CircularProgress, CssBaseline, TextField, Typography } from \"@material-ui/core\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\r\n\r\nimport Swal from \"sweetalert2/src/sweetalert2.js\";\r\nimport \"@sweetalert2/theme-dark/dark.css\";\r\n\r\nimport axios from \"axios\";\r\n\r\nimport { Footer, Nav, theme } from \"../../components\";\r\n\r\nconst styles = (theme) => ({\r\n paper: {\r\n marginTop: theme.spacing(8),\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n avatar: {\r\n margin: theme.spacing(1),\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n form: {\r\n width: \"100%\",\r\n marginTop: theme.spacing(1),\r\n },\r\n submit: {\r\n margin: theme.spacing(3, 0, 2),\r\n },\r\n});\r\n\r\nclass SettingsLoginForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n auth: window.sessionStorage.getItem(\"auth\") || window.localStorage.getItem(\"auth\") || \"0\",\r\n isLoaded: false,\r\n secret: \"\",\r\n server: window.sessionStorage.getItem(\"server\") || window.localStorage.getItem(\"server\") || window.location.origin,\r\n };\r\n\r\n this.handleSecretChange = this.handleSecretChange.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let navProps = { ...this.props };\r\n navProps.classes = {};\r\n this.setState({ isLoaded: true, navProps: navProps });\r\n }\r\n\r\n handleSubmit(evt) {\r\n evt.preventDefault();\r\n let { secret, server } = this.state;\r\n\r\n let req_path = `${server}/api/v1/config`;\r\n let req_args = `?a=${auth}&secret=${encodeURIComponent(secret)}`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) => {\r\n window.sessionStorage.setItem(\"secret\", secret);\r\n this.props.history.push(\"/settings\");\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"OK\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n location.reload();\r\n });\r\n }\r\n } else if (error.request) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: \"libDrive could not communicate with the server. Is ${server} the correct address?\",\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n handleSecretChange(evt) {\r\n this.setState({\r\n secret: evt.target.value,\r\n });\r\n }\r\n\r\n render() {\r\n let { isLoaded, navProps, secret } = this.state;\r\n const { classes } = this.props;\r\n\r\n return isLoaded ? (\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
Settings Login \r\n
\r\n
\r\n \r\n
\r\n
\r\n ) : (\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles, { withTheme: true })(SettingsLoginForm);\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport {\r\n Divider,\r\n FormControl,\r\n Select,\r\n InputLabel,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\nimport { guid } from \"../../components\";\r\n\r\nimport \"./index.css\";\r\n\r\nclass SortMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = props.state;\r\n this.formatSort = this.formatSort.bind(this);\r\n }\r\n\r\n formatSort(str) {\r\n if (!str) {\r\n return \"Sort\";\r\n }\r\n let str_split = str.split(\"-\");\r\n for (var i = 0; i < str_split.length; i++) {\r\n if (str_split[i] == \"asc\") {\r\n str_split[i] = \"ascending\";\r\n } else if (str_split[i] == \"des\") {\r\n str_split[i] = \"descending\";\r\n }\r\n str_split[i] =\r\n str_split[i].charAt(0).toUpperCase() + str_split[i].substring(1);\r\n }\r\n return str_split.join(\" \");\r\n }\r\n\r\n render() {\r\n let { genre, sort } = this.state;\r\n const genres = [\r\n \"Action\",\r\n \"Action & Adventure\",\r\n \"Adventure\",\r\n \"Animation\",\r\n \"Comedy\",\r\n \"Crime\",\r\n \"Documentary\",\r\n \"Drama\",\r\n \"Ecchi\",\r\n \"Family\",\r\n \"Fantasy\",\r\n \"Hentai\",\r\n \"History\",\r\n \"Horror\",\r\n \"Kids\",\r\n \"Mahou Shoujo\",\r\n \"Mecha\",\r\n \"Music\",\r\n \"Mystery\",\r\n \"News\",\r\n \"Psychological\",\r\n \"Reality\",\r\n \"Romance\",\r\n \"Sci-Fi\",\r\n \"Sci-Fi & Fantasy\",\r\n \"Science Fiction\",\r\n \"Slice of Life\",\r\n \"Soap\",\r\n \"Sports\",\r\n \"Supernatural\",\r\n \"TV Movie\",\r\n \"Talk\",\r\n \"Thriller\",\r\n \"War\",\r\n \"War & Politics\",\r\n \"Western\",\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles({ withTheme: true })(SortMenu);\r\n","import React, { Component } from \"react\";\r\nimport {\r\n Avatar,\r\n Button,\r\n List,\r\n ListItem,\r\n ListItemAvatar,\r\n ListItemText,\r\n Dialog,\r\n DialogTitle,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n TextField,\r\n} from \"@material-ui/core\";\r\nimport ListIcon from \"@material-ui/icons/List\";\r\nimport AddIcon from \"@material-ui/icons/Add\";\r\nimport { theme } from \"../../components\";\r\n\r\nexport default class StarDialog extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { ...props.state, isCreateOpen: false };\r\n this.handleCreateClose = this.handleCreateClose.bind(this);\r\n this.handleCreateChange = this.handleCreateChange.bind(this);\r\n this.handleCreateSubmit = this.handleCreateSubmit.bind(this);\r\n this.handleListItemClick = this.handleListItemClick.bind(this);\r\n }\r\n\r\n handleCreateClose(evt) {\r\n this.setState({ isCreateOpen: false });\r\n }\r\n\r\n handleCreateChange(evt) {\r\n this.setState({ createValue: evt.target.value });\r\n }\r\n\r\n handleCreateSubmit() {\r\n let { createValue } = this.state;\r\n let starred_lists = JSON.parse(\r\n window.localStorage.getItem(\"starred_lists\") || \"[]\"\r\n );\r\n let n = starred_lists.findIndex((i) => i.name == createValue);\r\n\r\n if (n == -1) {\r\n let metadata = {\r\n categoryInfo: {\r\n id: \"starred\",\r\n name: createValue,\r\n type: \"Starred\",\r\n },\r\n name: createValue,\r\n children: [],\r\n type: \"Starred\",\r\n };\r\n starred_lists.push(metadata);\r\n window.localStorage.setItem(\r\n \"starred_lists\",\r\n JSON.stringify(starred_lists)\r\n );\r\n this.setState({ isCreateOpen: false, starred_lists: starred_lists });\r\n } else {\r\n this.setState({ isCreateOpen: false });\r\n }\r\n }\r\n\r\n handleListItemClick(s, n) {\r\n if (s == \"createStarredList\" && n == -1) {\r\n this.setState({ isCreateOpen: true });\r\n } else {\r\n let { metadata } = this.props;\r\n let starred_lists = JSON.parse(\r\n window.localStorage.getItem(\"starred_lists\") || \"[]\"\r\n );\r\n let i = starred_lists[n].children.findIndex((i) => i.id == metadata.id);\r\n if (i == -1) {\r\n starred_lists[n].children.unshift(metadata);\r\n window.localStorage.setItem(\r\n \"starred_lists\",\r\n JSON.stringify(starred_lists)\r\n );\r\n this.props.handleClose(\"unstarred\");\r\n this.setState({ starred_lists: starred_lists });\r\n } else {\r\n starred_lists[n].children.splice(i, 1);\r\n window.localStorage.setItem(\r\n \"starred_lists\",\r\n JSON.stringify(starred_lists)\r\n );\r\n this.props.handleClose();\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n let { isOpen, metadata } = this.props;\r\n let { isCreateOpen } = this.state;\r\n let starred_lists = JSON.parse(\r\n window.localStorage.getItem(\"starred_lists\") || \"[]\"\r\n );\r\n\r\n return (\r\n \r\n
\r\n \r\n Select starred list\r\n \r\n \r\n {starred_lists && starred_lists.length\r\n ? starred_lists.map((s, n) => (\r\n this.handleListItemClick(s, n)}\r\n key={s.name}\r\n >\r\n \r\n x.id == metadata.id)\r\n ? { backgroundColor: theme.palette.success.main }\r\n : null\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n ))\r\n : null}\r\n\r\n \r\n this.handleListItemClick(\"createStarredList\", -1)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n Create starred list \r\n \r\n \r\n Enter the starred list's name in the form below.\r\n \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n Create\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Carousel, Footer, Nav } from \"../../components\";\r\n\r\nexport default class StarredLists extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n starred_lists: JSON.parse(window.localStorage.getItem(\"starred_lists\") || \"[]\"),\r\n };\r\n }\r\n\r\n render() {\r\n let { starred_lists } = this.state;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Divider, IconButton, Menu, MenuItem } from \"@material-ui/core\";\r\nimport Brightness6Icon from \"@material-ui/icons/Brightness6\";\r\n\r\nexport default class ThemeMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n menuAnchor: false,\r\n ui_config: props.ui_config,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleTheme = this.handleTheme.bind(this);\r\n }\r\n\r\n handleClick(evt) {\r\n this.setState({\r\n menuAnchor: evt.currentTarget,\r\n });\r\n }\r\n\r\n handleClose(evt) {\r\n this.setState({\r\n menuAnchor: false,\r\n });\r\n }\r\n\r\n handleTheme(name) {\r\n this.setState({\r\n menuAnchor: false,\r\n });\r\n window.localStorage.setItem(\"theme\", name);\r\n window.sessionStorage.setItem(\"theme\", name);\r\n window.location.reload();\r\n }\r\n\r\n render() {\r\n let { menuAnchor, ui_config } = this.state;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { Typography } from \"@material-ui/core\";\r\n\r\nimport { guid } from \"../../components\";\r\nimport \"./index.css\";\r\n\r\nexport default class Tile extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n metadata: this.props.metadata,\r\n server:\r\n window.sessionStorage.getItem(\"server\") ||\r\n window.localStorage.getItem(\"server\") ||\r\n window.location.origin,\r\n };\r\n }\r\n\r\n render() {\r\n let { metadata, server } = this.state;\r\n\r\n return (\r\n \r\n {metadata.length\r\n ? metadata.map((category) => (\r\n
\r\n
\r\n {category.categoryInfo.name}\r\n \r\n
\r\n {category.children.length\r\n ? category.children.map((item) => (\r\n
\r\n \r\n \r\n \r\n \r\n {item.title}\r\n \r\n \r\n ))\r\n : null}\r\n
\r\n
\r\n ))\r\n : null}\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { Dialog, DialogTitle } from \"@material-ui/core\";\r\n\r\nexport default class StarDialog extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { ...props.state, isCreateOpen: false };\r\n }\r\n\r\n render() {\r\n let { isOpen, metadata, trailer } = this.props;\r\n\r\n return (\r\n \r\n
\r\n \r\n {metadata.title} - Trailer\r\n \r\n \r\n VIDEO \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { Avatar, Button, Chip, ClickAwayListener, Divider, IconButton, Menu, MenuItem, Tooltip, Typography } from \"@material-ui/core\";\r\nimport { Rating } from \"@material-ui/lab\";\r\nimport StarIcon from \"@material-ui/icons/Star\";\r\nimport StarBorderIcon from \"@material-ui/icons/StarBorder\";\r\nimport SubtitlesOutlinedIcon from \"@material-ui/icons/SubtitlesOutlined\";\r\nimport YouTubeIcon from \"@material-ui/icons/YouTube\";\r\n\r\nimport DPlayer from \"libdrive-player\";\r\nimport { default as toWebVTT } from \"srt-webvtt\";\r\n\r\nimport Swal from \"sweetalert2/src/sweetalert2.js\";\r\nimport \"@sweetalert2/theme-dark/dark.css\";\r\n\r\nimport axios from \"axios\";\r\n\r\nimport { DownloadMenu, guid, PlayerMenu, seo, StarDialog, theme, TrailerDialog } from \"../../../components\";\r\n\r\nexport default class MovieView extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ...props.state,\r\n subtitleMenuAnchor: false,\r\n tooltipOpen: false,\r\n tooltipOpen2: false,\r\n trailer: {},\r\n };\r\n this.onFileChange = this.onFileChange.bind(this);\r\n this.prettyDate = this.prettyDate.bind(this);\r\n this.handleStar = this.handleStar.bind(this);\r\n this.handleStarClose = this.handleStarClose.bind(this);\r\n this.handleTrailer = this.handleTrailer.bind(this);\r\n this.handleTrailerClose = this.handleTrailerClose.bind(this);\r\n this.handleSubtitleMenuOpen = this.handleSubtitleMenuOpen.bind(this);\r\n this.handleSubtitleMenuClose = this.handleSubtitleMenuClose.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let { metadata, ui_config } = this.state;\r\n\r\n seo({\r\n title: `${ui_config.title || \"libDrive\"} - ${metadata.title || metadata.name}`,\r\n description: `Watch ${metadata.title || metadata.name} on ${ui_config.title || \"libDrive\"}! — ${metadata.overview}`,\r\n image: metadata.backdropPath,\r\n type: \"video.movie\",\r\n });\r\n }\r\n\r\n async onFileChange(evt) {\r\n if (evt.target.files.length) {\r\n if (evt.target.files[0].name.endsWith(\".srt\")) {\r\n const vtt = await toWebVTT(evt.target.files[0]);\r\n this.setState({\r\n file: vtt,\r\n fileName: evt.target.files[0].name,\r\n playerKey: guid(),\r\n });\r\n } else {\r\n this.setState({\r\n file: URL.createObjectURL(evt.target.files[0]),\r\n playerKey: guid(),\r\n });\r\n }\r\n } else {\r\n this.setState({ file: null, playerKey: guid() });\r\n }\r\n }\r\n\r\n prettyDate() {\r\n let old_date = this.state.metadata.releaseDate;\r\n let date_comp = old_date.split(\"-\");\r\n let date = new Date(date_comp[0], date_comp[1], date_comp[2]);\r\n return date.toDateString();\r\n }\r\n\r\n handleStar() {\r\n this.setState({ openStarDialog: true });\r\n }\r\n\r\n handleStarClose(evt) {\r\n if (evt == \"starred\") {\r\n this.setState({ openStarDialog: false, starred: true });\r\n } else if (evt == \"unstarred\") {\r\n this.setState({\r\n openStarDialog: false,\r\n starred: JSON.parse(window.localStorage.getItem(\"starred_lists\") || \"[]\").some((i) => i.children.some((x) => x.id == this.state.metadata.id)) || false,\r\n });\r\n } else {\r\n this.setState({ openStarDialog: false });\r\n }\r\n }\r\n\r\n handleTrailer() {\r\n let { auth, metadata, server } = this.state;\r\n\r\n let req_path = `${server}/api/v1/trailer/${metadata.apiId}`;\r\n let req_args = `?a=${auth}&t=movie&api=${metadata.api}`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) =>\r\n this.setState({\r\n openTrailerDialog: true,\r\n trailer: response.data.content,\r\n })\r\n )\r\n .catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Login\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n });\r\n } else if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: \"No trailer could be found.\",\r\n icon: \"error\",\r\n confirmButtonText: \"Ok\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n }\r\n } else if (error.request) {\r\n if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `libDrive could not communicate with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n handleTrailerClose() {\r\n this.setState({ openTrailerDialog: false });\r\n }\r\n\r\n handleSubtitleMenuOpen(evt) {\r\n let { tracks } = this.state;\r\n\r\n if (tracks.length) {\r\n this.setState({\r\n subtitleMenuAnchor: evt.currentTarget,\r\n });\r\n } else {\r\n const subtitleButton = document.getElementById(\"file-input-button\");\r\n subtitleButton.click();\r\n }\r\n }\r\n\r\n handleSubtitleMenuClose() {\r\n this.setState({\r\n subtitleMenuAnchor: false,\r\n });\r\n }\r\n\r\n render() {\r\n let { default_track, default_video, file, fileName, metadata, playerKey, server, videos, starred, subtitleMenuAnchor, tracks, tooltipOpen, tooltipOpen2, trailer } = this.state;\r\n\r\n if (file) {\r\n tracks = [{ name: fileName, url: file }];\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
this.setState({ tooltipOpen: false })}>\r\n {metadata.name}}\r\n arrow\r\n placement=\"top-start\"\r\n open={tooltipOpen}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n onClose={() => this.setState({ tooltipOpen: false })}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n >\r\n this.setState({ tooltipOpen: true })} variant=\"h3\" style={{ fontWeight: \"bold\" }} className=\"info__title\">\r\n {metadata.title}\r\n \r\n \r\n \r\n
\r\n {metadata.overview}\r\n \r\n
\r\n
this.setState({ tooltipOpen2: false })}>\r\n {metadata.voteAverage}/10}\r\n arrow\r\n placement=\"right\"\r\n open={tooltipOpen2}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n onClose={() => this.setState({ tooltipOpen2: false })}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n >\r\n this.setState({ tooltipOpen2: true })}>\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n {starred ? : } \r\n \r\n {metadata.language ? `${this.prettyDate()} (${metadata.language.toUpperCase()})` : this.prettyDate()}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n }>\r\n Trailer\r\n \r\n
\r\n
\r\n \r\n } onClick={this.handleSubtitleMenuOpen}>\r\n Subtitle\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {metadata.adult ? E} className=\"info__genre\" label={\"Adult (18+)\"} variant=\"outlined\" /> : null}\r\n {metadata.genres && metadata.genres.length\r\n ? metadata.genres.map((genre) => (\r\n \r\n {genre.charAt(0)}} className=\"info__genre\" label={genre} variant=\"outlined\" />\r\n \r\n ))\r\n : null}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { Avatar, Button, Chip, ClickAwayListener, Dialog, DialogTitle, Divider, IconButton, Menu, MenuItem, Tooltip, Typography } from \"@material-ui/core\";\r\nimport { Rating } from \"@material-ui/lab\";\r\nimport ArrowBackIcon from \"@material-ui/icons/ArrowBack\";\r\nimport ArrowForwardIcon from \"@material-ui/icons/ArrowForward\";\r\nimport StarIcon from \"@material-ui/icons/Star\";\r\nimport StarBorderIcon from \"@material-ui/icons/StarBorder\";\r\nimport SubtitlesOutlinedIcon from \"@material-ui/icons/SubtitlesOutlined\";\r\nimport YouTubeIcon from \"@material-ui/icons/YouTube\";\r\n\r\nimport DPlayer from \"libdrive-player\";\r\nimport { default as toWebVTT } from \"srt-webvtt\";\r\n\r\nimport Swal from \"sweetalert2/src/sweetalert2.js\";\r\nimport \"@sweetalert2/theme-dark/dark.css\";\r\n\r\nimport axios from \"axios\";\r\n\r\nimport { ChildrenMenu, DownloadMenu, guid, PlayerMenu, PlaylistMenu, seo, StarDialog, theme, TrailerDialog } from \"../../../components\";\r\n\r\nexport class TVBView extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ...props.state,\r\n tooltipOpen: false,\r\n tooltipOpen2: false,\r\n trailer: {},\r\n };\r\n this.prettyDate = this.prettyDate.bind(this);\r\n this.handleStar = this.handleStar.bind(this);\r\n this.handleStarClose = this.handleStarClose.bind(this);\r\n this.handleTrailer = this.handleTrailer.bind(this);\r\n this.handleTrailerClose = this.handleTrailerClose.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let { metadata, ui_config } = this.state;\r\n\r\n seo({\r\n title: `${ui_config.title || \"libDrive\"} - ${metadata.title || metadata.name}`,\r\n description: `Watch ${metadata.title || metadata.name} on ${ui_config.title || \"libDrive\"}! — ${metadata.overview}`,\r\n image: metadata.backdropPath,\r\n type: \"video.movie\",\r\n });\r\n }\r\n\r\n prettyDate() {\r\n let old_date = this.state.metadata.releaseDate;\r\n let date_comp = old_date.split(\"-\");\r\n let date = new Date(date_comp[0], date_comp[1], date_comp[2]);\r\n return date.toDateString();\r\n }\r\n\r\n handleStar() {\r\n this.setState({ openStarDialog: true });\r\n }\r\n\r\n handleStarClose(evt) {\r\n if (evt == \"starred\") {\r\n this.setState({ openStarDialog: false, starred: true });\r\n } else if (evt == \"unstarred\") {\r\n this.setState({\r\n openStarDialog: false,\r\n starred: JSON.parse(window.localStorage.getItem(\"starred_lists\") || \"[]\").some((i) => i.children.some((x) => x.id == this.state.metadata.id)) || false,\r\n });\r\n } else {\r\n this.setState({ openStarDialog: false });\r\n }\r\n }\r\n\r\n handleTrailer() {\r\n let { auth, metadata, server, trailer } = this.state;\r\n\r\n if (!trailer.key) {\r\n let req_path = `${server}/api/v1/trailer/${metadata.apiId}`;\r\n let req_args = `?a=${auth}&t=tv&api=${metadata.api}`;\r\n\r\n axios\r\n .get(req_path + req_args)\r\n .then((response) =>\r\n this.setState({\r\n openTrailerDialog: true,\r\n trailer: response.data.content,\r\n })\r\n )\r\n .catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Login\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n });\r\n } else if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: \"No trailer could be found.\",\r\n icon: \"error\",\r\n confirmButtonText: \"Ok\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n }\r\n } else if (error.request) {\r\n if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: \"Something went wrong while looking for trailers.\",\r\n icon: \"error\",\r\n confirmButtonText: \"Ok\",\r\n confirmButtonColor: theme.palette.success.main,\r\n });\r\n }\r\n }\r\n });\r\n } else {\r\n this.setState({ openTrailerDialog: true });\r\n }\r\n }\r\n\r\n handleTrailerClose() {\r\n this.setState({ openTrailerDialog: false });\r\n }\r\n\r\n render() {\r\n let { metadata, server, starred, tooltipOpen, tooltipOpen2, trailer } = this.state;\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
this.setState({ tooltipOpen: false })}>\r\n {metadata.name}}\r\n arrow\r\n placement=\"top-start\"\r\n open={tooltipOpen}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n onClose={() => this.setState({ tooltipOpen: false })}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n >\r\n this.setState({ tooltipOpen: true })} variant=\"h3\" style={{ fontWeight: \"bold\" }} className=\"info__title\">\r\n {metadata.title}\r\n \r\n \r\n \r\n
\r\n {metadata.overview}\r\n \r\n
\r\n
this.setState({ tooltipOpen2: false })}>\r\n {metadata.voteAverage}/10}\r\n arrow\r\n placement=\"right\"\r\n open={tooltipOpen2}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n onClose={() => this.setState({ tooltipOpen2: false })}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n >\r\n this.setState({ tooltipOpen2: true })}>\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n {starred ? : } \r\n \r\n {metadata.language ? `${this.prettyDate()} (${metadata.language.toUpperCase()})` : this.prettyDate()}\r\n \r\n
\r\n
\r\n
\r\n
\r\n }>\r\n Trailer\r\n \r\n
\r\n
\r\n
\r\n {metadata.genres && metadata.genres.length\r\n ? metadata.genres.map((genre) => (\r\n \r\n {genre.charAt(0)}} className=\"info__genre\" label={genre} variant=\"outlined\" />\r\n \r\n ))\r\n : null}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport class TVSView extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { ...props.state, subtitleMenuAnchor: false };\r\n this.onFileChange = this.onFileChange.bind(this);\r\n this.handleSubtitleMenuOpen = this.handleSubtitleMenuOpen.bind(this);\r\n this.handleSubtitleMenuClose = this.handleSubtitleMenuClose.bind(this);\r\n this.handleClickImage = this.handleClickImage.bind(this);\r\n this.handleCloseDialog = this.handleCloseDialog.bind(this);\r\n this.handleParentSeason = this.handleParentSeason.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let { metadata, q, ui_config } = this.state;\r\n\r\n seo({\r\n title: `${ui_config.title || \"libDrive\"} - ${metadata.children[q].name}`,\r\n description: `Watch ${metadata.children[q].name} on ${ui_config.title || \"libDrive\"}!`,\r\n type: \"video.episode\",\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n let { id, q, watching } = this.state;\r\n\r\n watching[id] = q;\r\n\r\n window.localStorage.setItem(\"watching\", JSON.stringify(watching));\r\n }\r\n\r\n async onFileChange(evt) {\r\n if (evt.target.files.length) {\r\n if (evt.target.files[0].name.endsWith(\".srt\")) {\r\n const vtt = await toWebVTT(evt.target.files[0]);\r\n this.setState({\r\n file: vtt,\r\n fileName: evt.target.files[0].name,\r\n playerKey: guid(),\r\n });\r\n } else {\r\n this.setState({\r\n file: URL.createObjectURL(evt.target.files[0]),\r\n playerKey: guid(),\r\n });\r\n }\r\n } else {\r\n this.setState({ file: null, playerKey: guid() });\r\n }\r\n }\r\n\r\n handleSubtitleMenuOpen(evt) {\r\n let { tracks } = this.state;\r\n\r\n if (tracks.length) {\r\n this.setState({\r\n subtitleMenuAnchor: evt.currentTarget,\r\n });\r\n } else {\r\n const subtitleButton = document.getElementById(\"file-input-button\");\r\n subtitleButton.click();\r\n }\r\n }\r\n\r\n handleSubtitleMenuClose() {\r\n this.setState({\r\n subtitleMenuAnchor: false,\r\n });\r\n }\r\n\r\n handleClickImage(url) {\r\n this.setState({ image_url: url });\r\n }\r\n\r\n handleCloseDialog() {\r\n this.setState({ image_url: null });\r\n }\r\n\r\n handleParentSeason(next) {\r\n let { metadata, parent_index } = this.state;\r\n\r\n if (next) {\r\n if (metadata.parent_children[parent_index + 1]) {\r\n this.props.history.push(`/view/ts/${metadata.parent_children[parent_index + 1].id}`);\r\n }\r\n } else {\r\n if (metadata.parent_children[parent_index - 1]) {\r\n this.props.history.push(`/view/ts/${metadata.parent_children[parent_index - 1].id}`);\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n let { default_track, default_video, file, fileName, image_url, metadata, parent_index, playerKey, q, server, videos, tracks, subtitleMenuAnchor } = this.state;\r\n\r\n if (file) {\r\n tracks = [{ name: fileName, url: file }];\r\n }\r\n\r\n function isHash(n, hash) {\r\n if (n === hash) {\r\n return \"pls-playing\";\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n Thumbnail \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {metadata.children.length\r\n ? metadata.children.map((child, n) => (\r\n \r\n \r\n
this.handleClickImage(`${server}/api/v1/image/thumbnail?id=${child.id}`)} onError={(e) => (e.target.style = \"display: none;\")} src={`${server}/api/v1/image/thumbnail?id=${child.id}`} className=\"plyr-miniposter\" />\r\n
\r\n
{child.name}
\r\n \r\n
\r\n \r\n ))\r\n : null}\r\n \r\n
\r\n
\r\n
\r\n
\r\n {metadata.parent_children[parent_index - 1] ? (\r\n
\r\n this.handleParentSeason(false)} style={{ justifySelf: \"flex-start\", marginLeft: \"5px\" }}>\r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n } onClick={this.handleSubtitleMenuOpen}>\r\n Subtitle\r\n \r\n \r\n \r\n
\r\n
\r\n {metadata.parent_children[parent_index + 1] ? (\r\n
\r\n this.handleParentSeason(true)} style={{ justifySelf: \"flex-end\", marginRight: \"5px\" }}>\r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport { CircularProgress } from \"@material-ui/core\";\r\n\r\nimport Swal from \"sweetalert2/src/sweetalert2.js\";\r\nimport \"@sweetalert2/theme-dark/dark.css\";\r\n\r\nimport axios from \"axios\";\r\nimport queryString from \"query-string\";\r\n\r\nimport { Footer, guid, Nav, seo, theme } from \"../../components\";\r\nimport MovieView from \"./MovieView\";\r\nimport { TVBView, TVSView } from \"./TVView\";\r\nimport \"./index.css\";\r\n\r\nexport default class View extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n auth: window.sessionStorage.getItem(\"auth\") || window.localStorage.getItem(\"auth\") || \"0\",\r\n id: this.props.match.params.id,\r\n isAndroid: /(android)/i.test(navigator.userAgent || navigator.vendor || window.opera),\r\n isIOS: /iPad|iPhone|iPod/.test(navigator.userAgent || navigator.vendor || window.opera) && !window.MSStream,\r\n isLoaded: false,\r\n metadata: {},\r\n openStarDialog: false,\r\n playerKey: guid(),\r\n q: queryString.parse(this.props.location.search).q || JSON.parse(window.localStorage.getItem(\"watching\") || \"{}\")[this.props.match.params.id] || 0,\r\n server: window.sessionStorage.getItem(\"server\") || window.localStorage.getItem(\"server\") || window.location.origin,\r\n videos: [],\r\n starred: JSON.parse(window.localStorage.getItem(\"starred_lists\") || \"[]\").some((i) => i.children.some((x) => x.id == this.props.match.params.id)) || false,\r\n tracks: [{ name: null, url: null }],\r\n type: this.props.type,\r\n ui_config: JSON.parse(window.localStorage.getItem(\"ui_config\") || window.sessionStorage.getItem(\"ui_config\") || \"{}\"),\r\n watching: JSON.parse(window.localStorage.getItem(\"watching\") || \"{}\"),\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n let { auth, id, q, server, type } = this.state;\r\n q = parseInt(q);\r\n\r\n if (!auth || !server) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n\r\n document.documentElement.style.setProperty(\"--plyr-color-main\", theme.palette.primary.main);\r\n document.documentElement.style.setProperty(\"--plyr-video-background\", theme.palette.background.default);\r\n document.documentElement.style.setProperty(\"--plyr-menu-background\", theme.palette.background.paper);\r\n document.documentElement.style.setProperty(\"--plyr-menu-color\", theme.palette.text.primary);\r\n\r\n let req_path = `${server}/api/v1/metadata`;\r\n let req_args = `?a=${auth}&id=${encodeURIComponent(id)}`;\r\n\r\n var response1 = await axios.get(req_path + req_args).catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Login\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n });\r\n } else if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `Something went wrong while communicating with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n } else if (error.request) {\r\n if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `libDrive could not communicate with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n var metadata = response1.data.content;\r\n var response2;\r\n\r\n if (type == \"m\") {\r\n let req_path = `${server}/api/v1/streammap`;\r\n let req_args = `?a=${auth}&id=${encodeURIComponent(id)}&parent=${metadata.parents[0]}&name=${encodeURIComponent(metadata.name)}&t=${metadata.type}&server=${encodeURIComponent(server)}`;\r\n\r\n response2 = await axios.get(req_path + req_args).catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Login\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n });\r\n } else if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `Something went wrong while communicating with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n } else if (error.request) {\r\n if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `libDrive could not communicate with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n } else if (type == \"ts\") {\r\n if (metadata.children.length && metadata.children[q]) {\r\n let req_path = `${server}/api/v1/streammap`;\r\n let req_args = `?a=${auth}&id=${encodeURIComponent(metadata.children[q].id)}&parent=${id}&name=${encodeURIComponent(metadata.children[q].name)}&t=${metadata.children[q].type}&server=${encodeURIComponent(server)}`;\r\n\r\n response2 = await axios.get(req_path + req_args).catch((error) => {\r\n console.error(error);\r\n if (error.response) {\r\n let data = error.response.data;\r\n if (data.code === 401) {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: data.message,\r\n icon: \"error\",\r\n confirmButtonText: \"Login\",\r\n confirmButtonColor: theme.palette.success.main,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n }\r\n });\r\n } else if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `Something went wrong while communicating with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n } else if (error.request) {\r\n if (!server) {\r\n this.props.history.push(\"/logout\");\r\n } else {\r\n Swal.fire({\r\n title: \"Error!\",\r\n text: `libDrive could not communicate with the server! Is '${server}' the correct address?`,\r\n icon: \"error\",\r\n confirmButtonText: \"Logout\",\r\n confirmButtonColor: theme.palette.success.main,\r\n cancelButtonText: \"Retry\",\r\n cancelButtonColor: theme.palette.error.main,\r\n showCancelButton: true,\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n this.props.history.push(\"/logout\");\r\n } else if (result.isDismissed) {\r\n location.reload();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n } else {\r\n response2 = {\r\n data: { content: { default_video: 0, videos: [], subtitles: [] } },\r\n };\r\n }\r\n }\r\n\r\n var parent_index;\r\n if (metadata.parent_children) {\r\n for (let i = 0; i < metadata.parent_children.length; i++) {\r\n if (metadata.parent_children[i].id == id) {\r\n parent_index = i;\r\n }\r\n }\r\n }\r\n\r\n if (type == \"m\" || type == \"ts\") {\r\n this.setState({\r\n default_track: response2.data.content.default_track,\r\n default_video: response2.data.content.default_video,\r\n isLoaded: true,\r\n metadata: response1.data.content,\r\n parent_index: parent_index,\r\n q: q,\r\n type: type,\r\n videos: response2.data.content.videos,\r\n tracks: response2.data.content.tracks,\r\n });\r\n } else {\r\n this.setState({\r\n isLoaded: true,\r\n metadata: response1.data.content,\r\n type: type,\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n seo();\r\n }\r\n\r\n render() {\r\n let { isLoaded, metadata, ui_config } = this.state;\r\n\r\n if (isLoaded) {\r\n seo({\r\n title: metadata.title ? `${ui_config.title || \"libDrive\"} - ${metadata.title}` : ui_config.title || \"libDrive\",\r\n description: `Watch ${metadata.title || metadata.name} on ${ui_config.title || \"libDrive\"}!`,\r\n image: metadata.backdropPath,\r\n });\r\n }\r\n\r\n return isLoaded && metadata.type == \"file\" ? (\r\n \r\n \r\n \r\n \r\n
\r\n ) : isLoaded && metadata.type == \"directory\" && metadata.title ? (\r\n \r\n \r\n \r\n \r\n
\r\n ) : isLoaded && metadata.type == \"directory\" ? (\r\n \r\n \r\n \r\n \r\n
\r\n ) : (\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter, Route, Switch } from \"react-router-dom\";\r\n\r\nimport { CssBaseline } from \"@material-ui/core\";\r\nimport { ThemeProvider } from \"@material-ui/core/styles\";\r\n\r\nimport {\r\n App,\r\n Browse,\r\n CategoryBrowse,\r\n Genres,\r\n Login,\r\n Logout,\r\n NotFound,\r\n Search,\r\n Settings,\r\n SettingsLoginForm,\r\n StarredLists,\r\n theme,\r\n guid,\r\n View,\r\n} from \"./components\";\r\nimport \"./index.css\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/build/static/js/runtime-main.e9567ca5.js b/build/static/js/runtime-main.e9567ca5.js
new file mode 100644
index 0000000000000000000000000000000000000000..62e0598c0b543036251f25e1e2617064ba8d15d9
--- /dev/null
+++ b/build/static/js/runtime-main.e9567ca5.js
@@ -0,0 +1,2 @@
+!function(e){function r(r){for(var n,i,l=r[0],f=r[1],a=r[2],c=0,s=[];c=0)&&n.push(i)}return n.push(t.ownerDocument.body),t.ownerDocument!==document&&n.push(t.ownerDocument.defaultView),n}function s(){A&&document.body.removeChild(A),A=null}function a(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var o=e.documentElement,n=i(t),r=P();return n.top-=r.top,n.left-=r.left,"undefined"==typeof n.width&&(n.width=document.body.scrollWidth-n.left-n.right),"undefined"==typeof n.height&&(n.height=document.body.scrollHeight-n.top-n.bottom),n.top=n.top-o.clientTop,n.left=n.left-o.clientLeft,n.right=e.body.clientWidth-n.width-n.left,n.bottom=e.body.clientHeight-n.height-n.top,n}function f(t){return t.offsetParent||document.documentElement}function l(){var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");h(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var o=t.offsetWidth;e.style.overflow="scroll";var n=t.offsetWidth;o===n&&(n=e.clientWidth),document.body.removeChild(e);var i=o-n;return{width:i,height:i}}function h(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}),t}function u(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var o=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),n=c(t).replace(o," ");g(t,n)}}function d(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{u(t,e);var o=c(t)+(" "+e);g(t,o)}}function p(t,e){if("undefined"!=typeof t.classList)return t.classList.contains(e);var o=c(t);return new RegExp("(^| )"+e+"( |$)","gi").test(o)}function c(t){return t.className instanceof t.ownerDocument.defaultView.SVGAnimatedString?t.className.baseVal:t.className}function g(t,e){t.setAttribute("class",e)}function m(t,e,o){o.forEach(function(o){-1===e.indexOf(o)&&p(t,o)&&u(t,o)}),e.forEach(function(e){p(t,e)||d(t,e)})}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function y(t,e){var o=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+o>=e&&e>=t-o}function b(){return"undefined"!=typeof performance&&"undefined"!=typeof performance.now?performance.now():+new Date}function w(){for(var t={top:0,left:0},e=arguments.length,o=Array(e),n=0;e>n;n++)o[n]=arguments[n];return o.forEach(function(e){var o=e.top,n=e.left;"string"==typeof o&&(o=parseFloat(o,10)),"string"==typeof n&&(n=parseFloat(n,10)),t.top+=o,t.left+=n}),t}function C(t,e){return"string"==typeof t.left&&-1!==t.left.indexOf("%")&&(t.left=parseFloat(t.left,10)/100*e.width),"string"==typeof t.top&&-1!==t.top.indexOf("%")&&(t.top=parseFloat(t.top,10)/100*e.height),t}function O(t,e){return"scrollParent"===e?e=t.scrollParents[0]:"window"===e&&(e=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),e===document&&(e=e.documentElement),"undefined"!=typeof e.nodeType&&!function(){var t=e,o=a(e),n=o,i=getComputedStyle(e);if(e=[n.left,n.top,o.width+n.left,o.height+n.top],t.ownerDocument!==document){var r=t.ownerDocument.defaultView;e[0]+=r.pageXOffset,e[1]+=r.pageYOffset,e[2]+=r.pageXOffset,e[3]+=r.pageYOffset}$.forEach(function(t,o){t=t[0].toUpperCase()+t.substr(1),"Top"===t||"Left"===t?e[o]+=parseFloat(i["border"+t+"Width"]):e[o]-=parseFloat(i["border"+t+"Width"])})}(),e}var E=function(){function t(t,e){for(var o=0;o1?o-1:0),i=1;o>i;i++)n[i-1]=arguments[i];for(;e16?(e=Math.min(e-16,250),void(o=setTimeout(i,250))):void("undefined"!=typeof t&&b()-t<10||(null!=o&&(clearTimeout(o),o=null),t=b(),D(),e=b()-t))};"undefined"!=typeof window&&"undefined"!=typeof window.addEventListener&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,n)})}();var X={center:"center",left:"right",right:"left"},F={middle:"middle",top:"bottom",bottom:"top"},H={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},N=function(t,e){var o=t.left,n=t.top;return"auto"===o&&(o=X[e.left]),"auto"===n&&(n=F[e.top]),{left:o,top:n}},U=function(t){var e=t.left,o=t.top;return"undefined"!=typeof H[t.left]&&(e=H[t.left]),"undefined"!=typeof H[t.top]&&(o=H[t.top]),{left:e,top:o}},V=function(t){var e=t.split(" "),o=B(e,2),n=o[0],i=o[1];return{top:n,left:i}},R=V,q=function(t){function e(t){var o=this;n(this,e),z(Object.getPrototypeOf(e.prototype),"constructor",this).call(this),this.position=this.position.bind(this),L.push(this),this.history=[],this.setOptions(t,!1),x.modules.forEach(function(t){"undefined"!=typeof t.initialize&&t.initialize.call(o)}),this.position()}return v(e,t),E(e,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return"undefined"!=typeof e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,o=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],n={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=h(n,t);var i=this.options,s=i.element,a=i.target,f=i.targetModifier;if(this.element=s,this.target=a,this.targetModifier=f,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if("undefined"==typeof e[t])throw new Error("Tether Error: Both element and target must be defined");"undefined"!=typeof e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),d(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&d(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=R(this.options.targetAttachment),this.attachment=R(this.options.attachment),this.offset=V(this.options.offset),this.targetOffset=V(this.options.targetOffset),"undefined"!=typeof this.scrollParents&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParents=[this.target]:this.scrollParents=r(this.target),this.options.enabled!==!1&&this.enable(o)}},{key:"getTargetBounds",value:function(){if("undefined"==typeof this.targetModifier)return a(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=a(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.topo.clientWidth||[n.overflow,n.overflowX].indexOf("scroll")>=0||this.target!==document.body,r=0;i&&(r=15);var s=t.height-parseFloat(n.borderTopWidth)-parseFloat(n.borderBottomWidth)-r,e={width:15,height:.975*s*(s/o.scrollHeight),left:t.left+t.width-parseFloat(n.borderLeftWidth)-15},f=0;408>s&&this.target===document.body&&(f=-11e-5*Math.pow(s,2)-.00727*s+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var l=this.target.scrollTop/(o.scrollHeight-s);return e.top=l*(s-e.height-f)+t.top+parseFloat(n.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return"undefined"==typeof this._cache&&(this._cache={}),"undefined"==typeof this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];this.options.addTargetClasses!==!1&&d(this.target,this.getClass("enabled")),d(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParents.forEach(function(e){e!==t.target.ownerDocument&&e.addEventListener("scroll",t.position)}),e&&this.position()}},{key:"disable",value:function(){var t=this;u(this.target,this.getClass("enabled")),u(this.element,this.getClass("enabled")),this.enabled=!1,"undefined"!=typeof this.scrollParents&&this.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.position)})}},{key:"destroy",value:function(){var t=this;this.disable(),L.forEach(function(e,o){e===t&&L.splice(o,1)}),0===L.length&&s()}},{key:"updateAttachClasses",value:function(t,e){var o=this;t=t||this.attachment,e=e||this.targetAttachment;var n=["left","top","bottom","right","middle","center"];"undefined"!=typeof this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),"undefined"==typeof this._addAttachClasses&&(this._addAttachClasses=[]);var i=this._addAttachClasses;t.top&&i.push(this.getClass("element-attached")+"-"+t.top),t.left&&i.push(this.getClass("element-attached")+"-"+t.left),e.top&&i.push(this.getClass("target-attached")+"-"+e.top),e.left&&i.push(this.getClass("target-attached")+"-"+e.left);var r=[];n.forEach(function(t){r.push(o.getClass("element-attached")+"-"+t),r.push(o.getClass("target-attached")+"-"+t)}),M(function(){"undefined"!=typeof o._addAttachClasses&&(m(o.element,o._addAttachClasses,r),o.options.addTargetClasses!==!1&&m(o.target,o._addAttachClasses,r),delete o._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];if(this.enabled){this.clearCache();var o=N(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,o);var n=this.cache("element-bounds",function(){return a(t.element)}),i=n.width,r=n.height;if(0===i&&0===r&&"undefined"!=typeof this.lastSize){var s=this.lastSize;i=s.width,r=s.height}else this.lastSize={width:i,height:r};var h=this.cache("target-bounds",function(){return t.getTargetBounds()}),u=h,d=C(U(this.attachment),{width:i,height:r}),p=C(U(o),u),c=C(this.offset,{width:i,height:r}),g=C(this.targetOffset,u);d=w(d,c),p=w(p,g);for(var m=h.left+p.left-d.left,v=h.top+p.top-d.top,y=0;yT.innerWidth&&(S=this.cache("scrollbar-size",l),E.viewport.bottom-=S.height),A.body.scrollHeight>T.innerHeight&&(S=this.cache("scrollbar-size",l),E.viewport.right-=S.width),(-1===["","static"].indexOf(A.body.style.position)||-1===["","static"].indexOf(A.body.parentElement.style.position))&&(E.page.bottom=A.body.scrollHeight-v-r,E.page.right=A.body.scrollWidth-m-i),"undefined"!=typeof this.options.optimizations&&this.options.optimizations.moveElement!==!1&&"undefined"==typeof this.targetModifier&&!function(){var e=t.cache("target-offsetparent",function(){return f(t.target)}),o=t.cache("target-offsetparent-bounds",function(){return a(e)}),n=getComputedStyle(e),i=o,r={};if(["Top","Left","Bottom","Right"].forEach(function(t){r[t.toLowerCase()]=parseFloat(n["border"+t+"Width"])}),o.right=A.body.scrollWidth-o.left-i.width+r.right,o.bottom=A.body.scrollHeight-o.top-i.height+r.bottom,E.page.top>=o.top+r.top&&E.page.bottom>=o.bottom&&E.page.left>=o.left+r.left&&E.page.right>=o.right){var s=e.scrollTop,l=e.scrollLeft;E.offset={top:E.page.top-o.top+s-r.top,left:E.page.left-o.left+l-r.left}}}(),this.move(E),this.history.unshift(E),this.history.length>3&&this.history.pop(),e&&_(),!0}}},{key:"move",value:function(t){var e=this;if("undefined"!=typeof this.element.parentNode){var o={};for(var n in t){o[n]={};for(var i in t[n]){for(var r=!1,s=0;s=0){var c=a.split(" "),m=B(c,2);u=m[0],h=m[1]}else h=u=a;var b=O(e,r);("target"===u||"both"===u)&&(ob[3]&&"bottom"===v.top&&(o-=d,v.top="top")),"together"===u&&("top"===v.top&&("bottom"===y.top&&ob[3]&&o-(s-d)>=b[1]&&(o-=s-d,v.top="bottom",y.top="bottom")),"bottom"===v.top&&("top"===y.top&&o+s>b[3]?(o-=d,v.top="top",o-=s,y.top="bottom"):"bottom"===y.top&&ob[3]&&"top"===y.top?(o-=s,y.top="bottom"):ob[2]&&"right"===v.left&&(n-=p,v.left="left")),"together"===h&&(nb[2]&&"right"===v.left?"left"===y.left?(n-=p,v.left="left",n-=f,y.left="right"):"right"===y.left&&(n-=p,v.left="left",n+=f,y.left="left"):"center"===v.left&&(n+f>b[2]&&"left"===y.left?(n-=f,y.left="right"):nb[3]&&"top"===y.top&&(o-=s,y.top="bottom")),("element"===h||"both"===h)&&(nb[2]&&("left"===y.left?(n-=f,y.left="right"):"center"===y.left&&(n-=f/2,y.left="right"))),"string"==typeof l?l=l.split(",").map(function(t){return t.trim()}):l===!0&&(l=["top","left","right","bottom"]),l=l||[];var w=[],C=[];o=0?(o=b[1],w.push("top")):C.push("top")),o+s>b[3]&&(l.indexOf("bottom")>=0?(o=b[3]-s,w.push("bottom")):C.push("bottom")),n=0?(n=b[0],w.push("left")):C.push("left")),n+f>b[2]&&(l.indexOf("right")>=0?(n=b[2]-f,w.push("right")):C.push("right")),w.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),g.push(t),w.forEach(function(e){g.push(t+"-"+e)})}(),C.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),g.push(t),C.forEach(function(e){g.push(t+"-"+e)})}(),(w.indexOf("left")>=0||w.indexOf("right")>=0)&&(y.left=v.left=!1),(w.indexOf("top")>=0||w.indexOf("bottom")>=0)&&(y.top=v.top=!1),(v.top!==i.top||v.left!==i.left||y.top!==e.attachment.top||y.left!==e.attachment.left)&&(e.updateAttachClasses(y,v),e.trigger("update",{attachment:y,targetAttachment:v}))}),M(function(){e.options.addTargetClasses!==!1&&m(e.target,g,c),m(e.element,g,c)}),{top:o,left:n}}});var j=x.Utils,a=j.getBounds,m=j.updateClasses,M=j.defer;x.modules.push({position:function(t){var e=this,o=t.top,n=t.left,i=this.cache("element-bounds",function(){return a(e.element)}),r=i.height,s=i.width,f=this.getTargetBounds(),l=o+r,h=n+s,u=[];o<=f.bottom&&l>=f.top&&["left","right"].forEach(function(t){var e=f[t];(e===n||e===h)&&u.push(t)}),n<=f.right&&h>=f.left&&["top","bottom"].forEach(function(t){var e=f[t];(e===o||e===l)&&u.push(t)});var d=[],p=[],c=["left","top","right","bottom"];return d.push(this.getClass("abutted")),c.forEach(function(t){d.push(e.getClass("abutted")+"-"+t)}),u.length&&p.push(this.getClass("abutted")),u.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),M(function(){e.options.addTargetClasses!==!1&&m(e.target,p,d),m(e.element,p,d)}),!0}});var B=function(){function t(t,e){var o=[],n=!0,i=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);n=!0);}catch(f){i=!0,r=f}finally{try{!n&&a["return"]&&a["return"]()}finally{if(i)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return x.modules.push({position:function(t){var e=t.top,o=t.left;if(this.options.shift){var n=this.options.shift;"function"==typeof this.options.shift&&(n=this.options.shift.call(this,{top:e,left:o}));var i=void 0,r=void 0;if("string"==typeof n){n=n.split(" "),n[1]=n[1]||n[0];var s=n,a=B(s,2);i=a[0],r=a[1],i=parseFloat(i,10),r=parseFloat(r,10)}else i=n.top,r=n.left;return e+=i,o+=r,{top:e,left:o}}}}),I});
\ No newline at end of file
diff --git a/config.json b/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..bba2feabacc28e34b99da8fc70afbb9e34b8c791
--- /dev/null
+++ b/config.json
@@ -0,0 +1,80 @@
+{
+ "_class": "OAuth2Credentials",
+ "_module": "oauth2client.client",
+ "access_token": "ya29.a0AXooCgvjrmE7Xz8RIPK2Z3kFkm1BE9bzcADuA4Jc6qvUGEGVwhT9rZVbfladW6EdfWIT8yHaZDvCkFqShNWxCIB52kfqM5VqBbbZPF2jwyK-4pMvJzA6n9OqOk_4FAC3gBXdTTDwwJ7zJ5AyYLi5ZxT9z5K3h0Kh57dL4gaCgYKAZESARISFQHGX2MiUYp2qs2ABsUDETkn40BPdw0173",
+ "account_list": [
+ {
+ "auth": "m6wp4yv2u9iaq34ghgxq1a8m69ppr3gl6pmstxpixw1pdbegg0",
+ "password": "admin",
+ "pic": "https://wallpaperaccess.com/full/556378.jpg",
+ "username": "admin"
+ },
+ {
+ "auth": "5ownbblzw2whe47ocn46blcxb52yy1gx1nio3muaft464sjp64",
+ "password": null,
+ "pic": "",
+ "username": null
+ }
+ ],
+ "adult": "false",
+ "arcio": "",
+ "auth": "false",
+ "build_interval": 360,
+ "build_type": "hybrid",
+ "category_list": [
+ {
+ "adult": false,
+ "anilist": false,
+ "id": "12Aw6fVZCR3Rmu8hoDw9wyZ-bpMCx-iro",
+ "language": "en",
+ "name": "Top 250 IMDB Movies",
+ "type": "Movies"
+ },
+ {
+ "adult": false,
+ "anilist": false,
+ "id": "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB",
+ "language": "en",
+ "name": "Movies",
+ "type": "Movies"
+ }
+ ],
+ "client_id": "895306463817-h14aujg3ohgptue5safg2d81530qs4c3.apps.googleusercontent.com",
+ "client_secret": "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",
+ "cloudflare": "",
+ "fetch_assets": "false",
+ "id_token": null,
+ "id_token_jwt": null,
+ "invalid": false,
+ "prefer_mkv": "true",
+ "prefer_mp4": "false",
+ "refresh_token": "1//0gsu0CorccmScCgYIARAAGBASNwF-L9IrF-TDYDXR_MTQGAGGf4fY4BBBSBUipsz_7c0B6HjmRYZV3uxPVU4CAJjqWoWBm0T4pxA",
+ "remove_duplicates": "true",
+ "remove_no_poster": "false",
+ "revoke_uri": "https://oauth2.googleapis.com/revoke",
+ "scopes": [
+ "https://www.googleapis.com/auth/drive"
+ ],
+ "secret_key": "@liblh",
+ "service_accounts": [],
+ "signup": "false",
+ "subtitles": false,
+ "tmdb_api_key": "62f468841882603c875ca0d32315792e",
+ "token_expiry": "2024-06-12 17:40:25.977466",
+ "token_info_uri": "https://oauth2.googleapis.com/tokeninfo",
+ "token_response": {
+ "access_token": "ya29.a0AXooCgtLK5HzYMtRs4R9J7FRZSGR3i5jUkeMeVhGjorlrgq_BupFi8d9upA2skYC5FofxUqo23Nivk_P_Hy8eRn0DWM3deSKoiWMhA3lsy05JVakD0vd2fPRaFOXfRV20jAEGt6ql9yy_0up3Y9z8u9yXZ28IUxRRZAHaCgYKASQSARISFQHGX2MipVyGD4fFFZJWXGvyd-sJnQ0171",
+ "expires_in": 3599,
+ "refresh_token": "1//0gsu0CorccmScCgYIARAAGBASNwF-L9IrF-TDYDXR_MTQGAGGf4fY4BBBSBUipsz_7c0B6HjmRYZV3uxPVU4CAJjqWoWBm0T4pxA",
+ "scope": "https://www.googleapis.com/auth/drive",
+ "token_type": "Bearer"
+ },
+ "token_uri": "https://oauth2.googleapis.com/token",
+ "transcoded": "false",
+ "ui_config": {
+ "custom_button": {},
+ "icon": "https://wallpaperaccess.com/full/556378.jpg",
+ "title": "TheJagStudio"
+ },
+ "user_agent": null
+}
\ No newline at end of file
diff --git a/logs/20240612-170508.log b/logs/20240612-170508.log
new file mode 100644
index 0000000000000000000000000000000000000000..677a6e80ba48d9bdaa1ef5e53c76a3b34d1c964c
--- /dev/null
+++ b/logs/20240612-170508.log
@@ -0,0 +1,23 @@
+INFO:apscheduler.scheduler:Adding job tentatively -- it will be properly scheduled when the scheduler starts
+INFO:apscheduler.scheduler:Added job "threaded_metadata" to job store "default"
+INFO:apscheduler.scheduler:Scheduler started
+INFO:werkzeug:[31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m
+ * Running on all addresses (0.0.0.0)
+ * Running on http://127.0.0.1:31145
+ * Running on http://192.168.1.120:31145
+INFO:werkzeug:[33mPress CTRL+C to quit[0m
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:11] "GET / HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:11] "GET /static/css/2.daab17c2.chunk.css HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:11] "GET /static/js/main.3befde2b.chunk.js HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:11] "GET /static/js/2.2fe3e611.chunk.js HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:11] "GET /static/css/main.ffa6fb5b.chunk.css HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:11] "[35m[1mGET /api/v1/auth?rules=signup HTTP/1.1[0m" 202 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:12] "[36mGET /manifest.webmanifest HTTP/1.1[0m" 304 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:12] "[36mGET /images/icons/icon-144x144.png HTTP/1.1[0m" 304 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:34] "[36mGET /static/css/2.daab17c2.chunk.css HTTP/1.1[0m" 304 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:34] "[36mGET /manifest.webmanifest HTTP/1.1[0m" 304 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:34] "[36mGET /static/css/main.ffa6fb5b.chunk.css HTTP/1.1[0m" 304 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:34] "GET /static/js/2.2fe3e611.chunk.js.map HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:34] "GET /static/js/main.3befde2b.chunk.js.map HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:34] "GET /static/css/2.daab17c2.chunk.css.map HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:35:34] "GET /static/css/main.ffa6fb5b.chunk.css.map HTTP/1.1" 200 -
diff --git a/logs/20240612-170654.log b/logs/20240612-170654.log
new file mode 100644
index 0000000000000000000000000000000000000000..951d807ee4c38c8fe05501817d332d11ba50b7ac
--- /dev/null
+++ b/logs/20240612-170654.log
@@ -0,0 +1,28 @@
+INFO:apscheduler.scheduler:Adding job tentatively -- it will be properly scheduled when the scheduler starts
+INFO:apscheduler.scheduler:Added job "threaded_metadata" to job store "default"
+INFO:apscheduler.scheduler:Scheduler started
+INFO:werkzeug:[31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m
+ * Running on all addresses (0.0.0.0)
+ * Running on http://127.0.0.1:31145
+ * Running on http://192.168.1.120:31145
+INFO:werkzeug:[33mPress CTRL+C to quit[0m
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:58] "GET /login HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:58] "GET /static/css/main.ffa6fb5b.chunk.css HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:58] "GET /static/css/2.daab17c2.chunk.css HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:58] "GET /static/js/2.2fe3e611.chunk.js HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:58] "GET /static/js/main.4c186c3c.chunk.js HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:59] "GET /static/css/main.ffa6fb5b.chunk.css.map HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:59] "GET /static/css/2.daab17c2.chunk.css.map HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:59] "GET /static/js/2.2fe3e611.chunk.js.map HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:59] "[35m[1mGET /api/v1/auth?rules=signup HTTP/1.1[0m" 202 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:59] "GET /static/js/main.4c186c3c.chunk.js.map HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:59] "[36mGET /manifest.webmanifest HTTP/1.1[0m" 304 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:36:59] "[36mGET /images/icons/icon-144x144.png HTTP/1.1[0m" 304 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:37:04] "GET /api/v1/auth?u=admin&p=admin HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:37:04] "GET /api/v1/metadata?a=m6wp4yv2u9iaq34ghgxq1a8m69ppr3gl6pmstxpixw1pdbegg0&r=0:16&s=popularity-des&rmdup=true HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:37:04] "GET /api/v1/environment?a=m6wp4yv2u9iaq34ghgxq1a8m69ppr3gl6pmstxpixw1pdbegg0 HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:37:13] "GET /api/v1/metadata?a=m6wp4yv2u9iaq34ghgxq1a8m69ppr3gl6pmstxpixw1pdbegg0&id=1rFSKs-yVMNUMly3FfTOOeHqF5X9gJinM HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:37:13] "GET /api/v1/streammap?a=m6wp4yv2u9iaq34ghgxq1a8m69ppr3gl6pmstxpixw1pdbegg0&id=1rFSKs-yVMNUMly3FfTOOeHqF5X9gJinM&parent=1b1PsmwJbIsZUThVoWfXZk_eVmx_zyI0P&name=Godzilla.X.Kong.The.New.Empire.2024.REPACK.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4&t=file&server=http://127.0.0.1:31145 HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:37:13] "GET /api/v1/environment?a=m6wp4yv2u9iaq34ghgxq1a8m69ppr3gl6pmstxpixw1pdbegg0 HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:37:13] "[32mGET /api/v1/redirectdownload/Godzilla.X.Kong.The.New.Empire.2024.REPACK.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4?a=m6wp4yv2u9iaq34ghgxq1a8m69ppr3gl6pmstxpixw1pdbegg0&id=1rFSKs-yVMNUMly3FfTOOeHqF5X9gJinM HTTP/1.1[0m" 302 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:37:17] "GET /api/v1/download/Godzilla.X.Kong.The.New.Empire.2024.REPACK.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4?a=m6wp4yv2u9iaq34ghgxq1a8m69ppr3gl6pmstxpixw1pdbegg0&id=1rFSKs-yVMNUMly3FfTOOeHqF5X9gJinM&session=eyJhY2Nlc3NfdG9rZW4iOiAieWEyOS5hMEFYb29DZ3Zqcm1FN1h6OFJJUEsyWjNrRmttMUJFOWJ6Y0FEdUE0SmM2cXZVR0VHVndoVDlyWlZiZmxhZFc2RWRmV0lUOHlIYVpEdkNrRnFTaE5XeENJQjUya2ZxTTVWcUJiYlpQRjJqd3lLLTRwTXZKekE2bjlPcU9rXzRGQUMzZ0JYZFRURHd3Sjd6SjVBeVlMaTVaeFQ5ejVLM2gwS2g1N2RMNGdhQ2dZS0FaRVNBUklTRlFIR1gyTWlVWXAycXMyQUJzVURFVGtuNDBCUGR3MDE3MyIsICJjbGllbnRfaWQiOiAiODk1MzA2NDYzODE3LWgxNGF1amczb2hncHR1ZTVzYWZnMmQ4MTUzMHFzNGMzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwgImNsaWVudF9zZWNyZXQiOiAiR09DU1BYLU1pYlFhMjJVaDVvUzNPLWtmUDRtXzNuSVAtX20iLCAicmVmcmVzaF90b2tlbiI6ICIxLy8wZ3N1MENvcmNjbVNjQ2dZSUFSQUFHQkFTTndGLUw5SXJGLVREWURYUl9NVFFHQUdHZjRmWTRCQkJTQlVpcHN6XzdjMEI2SGptUllaVjN1eFBWVTRDQUpqcVdvV0JtMFQ0cHhBIiwgInRva2VuX2V4cGlyeSI6ICIyMDI0LTA2LTEyIDE3OjQwOjI1Ljk3NzQ2NiIsICJ1cmwiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZHJpdmUvdjMvZmlsZXMvMXJGU0tzLXlWTU5VTWx5M0ZmVE9PZUhxRjVYOWdKaW5NP2FsdD1tZWRpYSJ9& HTTP/1.1" 200 -
diff --git a/logs/20240612-170837.log b/logs/20240612-170837.log
new file mode 100644
index 0000000000000000000000000000000000000000..518e1222965f17a89ea08671dfef10a85f0cc6e9
--- /dev/null
+++ b/logs/20240612-170837.log
@@ -0,0 +1,19 @@
+INFO:apscheduler.scheduler:Adding job tentatively -- it will be properly scheduled when the scheduler starts
+INFO:apscheduler.scheduler:Added job "threaded_metadata" to job store "default"
+INFO:apscheduler.scheduler:Scheduler started
+INFO:werkzeug:[31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m
+ * Running on all addresses (0.0.0.0)
+ * Running on http://127.0.0.1:31145
+ * Running on http://192.168.1.120:31145
+INFO:werkzeug:[33mPress CTRL+C to quit[0m
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:38:48] "GET /view/m/1rFSKs-yVMNUMly3FfTOOeHqF5X9gJinM HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:38:48] "GET /static/js/2.2fe3e611.chunk.js HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:38:48] "GET /static/js/main.4c186c3c.chunk.js HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:38:48] "GET /static/css/main.ffa6fb5b.chunk.css HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:38:48] "GET /static/css/2.daab17c2.chunk.css HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:38:48] "[31m[1mGET /api/v1/metadata?a=0&id=1rFSKs-yVMNUMly3FfTOOeHqF5X9gJinM HTTP/1.1[0m" 401 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:38:51] "[35m[1mGET /api/v1/auth?rules=signup HTTP/1.1[0m" 202 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:38:51] "[31m[1mGET /api/v1/auth?u=&p= HTTP/1.1[0m" 401 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:38:55] "GET /api/v1/auth?u=admin&p=admin HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:38:55] "GET /api/v1/metadata?a=m6wp4yv2u9iaq34ghgxq1a8m69ppr3gl6pmstxpixw1pdbegg0&r=0:16&s=popularity-des&rmdup=true HTTP/1.1" 200 -
+INFO:werkzeug:127.0.0.1 - - [12/Jun/2024 22:38:55] "GET /api/v1/environment?a=m6wp4yv2u9iaq34ghgxq1a8m69ppr3gl6pmstxpixw1pdbegg0 HTTP/1.1" 200 -
diff --git a/main.py b/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..e93c10f8db5c0ce2bd13238e2579d3cd94d89de3
--- /dev/null
+++ b/main.py
@@ -0,0 +1,365 @@
+from src.routes.trailer import trailerBP
+from src.routes.subtitledownload import subtitledownloadBP
+from src.routes.streammap import streammapBP
+from src.routes.signup import signupBP
+from src.routes.restart import restartBP
+from src.routes.redirectdownload import redirectdownloadBP
+from src.routes.rebuild import rebuildBP
+from src.routes.ping import pingBP
+from src.routes.metadata import metadataBP
+from src.routes.image import imageBP
+from src.routes.environment import environmentBP
+from src.routes.download import downloadBP
+from src.routes.debug import debugBP
+from src.routes.config import configBP
+from src.routes.auth import authBP
+import datetime
+import io
+import json
+import logging
+import os
+import sys
+import threading
+
+import apscheduler.schedulers.background
+import bs4
+import colorama
+import flask
+import flask_cors
+import googleapiclient
+import requests
+
+import src.functions.config
+import src.functions.credentials
+import src.functions.metadata
+import src.functions.tests
+
+colorama.init()
+print(
+ "====================================================\n\033[96m libDrive - v1.4.7\033[94m\n @eliasbenb\033[0m\n====================================================\n"
+)
+
+print("\033[32mREADING CONFIG...\033[0m")
+if os.getenv("LIBDRIVE_CONFIG"):
+ config_str = os.getenv("LIBDRIVE_CONFIG")
+ with open("config.json", "w+") as w:
+ json.dump(obj=json.loads(config_str), fp=w, sort_keys=True, indent=4)
+config = src.functions.config.readConfig()
+print("DONE.\n")
+
+print("\033[32mREADING METADATA...\033[0m")
+metadata = src.functions.metadata.readMetadata(config)
+if os.getenv("LIBDRIVE_CLOUD") and config.get("refresh_token"):
+ config, drive = src.functions.credentials.refreshCredentials(config)
+ params = {
+ "supportsAllDrives": True,
+ "includeItemsFromAllDrives": True,
+ "fields": "files(id,name)",
+ "q": "'%s' in parents and trashed = false and mimeType = 'application/json'"
+ % (os.getenv("LIBDRIVE_CLOUD")),
+ }
+ files = drive.files().list(**params).execute()["files"]
+ config_file = next((i for i in files if i["name"] == "config.json"), None)
+ metadata_file = next((i for i in files if i["name"] == "metadata.json"), None)
+ if config_file:
+ request = drive.files().get_media(fileId=config_file["id"])
+ fh = io.BytesIO()
+ downloader = googleapiclient.http.MediaIoBaseDownload(fh, request)
+ done = False
+ while done is False:
+ status, done = downloader.next_chunk()
+ config = json.loads(fh.getvalue())
+ config, drive = src.functions.credentials.refreshCredentials(config)
+ src.functions.config.updateConfig(config)
+ if metadata_file:
+ request = drive.files().get_media(fileId=metadata_file["id"])
+ fh = io.BytesIO()
+ downloader = googleapiclient.http.MediaIoBaseDownload(fh, request)
+ done = False
+ while done is False:
+ status, done = downloader.next_chunk()
+ metadata = json.loads(fh.getvalue())
+ with open("metadata.json", "w+") as w:
+ json.dump(metadata, w)
+print("DONE.\n")
+
+if not config.get("account_list"):
+ config["account_list"] = []
+if config.get("account_list") == [] and config.get("signup") == False:
+ config["auth"] = False
+if not config.get("auth"):
+ config["auth"] = False
+if not config.get("build_interval"):
+ config["build_interval"] = 360
+if not config.get("build_type"):
+ config["build_type"] = "hybrid"
+if not config.get("category_list"):
+ config["category_list"] = []
+if not config.get("cloudflare"):
+ config["cloudflare"] = ""
+if not config.get("prefer_mkv"):
+ config["prefer_mkv"] = False
+if not config.get("prefer_mp4"):
+ config["prefer_mp4"] = True
+if not config.get("service_accounts"):
+ config["service_accounts"] = []
+if not config.get("signup"):
+ config["signup"] = False
+if not config.get("subtitles"):
+ config["subtitles"] = False
+if not config.get("transcoded"):
+ config["transcoded"] = False
+if not config.get("ui_config"):
+ config["ui_config"] = {}
+
+with open("config.json", "w+") as w:
+ json.dump(obj=config, fp=w, sort_keys=True, indent=4)
+
+print("\033[32mTESTING YOUR CONFIG...\033[0m")
+# src.functions.tests.tmdb_test(config)
+# src.functions.tests.category_list_test(config)
+# src.functions.tests.account_list_test(config)
+# src.functions.tests.cloudflare_test(config)
+print("DONE.\n")
+
+
+def threaded_metadata():
+ for thread in threading.enumerate():
+ if thread.name == "metadata_thread":
+ print("DONE.\n")
+ return (
+ {
+ "code": 500,
+ "content": None,
+ "message": "libDrive is already building metadata, please wait.",
+ "success": False,
+ },
+ 500,
+ )
+ config = src.functions.config.readConfig()
+ if len(config.get("category_list")) > 0:
+ metadata_thread = threading.Thread(
+ target=src.functions.metadata.writeMetadata,
+ args=(config,),
+ daemon=True,
+ name="metadata_thread",
+ )
+ metadata_thread.start()
+ else:
+ with open("./metadata.json", "w+") as w:
+ w.write(json.dumps([]))
+ return (
+ {
+ "code": 200,
+ "content": None,
+ "message": "libDrive is building your new metadata.",
+ "success": True,
+ },
+ 200,
+ )
+
+
+def create_app():
+ if os.path.exists("./build"):
+ LIBDRIVE_DEBUG = os.getenv("LIBDRIVE_DEBUG")
+ if LIBDRIVE_DEBUG:
+ if LIBDRIVE_DEBUG.lower() == "true":
+ LIBDRIVE_DEBUG = True
+ else:
+ LIBDRIVE_DEBUG = False
+ else:
+ LIBDRIVE_DEBUG = False
+ r = open("./build/index.html", "r")
+ soup = bs4.BeautifulSoup(r.read(), features="html.parser")
+ if config.get("ui_config", {}).get("icon"):
+ try:
+ soup.find("meta", {"id": "@ld-meta-og-image"})["content"] = config.get(
+ "ui_config", {}
+ ).get("icon")
+ except:
+ pass
+ try:
+ soup.find("link", {"id": "@ld-link-icon"})["href"] = config.get(
+ "ui_config", {}
+ ).get("icon")
+ except:
+ pass
+ else:
+ try:
+ soup.find("meta", {"id": "@ld-meta-og-image"})[
+ "content"
+ ] = "/images/icons/icon-512x512.png"
+ except:
+ pass
+ try:
+ soup.find("link", {"id": "@ld-link-icon"})["href"] = "/favicon.ico"
+ except:
+ pass
+ if config.get("ui_config", {}).get("title"):
+ try:
+ soup.find("meta", {"id": "@ld-meta-og-title"})["content"] = config.get(
+ "ui_config", {}
+ ).get("title")
+ except:
+ pass
+ try:
+ soup.find("meta", {"id": "@ld-meta-og-site_name"})[
+ "content"
+ ] = config.get("ui_config", {}).get("title")
+ except:
+ pass
+ try:
+ soup.find("title", {"id": "@ld-title"}).string = config.get(
+ "ui_config", {}
+ ).get("title")
+ except:
+ pass
+ else:
+ try:
+ soup.find("meta", {"id": "@ld-meta-og-title"})["content"] = "libDrive"
+ except:
+ pass
+ try:
+ soup.find("meta", {"id": "@ld-meta-og-site_name"})[
+ "content"
+ ] = "libDrive"
+ except:
+ pass
+ try:
+ soup.find("title", {"id": "@ld-title"}).string = "libDrive"
+ except:
+ pass
+ if (
+ config.get("arcio")
+ and config.get("arcio") != ""
+ and LIBDRIVE_DEBUG == False
+ ):
+ req = requests.get("https://arc.io/arc-sw.js")
+ with open("./build/arc-sw.js", "wb") as wb:
+ wb.write(req.content)
+ code = config.get("arcio")
+ if code == "dev":
+ code = "tUUqUjhw"
+ soup.find("script", {"id": "@ld-script-arcio"})[
+ "src"
+ ] = "//arc.io/widget.min.js#%s" % (code)
+ else:
+ if os.path.exists("./build/arc-sw.js"):
+ os.remove("./build/arc-sw.js")
+ soup.find("script", {"id": "@ld-script-arcio"})["src"] = ""
+ with open("./build/index.html", "w+") as w:
+ w.write(str(soup))
+ r.close()
+
+ app = flask.Flask(__name__, static_folder="build")
+
+ build_interval = config.get("build_interval")
+ if not build_interval:
+ build_interval = 360
+ if build_interval != 0:
+ print("\033[32mCREATING CRON JOB...\033[0m")
+ sched = apscheduler.schedulers.background.BackgroundScheduler(daemon=True)
+ sched.add_job(
+ threaded_metadata,
+ "interval",
+ minutes=build_interval,
+ )
+ sched.start()
+ print("DONE.\n")
+
+ config_categories = [d["id"] for d in config["category_list"]]
+ metadata_categories = [d["id"] for d in metadata]
+ if len(metadata) > 0 and sorted(config_categories) == sorted(metadata_categories):
+ if build_interval == 0:
+ return app
+ elif datetime.datetime.utcnow() <= datetime.datetime.strptime(
+ metadata[-1]["buildTime"], "%Y-%m-%d %H:%M:%S.%f"
+ ) + datetime.timedelta(minutes=build_interval):
+ return app
+ else:
+ threaded_metadata()
+ else:
+ threaded_metadata()
+
+ return app
+
+
+app = create_app()
+flask_cors.CORS(app)
+app.secret_key = config.get("secret_key")
+
+
+app.register_blueprint(authBP)
+app.register_blueprint(configBP)
+app.register_blueprint(debugBP)
+app.register_blueprint(downloadBP)
+app.register_blueprint(environmentBP)
+app.register_blueprint(imageBP)
+app.register_blueprint(metadataBP)
+app.register_blueprint(pingBP)
+# app.register_blueprint(rebuildBP)
+app.register_blueprint(redirectdownloadBP)
+app.register_blueprint(restartBP)
+app.register_blueprint(signupBP)
+app.register_blueprint(streammapBP)
+app.register_blueprint(subtitledownloadBP)
+app.register_blueprint(trailerBP)
+
+
+@app.route("/", defaults={"path": ""})
+@app.route("/")
+async def serve(path):
+ if (path != "") and os.path.exists("%s/%s" % (app.static_folder, path)):
+ return flask.send_from_directory(app.static_folder, path)
+ else:
+ return flask.send_from_directory(app.static_folder, "index.html")
+
+
+if __name__ == "__main__":
+ print("\033[32mSERVING SERVER...\033[0m")
+ LIBDRIVE_DEBUG = os.getenv("LIBDRIVE_DEBUG")
+ if LIBDRIVE_DEBUG:
+ if LIBDRIVE_DEBUG.lower() == "true":
+ LIBDRIVE_DEBUG = True
+ else:
+ LIBDRIVE_DEBUG = False
+ else:
+ LIBDRIVE_DEBUG = False
+ print("DONE.\n")
+ app.run(
+ host="0.0.0.0",
+ port=31145,
+ threaded=True,
+ debug=LIBDRIVE_DEBUG,
+ )
+else:
+ print("\033[32mINITIALIZING LOGGER...\033[0m")
+ if not os.path.exists("./logs"):
+ os.mkdir("./logs")
+ logs_path = os.path.abspath("./logs")
+ logs_max_files = 5
+
+ def sorted_ls(path):
+ def mtime(f): return os.stat(os.path.join(path, f)).st_mtime
+ return list(sorted(os.listdir(path), key=mtime))
+
+ del_list = sorted_ls(logs_path)[0: (len(sorted_ls(logs_path)) - logs_max_files)]
+ for del_file in del_list:
+ try:
+ os.remove(os.path.join(logs_path, del_file))
+ except:
+ pass
+ logging.getLogger("googleapiclient").setLevel(logging.WARNING)
+ logging.getLogger("oauth2client").setLevel(logging.WARNING)
+ logging.getLogger("waitress").setLevel(logging.INFO)
+ logging.basicConfig(
+ filename="./logs/%s.log"
+ % (datetime.datetime.utcnow().strftime("%Y%m%d-%H%M%S")),
+ level=logging.INFO,
+ )
+ console_logger = logging.getLogger()
+ console_logger.setLevel(logging.INFO)
+ console_handler = logging.StreamHandler(sys.stdout)
+ console_handler.setLevel(logging.INFO)
+ console_logger.addHandler(console_handler)
+ print("DONE.\n")
diff --git a/metadata.json b/metadata.json
new file mode 100644
index 0000000000000000000000000000000000000000..30179111d7d034f6476b13fa3dcfda14c0126f99
--- /dev/null
+++ b/metadata.json
@@ -0,0 +1,15402 @@
+[
+ {
+ "buildTime": "2024-06-07 17:10:21.500854",
+ "categoryInfo": {
+ "adult": false,
+ "anilist": false,
+ "id": "12Aw6fVZCR3Rmu8hoDw9wyZ-bpMCx-iro",
+ "language": "en",
+ "name": "Top 250 IMDB Movies",
+ "type": "Movies"
+ },
+ "children": [
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 389,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qqHQsStV6exghCM7zbObuYBiYxw.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1lB1v6ZrCQmTYQ7QTKbX2_l_QTF6hCYGj",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "12.Angry.Men.1957.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "The defense and the prosecution have rested and the jury is filing into the jury room to decide if a young Spanish-American is guilty or innocent of murdering his father. What begins as an open and shut case soon becomes a mini-drama of each of the jurors' prejudices and preconceptions about the trial, the accused, and each other.",
+ "parents": [
+ "1_7iEpuCGPc_aeEXVDi8jq8nLwmxaje64"
+ ],
+ "popularity": 74.285,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ow3wq89wM8qd5X7hWKxiRfsFf9C.jpg",
+ "releaseDate": "1957-04-10",
+ "title": "12 Angry Men",
+ "type": "file",
+ "voteAverage": 8.543
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 76203,
+ "backdropPath": "https://image.tmdb.org/t/p/original/4Bb1kMIfrT2tYRZ9M6Jhqy6gkeF.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1lj1nxkkj_yEam1FiJtdpph7heagocAIK",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "12.Years.a.Slave.2013.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "In the pre-Civil War United States, Solomon Northup, a free black man from upstate New York, is abducted and sold into slavery. Facing cruelty as well as unexpected kindnesses Solomon struggles not only to stay alive, but to retain his dignity. In the twelfth year of his unforgettable odyssey, Solomon\u2019s chance meeting with a Canadian abolitionist will forever alter his life.",
+ "parents": [
+ "1wdS6lCq_JhwfZ5cpdGjsweGYKni6X3vM"
+ ],
+ "popularity": 32.045,
+ "posterPath": "https://image.tmdb.org/t/p/w342/xdANQijuNrJaw1HA61rDccME4Tm.jpg",
+ "releaseDate": "2013-10-18",
+ "title": "12 Years a Slave",
+ "type": "file",
+ "voteAverage": 7.942
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1163258,
+ "backdropPath": "https://image.tmdb.org/t/p/original/6RV2o8PBCEyw9ylOWViV1CtULIF.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1FK4QanxWzrx-Hb7RUw07lROrYbthKoql",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "12th.Fail.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Based on the true story of IPS officer Manoj Kumar Sharma, 12th Fail sheds limelight on fearlessly embracing the idea of restarting the academic journey despite the setbacks and challenges and reclaiming one's destiny at a place where millions of students attempt the world's toughest competitive exam: UPSC.",
+ "parents": [
+ "1EYlG7TZDr4wTgv9O8tNjLZk3SL-YPg2-"
+ ],
+ "popularity": 34.923,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cDWW5l4NTWtQi9McwevrY3knsTd.jpg",
+ "releaseDate": "2023-10-27",
+ "title": "12th Fail",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 530915,
+ "backdropPath": "https://image.tmdb.org/t/p/original/76LpPdXtCf4WxWDagVT2YcF4e9g.jpg",
+ "genres": [
+ "War",
+ "Action",
+ "Drama",
+ "History"
+ ],
+ "id": "1Nk9qChovEyxdM7nA3wT-fZPZUAPNGNt2",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "1917.2019.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "At the height of the First World War, two young British soldiers must cross enemy territory and deliver a message that will stop a deadly attack on hundreds of soldiers.",
+ "parents": [
+ "1_3csiSyKaD4kmTQfFbnC_MZl7eoUm92c"
+ ],
+ "popularity": 47.374,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iZf0KyrE25z1sage4SYFLCCrMi9.jpg",
+ "releaseDate": "2019-12-25",
+ "title": "1917",
+ "type": "file",
+ "voteAverage": 7.993
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 62,
+ "backdropPath": "https://image.tmdb.org/t/p/original/w5IDXtifKntw0ajv2co7jFlTQDM.jpg",
+ "genres": [
+ "Science Fiction",
+ "Mystery",
+ "Adventure"
+ ],
+ "id": "1AacZnw1zW_C3OjwnE5-uzfoxfVoeCCHD",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "2001.A.Space.Odyssey.1968.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Humanity finds a mysterious object buried beneath the lunar surface and sets off to find its origins with the help of HAL 9000, the world's most advanced super computer.",
+ "parents": [
+ "1SJEr1QxSSnHqBe_d1SXMZTe7Rxb95zuh"
+ ],
+ "popularity": 358.718,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ve72VxNqjGM69Uky4WTo2bK6rfq.jpg",
+ "releaseDate": "1968-04-02",
+ "title": "2001: A Space Odyssey",
+ "type": "file",
+ "voteAverage": 8.078
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 14161,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pvxmYJcgrLiYC6G2IQTn1PPNems.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1J0Z_BDQooy6oPEdr-z_JrkyrXQyYwfij",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "2012.2009.BluRay.1080p.x264.YIFY.mp4",
+ "overview": "Dr. Adrian Helmsley, part of a worldwide geophysical team investigating the effect on the earth of radiation from unprecedented solar storms, learns that the earth's core is heating up. He warns U.S. President Thomas Wilson that the crust of the earth is becoming unstable and that without proper preparations for saving a fraction of the world's population, the entire race is doomed. Meanwhile, writer Jackson Curtis stumbles on the same information. While the world's leaders race to build \"arks\" to escape the impending cataclysm, Curtis struggles to find a way to save his family. Meanwhile, volcanic eruptions and earthquakes of unprecedented strength wreak havoc around the world.",
+ "parents": [
+ "18ts1ITcUA2NaWo4r1Fd7wA3Yb6Z7eKFP"
+ ],
+ "popularity": 81.737,
+ "posterPath": "https://image.tmdb.org/t/p/w342/zaqam2RNscH5ooYFWInV6hjx6y5.jpg",
+ "releaseDate": "2009-10-10",
+ "title": "2012",
+ "type": "file",
+ "voteAverage": 5.839
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 20453,
+ "backdropPath": "https://image.tmdb.org/t/p/original/u7kuUaySqXBVAtqEl9vkTkAzHV9.jpg",
+ "genres": [
+ "Drama",
+ "Comedy"
+ ],
+ "id": "1WSSPvAlFjTsAP_l1lP-wUau6fOIY09o9",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "3.Idiots.2009.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Rascal. Joker. Dreamer. Genius... You've never met a college student quite like \"Rancho.\" From the moment he arrives at India's most prestigious university, Rancho's outlandish schemes turn the campus upside down\u2014along with the lives of his two newfound best friends. Together, they make life miserable for \"Virus,\" the school\u2019s uptight and heartless dean. But when Rancho catches the eye of the dean's daughter, Virus sets his sights on flunking out the \"3 idiots\" once and for all.",
+ "parents": [
+ "1VZk6-teSd3d9RrnZrWGD7EtCcwMgZAqJ"
+ ],
+ "popularity": 32.012,
+ "posterPath": "https://image.tmdb.org/t/p/w342/66A9MqXOyVFCssoloscw79z8Tew.jpg",
+ "releaseDate": "2009-12-23",
+ "title": "3 Idiots",
+ "type": "file",
+ "voteAverage": 7.991
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 453,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zbpZOYrRCxEF8lFT5JC8XodEggC.jpg",
+ "genres": [
+ "Drama",
+ "Romance"
+ ],
+ "id": "1epDtunboVqc4VuwzfwddmWKOrDJ6cwMH",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "A.Beautiful.Mind.2001.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "In a decades-spanning biopic, brilliant mathematician John Forbes Nash Jr. makes history in his field as schizophrenia sets in.",
+ "parents": [
+ "18ElBNk0R5ppkSOpDP-r9LTYEFGGKDEL4"
+ ],
+ "popularity": 83.481,
+ "posterPath": "https://image.tmdb.org/t/p/w342/zwzWCmH72OSC9NA0ipoqw5Zjya8.jpg",
+ "releaseDate": "2001-12-14",
+ "title": "A Beautiful Mind",
+ "type": "file",
+ "voteAverage": 7.858
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 185,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nLFxvLokHe3bQmrmAfljIfax2jQ.jpg",
+ "genres": [
+ "Science Fiction",
+ "Crime"
+ ],
+ "id": "18Ya1hik445emZu_7xqB5gGbCHUAJc7gP",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "A.Clockwork.Orange.1971.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "In a near-future Britain, young Alexander DeLarge and his pals get their kicks beating and raping anyone they please. When not destroying the lives of others, Alex swoons to the music of Beethoven. The state, eager to crack down on juvenile crime, gives an incarcerated Alex the option to undergo an invasive procedure that'll rob him of all personal agency. In a time when conscience is a commodity, can Alex change his tune?",
+ "parents": [
+ "1nPrRT4tiEmWv5_5hKmFx5LWem4712_nh"
+ ],
+ "popularity": 44.464,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4sHeTAp65WrSSuc05nRBKddhBxO.jpg",
+ "releaseDate": "1971-12-19",
+ "title": "A Clockwork Orange",
+ "type": "file",
+ "voteAverage": 8.204
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 60243,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kcXBa2ru0PXcGI8U3JiInsG6FRR.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "13DVG0M_m6ZluwMJU2vnevkrwZ_AReCFV",
+ "language": "fa",
+ "mimeType": "video/mp4",
+ "name": "A.Separation.2011.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A married couple are faced with a difficult decision - to improve the life of their child by moving to another country or to stay in Iran and look after a deteriorating parent who has Alzheimer's disease.",
+ "parents": [
+ "1-Cbf5imsVH7MF239__PiAjfSa-04wvnN"
+ ],
+ "popularity": 13.969,
+ "posterPath": "https://image.tmdb.org/t/p/w342/xQadpnoLokxzN3hRpCPbBGpxsiz.jpg",
+ "releaseDate": "2011-02-15",
+ "title": "A Separation",
+ "type": "file",
+ "voteAverage": 7.892
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 812,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nenJjvfe2Eq8uBMXFJnWj5mw4bi.jpg",
+ "genres": [
+ "Animation",
+ "Family",
+ "Adventure",
+ "Fantasy",
+ "Romance"
+ ],
+ "id": "1weyg5EIVTMx9WSjsSugxggvQEhguDUCb",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Aladdin.1992.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Princess Jasmine grows tired of being forced to remain in the palace, so she sneaks out into the marketplace, in disguise, where she meets street urchin Aladdin. The couple falls in love, although Jasmine may only marry a prince. After being thrown in jail, Aladdin becomes embroiled in a plot to find a mysterious lamp, with which the evil Jafar hopes to rule the land.",
+ "parents": [
+ "1069z2LyO00O7W5uBNPhR-JJFoY-tb12S"
+ ],
+ "popularity": 98.081,
+ "posterPath": "https://image.tmdb.org/t/p/w342/oakAd8syy7jNQ4ZoaAGCQkTqcOV.jpg",
+ "releaseDate": "1992-11-25",
+ "title": "Aladdin",
+ "type": "file",
+ "voteAverage": 7.651
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 348,
+ "backdropPath": "https://image.tmdb.org/t/p/original/AmR3JG1VQVxU8TfAvljUhfSFUOx.jpg",
+ "genres": [
+ "Horror",
+ "Science Fiction"
+ ],
+ "id": "1q4fZD5OutvQJlSLMR2kg-v67Q8T0l5hc",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Alien.Directors.Cut.1979.1080p.BRrip.x264.GAZ.YIFY.mp4",
+ "overview": "During its return to the earth, commercial spaceship Nostromo intercepts a distress signal from a distant planet. When a three-member team of the crew discovers a chamber containing thousands of eggs on the planet, a creature inside one of the eggs attacks an explorer. The entire crew is unaware of the impending nightmare set to descend upon them when the alien parasite planted inside its unfortunate host is birthed.",
+ "parents": [
+ "1Fx70IhV-1cXgtEbH7gIyHDO2tCSDCyrK"
+ ],
+ "popularity": 398.243,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vfrQk5IPloGg1v9Rzbh2Eg3VGyM.jpg",
+ "releaseDate": "1979-05-25",
+ "title": "Alien",
+ "type": "file",
+ "voteAverage": 8.154
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 679,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jMBpJFRtrtIXymer93XLavPwI3P.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Science Fiction"
+ ],
+ "id": "17J2e9DsiV_EyJ2-cstsScfS0DcCIxXDx",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Aliens.Directors.Cut.1986.1080p.BRrip.x264.GAZ.YIFY.mp4",
+ "overview": "Ripley, the sole survivor of the Nostromo's deadly encounter with the monstrous Alien, returns to Earth after drifting through space in hypersleep for 57 years. Although her story is initially met with skepticism, she agrees to accompany a team of Colonial Marines back to LV-426.",
+ "parents": [
+ "1NCx6wo0YrctKP8XPqH22HdwwaUabToIf"
+ ],
+ "popularity": 94.192,
+ "posterPath": "https://image.tmdb.org/t/p/w342/r1x5JGpyqZU8PYhbs4UcrO1Xb6x.jpg",
+ "releaseDate": "1986-07-18",
+ "title": "Aliens",
+ "type": "file",
+ "voteAverage": 7.939
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 705,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zbi0Ib6FSUHlUu3nC0t3Mzkm5D4.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "17qWM5e4lFud2ScSTRzQ_rOq51elgEAnY",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "All.About.Eve.1950.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "From the moment she glimpses her idol at the stage door, Eve Harrington is determined to take the reins of power away from the great actress Margo Channing. Eve maneuvers her way into Margo's Broadway role, becomes a sensation and even causes turmoil in the lives of Margo's director boyfriend, her playwright and his wife. Only the cynical drama critic sees through Eve, admiring her audacity and perfect pattern of deceit.",
+ "parents": [
+ "1rDBYPAfzFfoYZjZXv83QOMSofhe_tScY"
+ ],
+ "popularity": 19.471,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6numIZH6uR3NlJgY9m7nGH0jhs.jpg",
+ "releaseDate": "1950-11-09",
+ "title": "All About Eve",
+ "type": "file",
+ "voteAverage": 8.102
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 279,
+ "backdropPath": "https://image.tmdb.org/t/p/original/iV69FowcM3aO0JWAmd6owwSMU0Z.jpg",
+ "genres": [
+ "History",
+ "Music",
+ "Drama"
+ ],
+ "id": "1PoYUOfsEde_ApiiSJ582Bc5BN56vAVO3",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Amadeus.1984.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Wolfgang Amadeus Mozart is a remarkably talented young Viennese composer who unwittingly finds a fierce rival in the disciplined and determined Antonio Salieri. Resenting Mozart for both his hedonistic lifestyle and his undeniable talent, the highly religious Salieri is gradually consumed by his jealousy and becomes obsessed with Mozart's downfall, leading to a devious scheme that has dire consequences for both men.",
+ "parents": [
+ "1AJxVAs69iVuGXXIIjK1Hhk18BLrmLHy_"
+ ],
+ "popularity": 41.397,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1n5VUlCqgmVax1adxGZm8oCFaKc.jpg",
+ "releaseDate": "1984-09-19",
+ "title": "Amadeus",
+ "type": "file",
+ "voteAverage": 8.035
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 14,
+ "backdropPath": "https://image.tmdb.org/t/p/original/DztBnZaqmla2sGUW9s8AyOmskT.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1pOoBh6ysFl9e8bTJkz6IHGv_dTsIkb2Q",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "American.Beauty.1999.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Lester Burnham, a depressed suburban father in a mid-life crisis, decides to turn his hectic life around after developing an infatuation with his daughter's attractive friend.",
+ "parents": [
+ "1ek68CSJVz_Z4XgZQawMbZ7fFnjYhnzHY"
+ ],
+ "popularity": 186.97,
+ "posterPath": "https://image.tmdb.org/t/p/w342/wby9315QzVKdW9BonAefg8jGTTb.jpg",
+ "releaseDate": "1999-09-15",
+ "title": "American Beauty",
+ "type": "file",
+ "voteAverage": 8.019
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 73,
+ "backdropPath": "https://image.tmdb.org/t/p/original/6qHI1IYj7QlLSCwHRzkL62X175s.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1EhEYKCefAHIaERMvkJUZmQeYAf79eK1B",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "American.History.X.1998.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Derek Vineyard is paroled after serving 3 years in prison for killing two African-American men. Through his brother, Danny Vineyard's narration, we learn that before going to prison, Derek was a skinhead and the leader of a violent white supremacist gang that committed acts of racial crime throughout L.A. and his actions greatly influenced Danny. Reformed and fresh out of prison, Derek severs contact with the gang and becomes determined to keep Danny from going down the same violent path as he did.",
+ "parents": [
+ "10PTY2LWJYirC2MEiRXAv_PA_8umFAQvG"
+ ],
+ "popularity": 67.863,
+ "posterPath": "https://image.tmdb.org/t/p/w342/euypWkaYFOLW3e5rLIcTAjWnhhT.jpg",
+ "releaseDate": "1998-07-01",
+ "title": "American History X",
+ "type": "file",
+ "voteAverage": 8.346
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 55,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qNQOEzm6xJ2hgWDImzkIox27aiV.jpg",
+ "genres": [
+ "Drama",
+ "Thriller"
+ ],
+ "id": "14tODj-juzAcEQC8zeouHENfdwEWYNE_F",
+ "language": "es",
+ "mimeType": "video/mp4",
+ "name": "Amores.Perros.2000.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A fatalistic car crash in Mexico city sets off a chain of events in the lives of three people: a supermodel, a young man wanting to run off with his sister-in-law, and a homeless man. Their lives are catapulted into unforeseen situations instigated by the seemingly inconsequential destiny of a dog.",
+ "parents": [
+ "1Ok1CiCF5BjUBmO7dBfVBixORZLkY8Hk1"
+ ],
+ "popularity": 31.969,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mXc2QcFXUTQz2wU7S0zgeG5C3Bg.jpg",
+ "releaseDate": "2000-06-16",
+ "title": "Amores Perros",
+ "type": "file",
+ "voteAverage": 7.636
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 194,
+ "backdropPath": "https://image.tmdb.org/t/p/original/6n53UI4mX9QMfe2S0Pgt8mGebY1.jpg",
+ "genres": [
+ "Comedy",
+ "Romance"
+ ],
+ "id": "1AkSKYpQbRpZVEaigNPv6cVgAXeq0B3Yj",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "Am\u00e9lie.2001.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "At a tiny Parisian caf\u00e9, the adorable yet painfully shy Am\u00e9lie accidentally discovers a gift for helping others. Soon Amelie is spending her days as a matchmaker, guardian angel, and all-around do-gooder. But when she bumps into a handsome stranger, will she find the courage to become the star of her very own love story?",
+ "parents": [
+ "1LqQiWTT0d5ZD290HBeW9zM3oY9p4CsbL"
+ ],
+ "popularity": 33.599,
+ "posterPath": "https://image.tmdb.org/t/p/w342/nSxDa3M9aMvGVLoItzWTepQ5h5d.jpg",
+ "releaseDate": "2001-04-25",
+ "title": "Am\u00e9lie",
+ "type": "file",
+ "voteAverage": 7.909
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 28,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1oWqzZft4AfDvtu48Z1J8t93DDM.jpg",
+ "genres": [
+ "Drama",
+ "War"
+ ],
+ "id": "1FlK31JfYKcvDU0ADphthqEqFUoHR0MSN",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Apocalypse.Now.1979.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "At the height of the Vietnam war, Captain Benjamin Willard is sent on a dangerous mission that, officially, \"does not exist, nor will it ever exist.\" His goal is to locate - and eliminate - a mysterious Green Beret Colonel named Walter Kurtz, who has been leading his personal army on illegal guerrilla missions into enemy territory.",
+ "parents": [
+ "17z5ZsMbJlvtPVnAjFb-gxmBtLt6B5ach"
+ ],
+ "popularity": 63.115,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gQB8Y5RCMkv2zwzFHbUJX3kAhvA.jpg",
+ "releaseDate": "1979-08-15",
+ "title": "Apocalypse Now",
+ "type": "file",
+ "voteAverage": 8.284
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 299534,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7RyHsO4yDXtBv1zUU3mTpHeQ0d5.jpg",
+ "genres": [
+ "Adventure",
+ "Science Fiction",
+ "Action"
+ ],
+ "id": "1gsx7o21HS6u6wnzE2N2ndpA_qhwk1Tp-",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Avengers.Endgame.2019.1080p.BluRay.x264-[YTS.LT].mp4",
+ "overview": "After the devastating events of Avengers: Infinity War, the universe is in ruins due to the efforts of the Mad Titan, Thanos. With the help of remaining allies, the Avengers must assemble once more in order to undo Thanos' actions and restore order to the universe once and for all, no matter what consequences may be in store.",
+ "parents": [
+ "1P0_N2hgploBJEtxAc3kRhamyj6vYV440"
+ ],
+ "popularity": 226.834,
+ "posterPath": "https://image.tmdb.org/t/p/w342/or06FN3Dka5tukK1e9sl16pB3iy.jpg",
+ "releaseDate": "2019-04-24",
+ "title": "Avengers: Endgame",
+ "type": "file",
+ "voteAverage": 8.253
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 105,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hxSB02ksqnkXY4hPGAXqgO2fL01.jpg",
+ "genres": [
+ "Adventure",
+ "Comedy",
+ "Science Fiction"
+ ],
+ "id": "1-h03nAkaS4yaXFaZGmUpF7Qcs5Uaw1EG",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Back.to.the.Future.1985.1080p.Brrip.x264.Deceit.YIFY.mp4",
+ "overview": "Eighties teenager Marty McFly is accidentally sent back in time to 1955, inadvertently disrupting his parents' first meeting and attracting his mother's romantic interest. Marty must repair the damage to history by rekindling his parents' romance and - with the help of his eccentric inventor friend Doc Brown - return to 1985.",
+ "parents": [
+ "17NTiBKzgumd3mQEhZodL6OiQM0T8Kths"
+ ],
+ "popularity": 93.151,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fNOH9f1aA7XRTzl1sAOx9iF553Q.jpg",
+ "releaseDate": "1985-07-03",
+ "title": "Back to the Future",
+ "type": "file",
+ "voteAverage": 8.317
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3175,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ef6SvWbSfCFlKodJZqpIaTvsRRP.jpg",
+ "genres": [
+ "Drama",
+ "Romance",
+ "War"
+ ],
+ "id": "167rUpTA2KNXJZF0jb01V8OaBSs76rVne",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Barry.Lyndon.1975.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "An Irish rogue uses his cunning and wit to work his way up the social classes of 18th century England, transforming himself from the humble Redmond Barry into the noble Barry Lyndon.",
+ "parents": [
+ "1AMMIR3QBxT3qY50VFAbdQOjYnfs3BreH"
+ ],
+ "popularity": 45.758,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dOJtBSyI30wWc08UmyEKLsu4Rfk.jpg",
+ "releaseDate": "1975-12-18",
+ "title": "Barry Lyndon",
+ "type": "file",
+ "voteAverage": 8.004
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 272,
+ "backdropPath": "https://image.tmdb.org/t/p/original/lh5lbisD4oDbEKgUxoRaZU8HVrk.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Drama"
+ ],
+ "id": "1t-WKBKAGpjkbNKppFhnms6Upvgy3dPYY",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Batman.Begins.2005.REMASTERED.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Driven by tragedy, billionaire Bruce Wayne dedicates his life to uncovering and defeating the corruption that plagues his home, Gotham City. Unable to work within the system, he instead creates a new identity, a symbol of fear for the criminal underworld - The Batman.",
+ "parents": [
+ "1iuQ9Q5k1Q-oxxlL8bJIWf4kEMwF4Q87z"
+ ],
+ "popularity": 162.368,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4MpN4kIEqUjW8OPtOQJXlTdHiJV.jpg",
+ "releaseDate": "2005-06-10",
+ "title": "Batman Begins",
+ "type": "file",
+ "voteAverage": 7.706
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 29751,
+ "backdropPath": "https://image.tmdb.org/t/p/original/9PnKdVpdC7HaNjQLKPygHMT637e.jpg",
+ "genres": [
+ "Documentary"
+ ],
+ "id": "1Te7KpkSpx__SLJ8Nyd-w2ZhaBV5SnAkm",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Batman.The.Dark.Knight.2008.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Delve into the world of Batman and the vigilante justice that he brought to the city of Gotham. Batman is a man who, after experiencing great tragedy, devotes his life to an ideal--but what happens when one man takes on the evil underworld alone? Examine why Batman is who he is--and explore how a boy scarred by tragedy becomes a symbol of hope to everyone else.",
+ "parents": [
+ "1YSoIzBRdsBlLTOFHulI2zSEXNSGWe-Rq"
+ ],
+ "popularity": 4.713,
+ "posterPath": "https://image.tmdb.org/t/p/w342/e15wNHmLX7PJUo8lqzQRhwbX7PL.jpg",
+ "releaseDate": "2008-07-15",
+ "title": "Batman Unmasked: The Psychology of 'The Dark Knight'",
+ "type": "file",
+ "voteAverage": 7.446
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 76,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qA2TyqPldTtoTVY3LKrNIG5g6bH.jpg",
+ "genres": [
+ "Drama",
+ "Romance"
+ ],
+ "id": "1evtt9RgkLYIAbtc4NCPVlgK1vigqxLjZ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Before.Sunrise.1995.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A young man and woman meet on a train in Europe, and wind up spending one evening together in Vienna. Unfortunately, both know that this will probably be their only night together.",
+ "parents": [
+ "1yh-w7y_aLRH2sUwgW_y-Rn4J_OM2K6iC"
+ ],
+ "popularity": 45.629,
+ "posterPath": "https://image.tmdb.org/t/p/w342/kf1Jb1c2JAOqjuzA3H4oDM263uB.jpg",
+ "releaseDate": "1995-01-27",
+ "title": "Before Sunrise",
+ "type": "file",
+ "voteAverage": 7.972
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 80,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zwgDZw9dyrgkYz2RCOb2HvUDlt2.jpg",
+ "genres": [
+ "Drama",
+ "Romance"
+ ],
+ "id": "1jXd002bRJo14HLgFdD03FKcZZnZJ0-O5",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Before.Sunset.2004.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Nine years later, Jesse travels across Europe giving readings from a book he wrote about the night he spent in Vienna with Celine. After his reading in Paris, Celine finds him, and they spend part of the day together before Jesse has to again leave for a flight. They are both in relationships now, and Jesse has a son, but as their strong feelings for each other start to return, both confess a longing for more.",
+ "parents": [
+ "1z2RG14GgEG_RElaYnBMChtzSBCt-IZUK"
+ ],
+ "popularity": 43.495,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gycdE1ARByGQcK4fYR2mgpU6OO.jpg",
+ "releaseDate": "2004-06-16",
+ "title": "Before Sunset",
+ "type": "file",
+ "voteAverage": 7.82
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 665,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sU3gFo7Gn67zjtKXIvzJ4omcUbH.jpg",
+ "genres": [
+ "History",
+ "Drama",
+ "Adventure",
+ "Action"
+ ],
+ "id": "1qxvvvQeaEiYY-TZ1Bo6HYVlwDyJJX48S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Ben-Hur.1959.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "In 25 AD, Judah Ben-Hur, a Jew in ancient Judea, opposes the occupying Roman empire. Falsely accused by a Roman childhood friend-turned-overlord of trying to kill the Roman governor, he is put into slavery and his mother and sister are taken away as prisoners.",
+ "parents": [
+ "18w_tHQxK_8xa8VSYg95cZ_1xhu662JUv"
+ ],
+ "popularity": 61.061,
+ "posterPath": "https://image.tmdb.org/t/p/w342/m4WQ1dBIrEIHZNCoAjdpxwSKWyH.jpg",
+ "releaseDate": "1959-11-18",
+ "title": "Ben-Hur",
+ "type": "file",
+ "voteAverage": 7.89
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 5156,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kTUUiKGKrdRhJsCcYT3Ivtfuuzh.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1uqvv3j3SQJuT762tId87evmZmlcSrWzU",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "Bicycle.Thieves.1948.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Unemployed Antonio is elated when he finally finds work hanging posters around war-torn Rome. However on his first day, his bicycle\u2014essential to his work\u2014gets stolen. His job is doomed unless he can find the thief. With the help of his son, Antonio combs the city, becoming desperate for justice.",
+ "parents": [
+ "14wWwzxK67MAy6f8nPhdhAkhRd6MIjq1_"
+ ],
+ "popularity": 31.154,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rLpveWO1hTNYF9LUZJZgTdq5nyf.jpg",
+ "releaseDate": "1948-11-24",
+ "title": "Bicycle Thieves",
+ "type": "file",
+ "voteAverage": 8.197
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 78,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qr7dUqleMRd0VgollazbmyP9XjI.jpg",
+ "genres": [
+ "Science Fiction",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1HQQq9YldEkSEUhc7UzcAi4ZJCvQtNlMS",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Blade.Runner.1982.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In the smog-choked dystopian Los Angeles of 2019, blade runner Rick Deckard is called out of retirement to terminate a quartet of replicants who have escaped to Earth seeking their creator for a way to extend their short life spans.",
+ "parents": [
+ "1sGBQIt44cwy0kZdYI87_xVJZSI2z6Ia4"
+ ],
+ "popularity": 72.461,
+ "posterPath": "https://image.tmdb.org/t/p/w342/63N9uy8nd9j7Eog2axPQ8lbr3Wj.jpg",
+ "releaseDate": "1982-06-25",
+ "title": "Blade Runner",
+ "type": "file",
+ "voteAverage": 7.936
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 197,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8lBcqakI3F19NWkXdqE0M8W76b9.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1hZilEksEmDE99BnqH5r5chJxC_RGVvp_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Braveheart.1995.1080p.BrRip.x264.YIFY+HI.mp4",
+ "overview": "Enraged at the slaughter of Murron, his new bride and childhood love, Scottish warrior William Wallace slays a platoon of the local English lord's soldiers. This leads the village to revolt and, eventually, the entire country to rise up against English rule.",
+ "parents": [
+ "1ErMTOVi9HBaCZk0DXRDGy4U-gu8T-N5u"
+ ],
+ "popularity": 64.361,
+ "posterPath": "https://image.tmdb.org/t/p/w342/or1gBugydmjToAEq7OZY0owwFk.jpg",
+ "releaseDate": "1995-05-24",
+ "title": "Braveheart",
+ "type": "file",
+ "voteAverage": 7.939
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 517814,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sEW8q9al73rtow257dXAusD9yS7.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1kNnPXbLcbiTv4LT2a7v9kWUnk8L3mabZ",
+ "language": "ar",
+ "mimeType": "video/mp4",
+ "name": "Capernaum.2018.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "After running away from his negligent parents, committing a violent crime and being sentenced to five years in jail, a hardened, streetwise 12-year-old Lebanese boy sues his parents in protest of the life they have given him.",
+ "parents": [
+ "14JfRRF4JoLsma8cNNkMR13Mm1tRke3HL"
+ ],
+ "popularity": 23.744,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mFnfTVADj8yOxwzprYOmTPselk8.jpg",
+ "releaseDate": "2018-09-20",
+ "title": "Capernaum",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1p1GrDUfaDF_51N6r7Rt5Z4gPgYzjwjGI",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Casablanca.1942.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": null,
+ "parents": [
+ "1n3z2MBKdHFVWNM_EQ3BiauKuiz950P-x"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "1942-01-01",
+ "title": "Casablanca",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 524,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2W9HjAYWNug5RwyrEtrneXeL94Z.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "History"
+ ],
+ "id": "1ewa2U4lKtTE7GMjM0xPR2qXMsmtkRBf_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Casino.1995.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In early-1970s Las Vegas, Sam \"Ace\" Rothstein gets tapped by his bosses to head the Tangiers Casino. At first, he's a great success in the job, but over the years, problems with his loose-cannon enforcer Nicky Santoro, his ex-hustler wife Ginger, her con-artist ex Lester Diamond and a handful of corrupt politicians put Sam in ever-increasing danger.",
+ "parents": [
+ "10iO2Etc7hTZhCuSTJQuZ5FAeqod3qMWi"
+ ],
+ "popularity": 41.83,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4TS5O1IP42bY2BvgMxL156EENy.jpg",
+ "releaseDate": "1995-11-22",
+ "title": "Casino",
+ "type": "file",
+ "voteAverage": 8.013
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 640,
+ "backdropPath": "https://image.tmdb.org/t/p/original/Ag6qhzsJd3k1NKuNrG9RmhZDMh7.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1TKumS0qUKU3JqFEsvG_XMglSBETP4ihF",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Catch.Me.If.You.Can.2002.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "A true story about Frank Abagnale Jr. who, before his 19th birthday, successfully conned millions of dollars worth of checks as a Pan Am pilot, doctor, and legal prosecutor. An FBI agent makes it his mission to put him behind bars. But Frank not only eludes capture, he revels in the pursuit.",
+ "parents": [
+ "1faC4rBI-9X-IE_U0Na1SdcBpVK9Xf5rc"
+ ],
+ "popularity": 72.158,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ctjEj2xM32OvBXCq8zAdK3ZrsAj.jpg",
+ "releaseDate": "2002-12-16",
+ "title": "Catch Me If You Can",
+ "type": "file",
+ "voteAverage": 7.976
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 21334,
+ "backdropPath": "https://image.tmdb.org/t/p/original/9W250lyDDC3P9AgW5ZKGRj7R2Pv.jpg",
+ "genres": [
+ "Drama",
+ "Family"
+ ],
+ "id": "1WrmrSGVnxUPu8OG5w4t1eii5eCJV7jt8",
+ "language": "fa",
+ "mimeType": "video/mp4",
+ "name": "Children.Of.Heaven.1997.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Zohre's shoes are gone; her older brother Ali lost them. They are poor, there are no shoes for Zohre until they come up with an idea: they will share one pair of shoes. School awaits.",
+ "parents": [
+ "1MvGbbrtU17Q220lGzbgmOC43KWxBJqIp"
+ ],
+ "popularity": 20.373,
+ "posterPath": "https://image.tmdb.org/t/p/w342/h3PdFeciIlykn9kkONn9cwmr80h.jpg",
+ "releaseDate": "1997-08-01",
+ "title": "Children of Heaven",
+ "type": "file",
+ "voteAverage": 7.925
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 829,
+ "backdropPath": "https://image.tmdb.org/t/p/original/bsoAg22remHKL5O0xJH0m9DX6Pu.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Mystery",
+ "Thriller"
+ ],
+ "id": "1tw2tmNPYlTigqe1BYOYlnC4d-1TnhQzZ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Chinatown.1974.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Private eye Jake Gittes lives off of the murky moral climate of sunbaked, pre-World War II Southern California. Hired by a beautiful socialite to investigate her husband's extra-marital affair, Gittes is swept into a maelstrom of double dealings and deadly deceits, uncovering a web of personal and political scandals that come crashing together.",
+ "parents": [
+ "1R4OCXNzzzZxAJaWWMHBwcYKeBEbXoFaI"
+ ],
+ "popularity": 268.096,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mQJz8J4naOA7RmCtypTPjgXZIMY.jpg",
+ "releaseDate": "1974-06-20",
+ "title": "Chinatown",
+ "type": "file",
+ "voteAverage": 7.916
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11216,
+ "backdropPath": "https://image.tmdb.org/t/p/original/k3SBILYxHRgjORb5tbvA5dm2N4h.jpg",
+ "genres": [
+ "Drama",
+ "Romance"
+ ],
+ "id": "1muVt5BIZcvtCtOCAqLN_nlw1NN0FC971",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "Cinema.Paradiso.1988.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A filmmaker recalls his childhood, when he fell in love with the movies at his village's theater and formed a deep friendship with the theater's projectionist.",
+ "parents": [
+ "1-T4TmnH8O5dQs3VKcZ4t4V9nyp8a0N0E"
+ ],
+ "popularity": 35.685,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9JhfVOveaY00o8njQu2Xrp4YWud.jpg",
+ "releaseDate": "1988-11-17",
+ "title": "Cinema Paradiso",
+ "type": "file",
+ "voteAverage": 8.454
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 15,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ruF3Lmd4A8MHbnEBE6lxPMbsHGL.jpg",
+ "genres": [
+ "Mystery",
+ "Drama"
+ ],
+ "id": "1FmWs2NCQDz0rFU4XzC9B3foJ4u7ZWS9l",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Citizen.Kane.1941.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Newspaper magnate Charles Foster Kane is taken from his mother as a boy and made the ward of a rich industrialist. As a result, every well-meaning, tyrannical or self-destructive move he makes for the rest of his life appears in some way to be a reaction to that deeply wounding event.",
+ "parents": [
+ "1vCRONx9iv0qFW_JiAEMJUsZDAyU7EEAc"
+ ],
+ "popularity": 315.922,
+ "posterPath": "https://image.tmdb.org/t/p/w342/sav0jxhqiH0bPr2vZFU0Kjt2nZL.jpg",
+ "releaseDate": "1941-04-17",
+ "title": "Citizen Kane",
+ "type": "file",
+ "voteAverage": 8.009
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 901,
+ "backdropPath": "https://image.tmdb.org/t/p/original/n0Cju2Eu3VyrUFl32thblHFWznA.jpg",
+ "genres": [
+ "Comedy",
+ "Romance",
+ "Drama"
+ ],
+ "id": "1IqNgMbLdjx_zULJxkjgv3Z1OMHVYlsuI",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "City.Lights.1931.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A tramp falls in love with a beautiful blind flower girl. His on-and-off friendship with a wealthy man allows him to be the girl's benefactor and suitor.",
+ "parents": [
+ "13T0ewyhg_zDx5DE9ksvFYQ5Cu0P__Wor"
+ ],
+ "popularity": 30.041,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bXNvzjULc9jrOVhGfjcc64uKZmZ.jpg",
+ "releaseDate": "1931-02-01",
+ "title": "City Lights",
+ "type": "file",
+ "voteAverage": 8.283
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 598,
+ "backdropPath": "https://image.tmdb.org/t/p/original/uvitbjFU4JqvMwIkMWHp69bmUzG.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1yaDHlXuXi33ce1RtbKvfrfTnzlt5vbQa",
+ "language": "pt",
+ "mimeType": "video/mp4",
+ "name": "City.Of.God.2002.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In the slums of Rio, two kids' paths diverge as one struggles to become a photographer and the other a kingpin.",
+ "parents": [
+ "1IrsmoEYCrnLaS3AtMEIVX-DEZoxW55ml"
+ ],
+ "popularity": 101.209,
+ "posterPath": "https://image.tmdb.org/t/p/w342/k7eYdWvhYQyRQoU2TB2A2Xu2TfD.jpg",
+ "releaseDate": "2002-08-30",
+ "title": "City of God",
+ "type": "file",
+ "voteAverage": 8.429
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 354912,
+ "backdropPath": "https://image.tmdb.org/t/p/original/askg3SMvhqEl4OL52YuvdtY40Yb.jpg",
+ "genres": [
+ "Family",
+ "Animation",
+ "Music",
+ "Adventure"
+ ],
+ "id": "1R_fyL9GDWXf45sXfpyMse__ZOiotFFER",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Coco.2017.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Despite his family\u2019s baffling generations-old ban on music, Miguel dreams of becoming an accomplished musician like his idol, Ernesto de la Cruz. Desperate to prove his talent, Miguel finds himself in the stunning and colorful Land of the Dead following a mysterious chain of events. Along the way, he meets charming trickster Hector, and together, they set off on an extraordinary journey to unlock the real story behind Miguel's family history.",
+ "parents": [
+ "1dpv-zaNjNX99BaUqv-0FyLlYwMMRMip0"
+ ],
+ "popularity": 143.72,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gGEsBPAijhVUFoiNpgZXqRVWJt2.jpg",
+ "releaseDate": "2017-10-27",
+ "title": "Coco",
+ "type": "file",
+ "voteAverage": 8.213
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 25237,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xGzcusHWxLPvRYSBMeOJOVkdJbj.jpg",
+ "genres": [
+ "Drama",
+ "War"
+ ],
+ "id": "1j1Fqc9c0BVcoIGmm21ybxIxkaj3GNLx3",
+ "language": "ru",
+ "mimeType": "video/mp4",
+ "name": "Come.And.See.1985.RUSSIAN.REPACK.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "The invasion of a village in Byelorussia by German forces sends young Florya into the forest to join the weary Resistance fighters, against his family's wishes. There he meets a girl, Glasha, who accompanies him back to his village. On returning home, Florya finds his family and fellow peasants massacred. His continued survival amidst the brutal debris of war becomes increasingly nightmarish, a battle between despair and hope.",
+ "parents": [
+ "1GcdBHdsDvmeA0fgapzIIVdvFvGzmQPh1"
+ ],
+ "popularity": 25.901,
+ "posterPath": "https://image.tmdb.org/t/p/w342/qNbMsKVzigERgJUbwf8pKyZogpb.jpg",
+ "releaseDate": "1985-10-17",
+ "title": "Come and See",
+ "type": "file",
+ "voteAverage": 8.258
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 903,
+ "backdropPath": "https://image.tmdb.org/t/p/original/yW9mPUhrsIzKvogNJKQKuWO8fJO.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "Crime"
+ ],
+ "id": "1cmHjaLenwGNiPEx7FnZNznj5ZfPy5uQU",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Cool.Hand.Luke.1967.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "When petty criminal Luke Jackson is sentenced to two years in a Florida prison farm, he doesn't play by the rules of either the sadistic warden or the yard's resident heavy, Dragline, who ends up admiring the new guy's unbreakable will. Luke's bravado, even in the face of repeated stints in the prison's dreaded solitary confinement cell, \"the box,\" make him a rebel hero to his fellow convicts and a thorn in the side of the prison officers.",
+ "parents": [
+ "1WVyzv6sbiCjJ5cyEb_3XDuUjWynLepkx"
+ ],
+ "popularity": 27.086,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4ykzTiHKLamh3eZJ8orVICtU2Jp.jpg",
+ "releaseDate": "1967-11-01",
+ "title": "Cool Hand Luke",
+ "type": "file",
+ "voteAverage": 7.728
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1aVhV8Y9QsorOq3ty5keFIfwlLPeMKmIv",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Dances.with.Wolves.DC.1990.1080p.x264.BrRip.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1w-BOxFtZIJeozNLGSCcDwrECzhIYDEGZ"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "1990-01-01",
+ "title": "Dances with Wolves DC",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 360814,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5qjbu7po6eqLNd4kUPAyIpFRwQK.jpg",
+ "genres": [
+ "Drama",
+ "Family",
+ "Comedy",
+ "Action"
+ ],
+ "id": "1KTs5885kQaf6tpKIxej-W2NEiiN9Oa2v",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Dangal.2016.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Dangal is an extraordinary true story based on the life of Mahavir Singh and his two daughters, Geeta and Babita Phogat. The film traces the inspirational journey of a father who trains his daughters to become world class wrestlers.",
+ "parents": [
+ "1q29ULnCI5u_7l--LxnKYLlY4h3jgjmpH"
+ ],
+ "popularity": 19.391,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cJRPOLEexI7qp2DKtFfCh7YaaUG.jpg",
+ "releaseDate": "2016-12-21",
+ "title": "Dangal",
+ "type": "file",
+ "voteAverage": 7.913
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 387,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tRI6Csmw4rKzMYDrfUx5xtyBSVE.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1dZh6LIwWsTF1Df8QgasQiFhUbPekedER",
+ "language": "de",
+ "mimeType": "video/mp4",
+ "name": "Das.Boot.1981.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "A German submarine hunts allied ships during the Second World War, but it soon becomes the hunted. The crew tries to survive below the surface, while stretching both the boat and themselves to their limits.",
+ "parents": [
+ "10ZF8jmfMBblBcQzupp8bBUsbQ5D8CKuq"
+ ],
+ "popularity": 48.834,
+ "posterPath": "https://image.tmdb.org/t/p/w342/spE9nbdqhoKoTaCNp4H9Tj6Xcrm.jpg",
+ "releaseDate": "1981-09-17",
+ "title": "Das Boot",
+ "type": "file",
+ "voteAverage": 8.088
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 207,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tJRToZBfb52NhF6SMGAe0bWQc6z.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1yhb0RWBH_ndGXndkmbO_c3hHoK5AoXw9",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Dead.Poets.Society.1989.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "At an elite, old-fashioned boarding school in New England, a passionate English teacher inspires his students to rebel against convention and seize the potential of every day, courting the disdain of the stern headmaster.",
+ "parents": [
+ "1EyX-5h87U1T8A5SHsLLKTQrH22F4FEh0"
+ ],
+ "popularity": 52.445,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hmGAF5NDoYB6S39UONevjHCESOI.jpg",
+ "releaseDate": "1989-06-02",
+ "title": "Dead Poets Society",
+ "type": "file",
+ "voteAverage": 8.315
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 521,
+ "backdropPath": "https://image.tmdb.org/t/p/original/uvd1KXopHKelymR2JbSumRupRJo.jpg",
+ "genres": [
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1kRiT65hY79Qc0w93vlldl-Wgur41Bzf_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Dial.M.For.Murder.1954.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "An ex-tennis pro carries out a plot to have his wealthy wife murdered after discovering she is having an affair, and assumes she will soon leave him for the other man anyway.",
+ "parents": [
+ "1aAZmtoaMMSuj3YDLnSetRzp6M9DGwqIy"
+ ],
+ "popularity": 19.273,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2gDCAgl2iBQNuJuk6p2xtuS1ewg.jpg",
+ "releaseDate": "1954-05-29",
+ "title": "Dial M for Murder",
+ "type": "file",
+ "voteAverage": 8.021
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 562,
+ "backdropPath": "https://image.tmdb.org/t/p/original/rahJyvdMruvqUmSLWRQKYS57mx8.jpg",
+ "genres": [
+ "Action",
+ "Thriller"
+ ],
+ "id": "1bqwek_E2XHtYtOiXBY9zVrRzFBDMcUiC",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Die.Hard.1988.1080p.BrRip.x264.bitloks.YIFY.mp4",
+ "overview": "NYPD cop John McClane's plan to reconcile with his estranged wife is thrown for a serious loop when, minutes after he arrives at her office, the entire building is overtaken by a group of terrorists. With little help from the LAPD, wisecracking McClane sets out to single-handedly rescue the hostages and bring the bad guys down.",
+ "parents": [
+ "1mjWiZnnxeoGJxPrDv-aubYmTd7D-lfdg"
+ ],
+ "popularity": 63.247,
+ "posterPath": "https://image.tmdb.org/t/p/w342/yFihWxQcmqcaBR31QM6Y8gT6aYV.jpg",
+ "releaseDate": "1988-07-15",
+ "title": "Die Hard",
+ "type": "file",
+ "voteAverage": 7.788
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 68718,
+ "backdropPath": "https://image.tmdb.org/t/p/original/w6Fs4bIje1naeILo9KwAc1Y6bvP.jpg",
+ "genres": [
+ "Drama",
+ "Western"
+ ],
+ "id": "165SYXWha75o12eWmvP97wN61fti9edVp",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Django.Unchained.2012.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "With the help of a German bounty hunter, a freed slave sets out to rescue his wife from a brutal Mississippi plantation owner.",
+ "parents": [
+ "1fQ-KMq9w9U9i1ZtK88SrGUxei3khX5KP"
+ ],
+ "popularity": 136.047,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7oWY8VDWW7thTzWh3OKYRkWUlD5.jpg",
+ "releaseDate": "2012-12-25",
+ "title": "Django Unchained",
+ "type": "file",
+ "voteAverage": 8.18
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 996,
+ "backdropPath": "https://image.tmdb.org/t/p/original/u546kDNwrZ1ii6q8NqqQgHwRvoW.jpg",
+ "genres": [
+ "Crime",
+ "Thriller"
+ ],
+ "id": "19mbrAjAkWO5rvQcncBnT5EJCkgZlNm5m",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Double.Indemnity.1944.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A rich woman and a calculating insurance agent plot to kill her unsuspecting husband after he signs a double indemnity policy. Against a backdrop of distinctly Californian settings, the partners in crime plan the perfect murder to collect the insurance, which pays double if the death is accidental.",
+ "parents": [
+ "1fJJJ9Sis2MoYG1us3ahtiFM1mBnaE84G"
+ ],
+ "popularity": 52.146,
+ "posterPath": "https://image.tmdb.org/t/p/w342/n8Mfx7JNbj6lo24laFL1sZYEKHs.jpg",
+ "releaseDate": "1944-07-06",
+ "title": "Double Indemnity",
+ "type": "file",
+ "voteAverage": 8.122
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 613,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xgAEfHByamMdRCA31oERQrsiutF.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1K8CxQQGbNXMGHnlUF7JgwLVfIy7UHorf",
+ "language": "de",
+ "mimeType": "video/mp4",
+ "name": "Downfall.2004.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In April of 1945, Germany stands at the brink of defeat with the Russian Army closing in from the east and the Allied Expeditionary Force attacking from the west. In Berlin, capital of the Third Reich, Adolf Hitler proclaims that Germany will still achieve victory and orders his generals and advisers to fight to the last man. When the end finally does come, and Hitler lies dead by his own hand, what is left of his military must find a way to end the killing that is the Battle of Berlin, and lay down their arms in surrender.",
+ "parents": [
+ "1TxrvZHPmYptLHsCtJJW4hxjOtfqtNejW"
+ ],
+ "popularity": 33.362,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cP1ElGjBhbZAAqmueXjHDKlSwiP.jpg",
+ "releaseDate": "2004-09-16",
+ "title": "Downfall",
+ "type": "file",
+ "voteAverage": 7.861
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 935,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sTp8K0SfcC2RQef1Tu160z3niHO.jpg",
+ "genres": [
+ "Comedy",
+ "War"
+ ],
+ "id": "1lkz-Z2OJb61bYbfxLqNb-vdIa5nEXLMA",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Dr..Strangelove.Or.How.I.Learned.To.Stop.Worrying.And.Love.The.Bomb.1964.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "After the insane General Jack D. Ripper initiates a nuclear strike on the Soviet Union, a war room full of politicians, generals and a Russian diplomat all frantically try to stop the nuclear strike.",
+ "parents": [
+ "16KN73eV3mOoasZ687al89ccXfCwDygi7"
+ ],
+ "popularity": 40.642,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7SixLzxcqezkZEYU8pcHZgbkmjp.jpg",
+ "releaseDate": "1964-01-29",
+ "title": "Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb",
+ "type": "file",
+ "voteAverage": 8.122
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 352173,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8xnjsw3Oh3zrT6Pu1WVp8dQYatT.jpg",
+ "genres": [
+ "Crime",
+ "Mystery",
+ "Thriller"
+ ],
+ "id": "1fvd2CYP5NG1Vx_dCeNo0eDXVghingQQ7",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Drishyam.2015.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A simple, street-smart man tries to protect his family from a cop looking for her missing son.",
+ "parents": [
+ "1aaBRP1LeRt4volb9K3O9N8Qc-h4Ji6N4"
+ ],
+ "popularity": 12.2,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gIClWRv5OSe8rl5Koi0AeUcCZ9Z.jpg",
+ "releaseDate": "2015-07-30",
+ "title": "Drishyam",
+ "type": "file",
+ "voteAverage": 7.682
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 693134,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xOMo8BRK7PfcJv9JCnx7s5hj0PX.jpg",
+ "genres": [
+ "Science Fiction",
+ "Adventure"
+ ],
+ "id": "16p2_OukS9Ff8xIlSvx-ILzl_qR9AYEJu",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Dune.Part.Two.2024.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Follow the mythic journey of Paul Atreides as he unites with Chani and the Fremen while on a path of revenge against the conspirators who destroyed his family. Facing a choice between the love of his life and the fate of the known universe, Paul endeavors to prevent a terrible future only he can foresee.",
+ "parents": [
+ "1ZHRXCOJBVbGkcLGza64aw9c7aWaDGPAe"
+ ],
+ "popularity": 787.686,
+ "posterPath": "https://image.tmdb.org/t/p/w342/czembW0Rk1Ke7lCJGahbOhdCuhV.jpg",
+ "releaseDate": "2024-02-27",
+ "title": "Dune: Part Two",
+ "type": "file",
+ "voteAverage": 8.169
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 38,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jz9Kep0xWjiA6QDHSsd43ASxNfj.jpg",
+ "genres": [
+ "Science Fiction",
+ "Drama",
+ "Romance"
+ ],
+ "id": "11e0wEIbv5PqxIv9XWFa8lyapSFvFE5SX",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Eternal.Sunshine.of.the.Spotless.Mind.2004.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Joel Barish, heartbroken that his girlfriend underwent a procedure to erase him from her memory, decides to do the same. However, as he watches his memories of her fade away, he realises that he still loves her, and may be too late to correct his mistake.",
+ "parents": [
+ "1vpBazHWYnYozEsOdqpkaygqw1igTbyHK"
+ ],
+ "popularity": 73.066,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5MwkWH9tYHv3mV9OdYTMR5qreIz.jpg",
+ "releaseDate": "2004-03-19",
+ "title": "Eternal Sunshine of the Spotless Mind",
+ "type": "file",
+ "voteAverage": 8.097
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 275,
+ "backdropPath": "https://image.tmdb.org/t/p/original/747dgDfL5d8esobk7h4odaOFhUq.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "11OCtAYo-BnuP0MqBJl7t0f74FID2f18P",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Fargo.1996.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Jerry, a small-town Minnesota car salesman is bursting at the seams with debt... but he's got a plan. He's going to hire two thugs to kidnap his wife in a scheme to collect a hefty ransom from his wealthy father-in-law. It's going to be a snap and nobody's going to get hurt... until people start dying. Enter Police Chief Marge, a coffee-drinking, parka-wearing - and extremely pregnant - investigator who'll stop at nothing to get her man. And if you think her small-time investigative skills will give the crooks a run for their ransom... you betcha!",
+ "parents": [
+ "1exVS7E_OVjdVz6ACUev9ZSnom0BA0fRw"
+ ],
+ "popularity": 195.16,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rt7cpEr1uP6RTZykBFhBTcRaKvG.jpg",
+ "releaseDate": "1996-03-08",
+ "title": "Fargo",
+ "type": "file",
+ "voteAverage": 7.862
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 550,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hZkgoQYus5vegHoetLkCJzb17zJ.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1CoHzbIQ1yYeIsmJfxDql8yTThPTGLVyS",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Fight.Club.1999.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking new form of therapy. Their concept catches on, with underground \"fight clubs\" forming in every town, until an eccentric gets in the way and ignites an out-of-control spiral toward oblivion.",
+ "parents": [
+ "1N3zITsS4TIFdyDacz4V4MamsKAVx4NYh"
+ ],
+ "popularity": 216.13,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pB8BM7pdSp6B6Ih7QZ4DrQ3PmJK.jpg",
+ "releaseDate": "1999-10-15",
+ "title": "Fight Club",
+ "type": "file",
+ "voteAverage": 8.4
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 12,
+ "backdropPath": "https://image.tmdb.org/t/p/original/eCynaAOgYYiw5yN5lBwz3IxqvaW.jpg",
+ "genres": [
+ "Animation",
+ "Family"
+ ],
+ "id": "1G4bH1TfTb3diFVhvrvLKLqYd4Us6ddFi",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Finding.Nemo.2003.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Nemo, an adventurous young clownfish, is unexpectedly taken from his Great Barrier Reef home to a dentist's office aquarium. It's up to his worrisome father Marlin and a friendly but forgetful fish Dory to bring Nemo home -- meeting vegetarian sharks, surfer dude turtles, hypnotic jellyfish, hungry seagulls, and more along the way.",
+ "parents": [
+ "1LCAzRvGWNAmQIFs38CaR9IwInkshu6gh"
+ ],
+ "popularity": 117.245,
+ "posterPath": "https://image.tmdb.org/t/p/w342/eHuGQ10FUzK1mdOY69wF5pGgEf5.jpg",
+ "releaseDate": "2003-05-30",
+ "title": "Finding Nemo",
+ "type": "file",
+ "voteAverage": 7.82
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 938,
+ "backdropPath": "https://image.tmdb.org/t/p/original/x0bQvdpr88xVhMrVM93tEIKSM2q.jpg",
+ "genres": [
+ "Western"
+ ],
+ "id": "1luVvhsfcum935HS_wcLRYHDHqj2zpTa-",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "For.A.Few.Dollars.More.1965.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Two bounty hunters are in pursuit of \"El Indio,\" one of the most wanted fugitives in the western territories, and his gang.",
+ "parents": [
+ "1SPI_bfDZEtKb2CIlaPU64Cuc9F5uUQsc"
+ ],
+ "popularity": 32.44,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ooqASvA7qxlTVKL3KwOzBwy57Dh.jpg",
+ "releaseDate": "1965-12-18",
+ "title": "For a Few Dollars More",
+ "type": "file",
+ "voteAverage": 8.021
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 359724,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2vq5GTJOahE03mNYZGxIynlHcWr.jpg",
+ "genres": [
+ "Drama",
+ "Action",
+ "History"
+ ],
+ "id": "1mF_lHvqv9nVWAzLUiu6B4PFPhTZaLwtf",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Ford.V.Ferrari.2019.1080p.BluRay.x264.AAC5.1-[YTS.LT].mp4",
+ "overview": "American car designer Carroll Shelby and the British-born driver Ken Miles work together to battle corporate interference, the laws of physics, and their own personal demons to build a revolutionary race car for Ford Motor Company and take on the dominating race cars of Enzo Ferrari at the 24 Hours of Le Mans in France in 1966.",
+ "parents": [
+ "10ODu36CZ-wwMp7fPwI6_5AlTWj5dwXMa"
+ ],
+ "popularity": 99.12,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dR1Ju50iudrOh3YgfwkAU1g2HZe.jpg",
+ "releaseDate": "2019-11-13",
+ "title": "Ford v Ferrari",
+ "type": "file",
+ "voteAverage": 8.005
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 13,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qdIMHd4sEfJSckfVJfKQvisL02a.jpg",
+ "genres": [
+ "Comedy",
+ "Drama",
+ "Romance"
+ ],
+ "id": "1oq4gIfnBLf8YLGhbjNWQryVN_obgvO65",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Forrest.Gump.1994.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "A man with a low IQ has accomplished great things in his life and been present during significant historic events\u2014in each case, far exceeding what anyone imagined he could do. But despite all he has achieved, his one true love eludes him.",
+ "parents": [
+ "1Q27zMgPz8P4JTJxy2JuQMBcBrOL_S_yM"
+ ],
+ "popularity": 158.506,
+ "posterPath": "https://image.tmdb.org/t/p/w342/arw2vcBveWOVZr6pxd9XTd1TdQa.jpg",
+ "releaseDate": "1994-06-23",
+ "title": "Forrest Gump",
+ "type": "file",
+ "voteAverage": 8.475
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 600,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mKEmuB7diOa7Ef0tJSGQ3fYJnNe.jpg",
+ "genres": [
+ "Drama",
+ "War"
+ ],
+ "id": "1BNrbBzxYNBifWNlNpiChJX1qcHzkstt0",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Full.Metal.Jacket.1987.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A pragmatic U.S. Marine observes the dehumanizing effects the U.S.-Vietnam War has on his fellow recruits from their brutal boot camp training to the bloody street fighting in Hue.",
+ "parents": [
+ "1XgRTNIs85yUJUpzNYXy-UR8-xCWQWo2q"
+ ],
+ "popularity": 39.728,
+ "posterPath": "https://image.tmdb.org/t/p/w342/kMKyx1k8hWWscYFnPbnxxN4Eqo4.jpg",
+ "releaseDate": "1987-06-26",
+ "title": "Full Metal Jacket",
+ "type": "file",
+ "voteAverage": 8.133
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 117691,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zPsubje2FyqfIm6Ox9kSNqFYV61.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1tB6JTDI55bdDJTfg1iGyf-LLjVH-t2ZC",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Gangs.Of.Wasseypur.2012.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In 1970s India, Sardar Khan vows to take revenge on the man who killed his father decades earlier.",
+ "parents": [
+ "1WoOwm_g2z4zk1VIHUS3_8LnGG3FPVIXc"
+ ],
+ "popularity": 17.818,
+ "posterPath": "https://image.tmdb.org/t/p/w342/yd7ltAY4j2tRrLAFpVVqh9EhahC.jpg",
+ "releaseDate": "2012-06-22",
+ "title": "Gangs of Wasseypur - Part 1",
+ "type": "file",
+ "voteAverage": 7.117
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 98,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3ZVEtQxVPpEp5LNpAULDcxadTU3.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "Adventure"
+ ],
+ "id": "1r41SNs-o9R3dh_Wo1lV_kL6LU4jLGT27",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Gladiator.EXTENDED.2000.1080.BrRip.264.YIFY.mp4",
+ "overview": "In the year 180, the death of emperor Marcus Aurelius throws the Roman Empire into chaos. Maximus is one of the Roman army's most capable and trusted generals and a key advisor to the emperor. As Marcus' devious son Commodus ascends to the throne, Maximus is set to be executed. He escapes, but is captured by slave traders. Renamed Spaniard and forced to become a gladiator, Maximus must battle to the death with other men for the amusement of paying audiences.",
+ "parents": [
+ "1QD-q9LcN_VOQbcCpiUNEtEABZ98HwP2y"
+ ],
+ "popularity": 60.081,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ty8TGRuvJLPUmAR1H1nRIsgwvim.jpg",
+ "releaseDate": "2000-05-04",
+ "title": "Gladiator",
+ "type": "file",
+ "voteAverage": 8.216
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 210577,
+ "backdropPath": "https://image.tmdb.org/t/p/original/h2JaQWLKhapm7AuSViJwGiv8ngC.jpg",
+ "genres": [
+ "Mystery",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1TNNESHDUlZ8JxZ9fwsIUnqz59hXkrgTt",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Gone.Girl.2014.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "With his wife's disappearance having become the focus of an intense media circus, a man sees the spotlight turned on him when it's suspected that he may not be innocent.",
+ "parents": [
+ "1Ih-d91kyOAdbH_cZELQf86AK0bXPlUD2"
+ ],
+ "popularity": 102.78,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lv5xShBIDPe7m4ufdlV0IAc7Avk.jpg",
+ "releaseDate": "2014-10-01",
+ "title": "Gone Girl",
+ "type": "file",
+ "voteAverage": 7.892
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 770,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ft8WRF2xqEwwGWa59naDUybKTAx.jpg",
+ "genres": [
+ "Drama",
+ "War",
+ "Romance"
+ ],
+ "id": "1uYS6ICgMeDYi0hjTB9NXxqJ8EWmhiOhy",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Gone.With.The.Wind.1939.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The spoiled daughter of a Georgia plantation owner conducts a tumultuous romance with a cynical profiteer during the American Civil War and Reconstruction Era.",
+ "parents": [
+ "1Z8D-4AjkCJR7czrQG1YPqBWvbslUOOoT"
+ ],
+ "popularity": 39.837,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lNz2Ow0wGCAvzckW7EOjE03KcYv.jpg",
+ "releaseDate": "1939-12-15",
+ "title": "Gone with the Wind",
+ "type": "file",
+ "voteAverage": 7.954
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 489,
+ "backdropPath": "https://image.tmdb.org/t/p/original/bpV8wn48s82au37QyUJ51S7X2Vf.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1fBVQvMCvDtfX6AMKlpgoi4s1QoGfeWfI",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Good.Will.Hunting.1997.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "When professors discover that an aimless janitor is also a math genius, a therapist helps the young man confront the demons that are holding him back.",
+ "parents": [
+ "1yiLK9-8rfH7Z2Es7MQ7apQ9TF2Gvnsbd"
+ ],
+ "popularity": 240.718,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bABCBKYBK7A5G1x0FzoeoNfuj2.jpg",
+ "releaseDate": "1997-12-05",
+ "title": "Good Will Hunting",
+ "type": "file",
+ "voteAverage": 8.154
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 769,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sw7mordbZxgITU877yTpZCud90M.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1mHLFaV7V5JIzWt_Ud1uvPLYQzVFRCGpC",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Goodfellas.1990.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "The true story of Henry Hill, a half-Irish, half-Sicilian Brooklyn kid who is adopted by neighbourhood gangsters at an early age and climbs the ranks of a Mafia family under the guidance of Jimmy Conway.",
+ "parents": [
+ "18SHKi2kcG_jqYq1iYU4zMdgHlahOXNCj"
+ ],
+ "popularity": 200.535,
+ "posterPath": "https://image.tmdb.org/t/p/w342/aKuFiU82s5ISJpGZp7YkIr3kCUd.jpg",
+ "releaseDate": "1990-09-12",
+ "title": "GoodFellas",
+ "type": "file",
+ "voteAverage": 8.464
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 13223,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wmsePXV2z1b6ecXuKKrFbG0Q92P.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1bNlIVq0439EPstEbTd39uhEva_PwtIR7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Gran.Torino.2008.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Disgruntled Korean War veteran Walt Kowalski sets out to reform his neighbor, Thao Lor, a Hmong teenager who tried to steal Kowalski's prized possession: a 1972 Gran Torino.",
+ "parents": [
+ "14k_LCpw9IyXt1mkpp7TPXjY1owe9k2kB"
+ ],
+ "popularity": 38.941,
+ "posterPath": "https://image.tmdb.org/t/p/w342/zUybYvxWdAJy5hhYovsXtHSWI1l.jpg",
+ "releaseDate": "2008-12-12",
+ "title": "Gran Torino",
+ "type": "file",
+ "voteAverage": 7.993
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 12477,
+ "backdropPath": "https://image.tmdb.org/t/p/original/dlC0ed9Ugh3FzydnkBtV5lRXUu4.jpg",
+ "genres": [
+ "Animation",
+ "Drama",
+ "War"
+ ],
+ "id": "15G9VLn8z__JcuJ37C1Rh4b6Bw2wQ8ebS",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Grave.Of.The.Fireflies.1988.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In the final months of World War II, 14-year-old Seita and his sister Setsuko are orphaned when their mother is killed during an air raid in Kobe, Japan. After a falling out with their aunt, they move into an abandoned bomb shelter. With no surviving relatives and their emergency rations depleted, Seita and Setsuko struggle to survive.",
+ "parents": [
+ "1cMxuy3NjT7qZa4Zh2ZdObFc5uU5LwMjf"
+ ],
+ "popularity": 0.047,
+ "posterPath": "https://image.tmdb.org/t/p/w342/k9tv1rXZbOhH7eiCk378x61kNQ1.jpg",
+ "releaseDate": "1988-04-16",
+ "title": "Grave of the Fireflies",
+ "type": "file",
+ "voteAverage": 8.5
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 490132,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2Xe9lISpwXKhvKiHttbFfVRERQX.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1l_F8a09pdoFBS2adjS5beM2Uc7hECthN",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Green.Book.2018.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Tony Lip, a bouncer in 1962, is hired to drive pianist Don Shirley on a tour through the Deep South in the days when African Americans, forced to find alternate accommodations and services due to segregation laws below the Mason-Dixon Line, relied on a guide called The Negro Motorist Green Book.",
+ "parents": [
+ "1xgk7GicqonoRv8atCyHDH8hFuCG5kjuw"
+ ],
+ "popularity": 348.859,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7BsvSuDQuoqhWmU2fL7W2GOcZHU.jpg",
+ "releaseDate": "2018-11-16",
+ "title": "Green Book",
+ "type": "file",
+ "voteAverage": 8.243
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 137,
+ "backdropPath": "https://image.tmdb.org/t/p/original/4zaTJfrbQCdhUirzfcWWVH97h25.jpg",
+ "genres": [
+ "Romance",
+ "Fantasy",
+ "Drama",
+ "Comedy"
+ ],
+ "id": "1a2rxusvkdK_maVOx98IQC9xukQ9AxkSm",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Groundhog.Day.1993.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A narcissistic TV weatherman, along with his attractive-but-distant producer, and his mawkish cameraman, is sent to report on Groundhog Day in the small town of Punxsutawney, where he finds himself repeating the same day over and over.",
+ "parents": [
+ "1IVPhvZv2SDZSfHFrG2CPszpkwICGj3mZ"
+ ],
+ "popularity": 42.072,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gCgt1WARPZaXnq523ySQEUKinCs.jpg",
+ "releaseDate": "1993-02-11",
+ "title": "Groundhog Day",
+ "type": "file",
+ "voteAverage": 7.609
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 28178,
+ "backdropPath": "https://image.tmdb.org/t/p/original/y6JA85N8DvoonwqDGWlgkr1jnU.jpg",
+ "genres": [
+ "Drama",
+ "Family"
+ ],
+ "id": "1MUiJ0OvkLxqJwr7qPcsojG8PIswPjp-M",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Hachi.A.Dogs.Tale.2009.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A drama based on the true story of a college professor's bond with the abandoned dog he takes into his home.",
+ "parents": [
+ "1X_89yALMwgmb0YPeEa3F2JCG3kPDmkES"
+ ],
+ "popularity": 86.272,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lsy3aEsEfYIHdLRk4dontZ4s85h.jpg",
+ "releaseDate": "2009-06-08",
+ "title": "Hachi: A Dog's Tale",
+ "type": "file",
+ "voteAverage": 8.005
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 324786,
+ "backdropPath": "https://image.tmdb.org/t/p/original/yQIBS8B9l2qXoPoPtxSXvH7CfoT.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1NxyV_Wh175qWj-QzemhcQnpbSRjiKQpm",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Hacksaw.Ridge.2016.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "WWII American Army Medic Desmond T. Doss, who served during the Battle of Okinawa, refuses to kill people and becomes the first Conscientious Objector in American history to receive the Congressional Medal of Honor.",
+ "parents": [
+ "1vw1TP46JKx3-BI55pOaMaPFNOStquQLl"
+ ],
+ "popularity": 170.798,
+ "posterPath": "https://image.tmdb.org/t/p/w342/wuz8TjCIWR2EVVMuEfBnQ1vuGS3.jpg",
+ "releaseDate": "2016-10-07",
+ "title": "Hacksaw Ridge",
+ "type": "file",
+ "voteAverage": 8.194
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 556574,
+ "backdropPath": "https://image.tmdb.org/t/p/original/uWVkEo9PWHu9algZsiLPi6sRU64.jpg",
+ "genres": [
+ "History",
+ "Drama"
+ ],
+ "id": "1qaNRnESxIda-VwVqkavpKuHlBVz0gQ4v",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Hamilton.2020.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Presenting the tale of American founding father Alexander Hamilton, this filmed version of the original Broadway smash hit is the story of America then, told by America now.",
+ "parents": [
+ "1dwhIYQiKdslSHFmnSOcSDfcy3N4CSDYl"
+ ],
+ "popularity": 25.591,
+ "posterPath": "https://image.tmdb.org/t/p/w342/h1B7tW0t399VDjAcWJh8m87469b.jpg",
+ "releaseDate": "2020-07-03",
+ "title": "Hamilton",
+ "type": "file",
+ "voteAverage": 8.194
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 14537,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nC3IjYhUgZWgfKfFX0ygMigFwgc.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "History"
+ ],
+ "id": "1WLiulUku6dOi-Cs20uhroD07HfmQTDZc",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Harakiri.1962.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "Down-on-his-luck veteran Tsugumo Hanshir\u014d enters the courtyard of the prosperous House of Iyi. Unemployed, and with no family, he hopes to find a place to commit seppuku\u2014and a worthy second to deliver the coup de gr\u00e2ce in his suicide ritual. The senior counselor for the Iyi clan questions the ronin\u2019s resolve and integrity, suspecting Hanshir\u014d of seeking charity rather than an honorable end. What follows is a pair of interlocking stories which lay bare the difference between honor and respect, and promises to examine the legendary foundations of the Samurai code.",
+ "parents": [
+ "1RM1P3ujN2Z_9ns4zqkMRAiOcR_YflSMP"
+ ],
+ "popularity": 20.225,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5konZnIbcAxZjP616Cz5o9bKEfW.jpg",
+ "releaseDate": "1962-09-15",
+ "title": "Harakiri",
+ "type": "file",
+ "voteAverage": 8.387
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 12445,
+ "backdropPath": "https://image.tmdb.org/t/p/original/n5A7brJCjejceZmHyujwUTVgQNC.jpg",
+ "genres": [
+ "Fantasy",
+ "Adventure"
+ ],
+ "id": "1q9AJ8O25ZafoelNlt-w5kYuU6rIzXMGy",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Harry.Potter.And.The.Deathly.Hallows.Part.2.2011.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Harry, Ron and Hermione continue their quest to vanquish the evil Voldemort once and for all. Just as things begin to look hopeless for the young wizards, Harry discovers a trio of magical objects that endow him with powers to rival Voldemort's formidable skills.",
+ "parents": [
+ "1_j7bZN352lg_ThdMEouVnveaj4mG-wkJ"
+ ],
+ "popularity": 103.063,
+ "posterPath": "https://image.tmdb.org/t/p/w342/c54HpQmuwXjHq2C9wmoACjxoom3.jpg",
+ "releaseDate": "2011-07-12",
+ "title": "Harry Potter and the Deathly Hallows: Part 2",
+ "type": "file",
+ "voteAverage": 8.098
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 949,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xKsnZDERG1dk95wuZ5q9iks3OL3.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Drama"
+ ],
+ "id": "1SFCjDfwBCY5DLKAXx-QmIyPw5q7DNjuM",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Heat.1995.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "Obsessive master thief Neil McCauley leads a top-notch crew on various daring heists throughout Los Angeles while determined detective Vincent Hanna pursues him without rest. Each man recognizes and respects the ability and the dedication of the other even though they are aware their cat-and-mouse game may end in violence.",
+ "parents": [
+ "1uJxEylMHevsTeUzLrYnPpUiWjgI1KviP"
+ ],
+ "popularity": 184.588,
+ "posterPath": "https://image.tmdb.org/t/p/w342/umSVjVdbVwtx5ryCA2QXL44Durm.jpg",
+ "releaseDate": "1995-12-15",
+ "title": "Heat",
+ "type": "file",
+ "voteAverage": 7.919
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 12493,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gSCT6oP2Sbm71naW28Lh7afcMgY.jpg",
+ "genres": [
+ "Drama",
+ "Crime",
+ "Thriller"
+ ],
+ "id": "1TeQxdeaiVcmwo9gg3UQRIQM8xBnIzciP",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "High.And.Low.1963.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A shoe company executive who has mortgaged everything he has becomes a victim of extortion when his chauffeur's son is kidnapped and is conflicted over whether he should pay the ransom.",
+ "parents": [
+ "1k9gLcY9XRQxoi5fxuwv3nrIco8Rhdp8J"
+ ],
+ "popularity": 17.986,
+ "posterPath": "https://image.tmdb.org/t/p/w342/tgNjemQPG96uIezpiUiXFcer5ga.jpg",
+ "releaseDate": "1963-03-01",
+ "title": "High and Low",
+ "type": "file",
+ "voteAverage": 8.3
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1fF6oMe6QXJQRTg3S2T_ABbPnMH0HOk_u",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Hotel.Rawanda.2008.1080p.BrRip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "134HdI0RiRCetL8KBJGhmb5OGyHonNPNl"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "2008-01-01",
+ "title": "Hotel Rawanda",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 10191,
+ "backdropPath": "https://image.tmdb.org/t/p/original/59vDC1BuEQvti24OMr0ZvtAK6R1.jpg",
+ "genres": [
+ "Fantasy",
+ "Adventure",
+ "Animation",
+ "Family"
+ ],
+ "id": "1yIb3hk7glkGmc5BIfWho0l2ehd4o6yS6",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "How.To.Train.Your.Dragon.2010.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "As the son of a Viking leader on the cusp of manhood, shy Hiccup Horrendous Haddock III faces a rite of passage: he must kill a dragon to prove his warrior mettle. But after downing a feared dragon, he realizes that he no longer wants to destroy it, and instead befriends the beast \u2013 which he names Toothless \u2013 much to the chagrin of his warrior father.",
+ "parents": [
+ "1NZlgQg2r6L7qoijVbEs-TFfOXA2m897q"
+ ],
+ "popularity": 82.814,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ygGmAO60t8GyqUo9xYeYxSZAR3b.jpg",
+ "releaseDate": "2010-03-18",
+ "title": "How to Train Your Dragon",
+ "type": "file",
+ "voteAverage": 7.825
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 4935,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xqaN2WYQclQlqvKvsOcNgOx2vRn.jpg",
+ "genres": [
+ "Fantasy",
+ "Animation",
+ "Adventure"
+ ],
+ "id": "1MaMWqvMy1fu2ZQ9ZJf5-8vUp-7JtEeZp",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Howl's.Moving.Castle.2004.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Sophie, a young milliner, is turned into an elderly woman by a witch who enters her shop and curses her. She encounters a wizard named Howl and gets caught up in his resistance to fighting for the king.",
+ "parents": [
+ "1W0zl97YpQFG55V2eTFnvEGmsKpKIxqdW"
+ ],
+ "popularity": 94.774,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6pZgH10jhpToPcf0uvyTCPFhWpI.jpg",
+ "releaseDate": "2004-09-09",
+ "title": "Howl's Moving Castle",
+ "type": "file",
+ "voteAverage": 8.407
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3782,
+ "backdropPath": "https://image.tmdb.org/t/p/original/yn6DvHSEXE8Ao3QaNlELpqeSOqx.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1lvL-4wi4aYV_3Qgh9xo6p6jDReUZGabJ",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Ikiru.1952.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Kanji Watanabe is a middle-aged man who has worked in the same monotonous bureaucratic position for decades. Learning he has cancer, he starts to look for the meaning of his life.",
+ "parents": [
+ "1TJkpaH88aOenDK6zCrf1L6bNhk5IcNCE"
+ ],
+ "popularity": 21.495,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dgNTS4EQDDVfkzJI5msKuHu2Ei3.jpg",
+ "releaseDate": "1952-10-09",
+ "title": "Ikiru",
+ "type": "file",
+ "voteAverage": 8.307
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 7984,
+ "backdropPath": "https://image.tmdb.org/t/p/original/rJlQaeACIyLywrpd6S72Hd1OTZJ.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1MN6lLOYaezdgKtlYLUMPzp_JBpwe8YJU",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "In.The.Name.Of.The.Father.1993.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A small time thief from Belfast, Gerry Conlon, is falsely implicated in the IRA bombing of a pub that kills several people while he is in London. He and his four friends are coerced by British police into confessing their guilt. Gerry's father and other relatives in London are also implicated in the crime. He spends fifteen years in prison with his father trying to prove his innocence.",
+ "parents": [
+ "1Hj9pfCmZvAaLagBd5I77AUxZnd34FBJJ"
+ ],
+ "popularity": 16.616,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5HaQacOMOjA2wX1XnwnDd2VaXCf.jpg",
+ "releaseDate": "1993-12-12",
+ "title": "In the Name of the Father",
+ "type": "file",
+ "voteAverage": 7.9
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 46738,
+ "backdropPath": "https://image.tmdb.org/t/p/original/aFmoJntgDPR0Jd8XD1ZfFSmcqMg.jpg",
+ "genres": [
+ "Drama",
+ "War",
+ "Mystery"
+ ],
+ "id": "1CC5xsFgjdpXW2gcfX9NLaPHswmkuueG_",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "Incendies.2010.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A mother's last wishes send twins Jeanne and Simon on a journey to Middle East in search of their tangled roots. Adapted from Wajdi Mouawad's acclaimed play, Incendies tells the powerful and moving tale of two young adults' voyage to the core of deep-rooted hatred, never-ending wars and enduring love.",
+ "parents": [
+ "1MG-8VWaxzzxYOocRsQ2HeCzreV4OK2Ar"
+ ],
+ "popularity": 38.581,
+ "posterPath": "https://image.tmdb.org/t/p/w342/i5GsLIII66LubmOai65cWiB4kZq.jpg",
+ "releaseDate": "2010-09-17",
+ "title": "Incendies",
+ "type": "file",
+ "voteAverage": 8.103
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 27205,
+ "backdropPath": "https://image.tmdb.org/t/p/original/28kKbSUvUz6P5RE1AuMJMO7IMfK.jpg",
+ "genres": [
+ "Action",
+ "Science Fiction",
+ "Adventure"
+ ],
+ "id": "14ajI_iQnBkEfzhPJQ6rlVGnQRA7bQ8NU",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Inception.2010.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Cobb, a skilled thief who commits corporate espionage by infiltrating the subconscious of his targets is offered a chance to regain his old life as payment for a task considered to be impossible: \"inception\", the implantation of another person's idea into a target's subconscious.",
+ "parents": [
+ "1vdHhNwmKLh-REjgij5U0btC5DmN56tIE"
+ ],
+ "popularity": 355.797,
+ "posterPath": "https://image.tmdb.org/t/p/w342/oYuLEt3zVCKq57qu2F8dT7NIa6f.jpg",
+ "releaseDate": "2010-07-15",
+ "title": "Inception",
+ "type": "file",
+ "voteAverage": 8.368
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 89,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7KGdTzKux4fp5sW7hUM33NWqBU1.jpg",
+ "genres": [
+ "Adventure",
+ "Action"
+ ],
+ "id": "13jO31unQ_XhF4p21FAbQsUPB4vn71piZ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Indiana.Jones.And.The.Last.Crusade.1989.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "In 1938, an art collector appeals to eminent archaeologist Dr. Indiana Jones to embark on a search for the Holy Grail. Indy learns that a medieval historian has vanished while searching for it, and the missing man is his own father, Dr. Henry Jones Sr.. He sets out to rescue his father by following clues in the old man's notebook, which his father had mailed to him before he went missing. Indy arrives in Venice, where he enlists the help of a beautiful academic, Dr. Elsa Schneider, along with Marcus Brody and Sallah. Together they must stop the Nazis from recovering the power of eternal life and taking over the world!",
+ "parents": [
+ "1GYk4EULDVNodLb9G37I5wgq-BM7o4YiC"
+ ],
+ "popularity": 62.16,
+ "posterPath": "https://image.tmdb.org/t/p/w342/npUCnxl1fqgt3aQiMQq0iJdZMZp.jpg",
+ "releaseDate": "1989-05-24",
+ "title": "Indiana Jones and the Last Crusade",
+ "type": "file",
+ "voteAverage": 7.848
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 85,
+ "backdropPath": "https://image.tmdb.org/t/p/original/c7Mjuip0jfHLY7x8ZSEriRj45cu.jpg",
+ "genres": [
+ "Adventure",
+ "Action"
+ ],
+ "id": "18h_NYycI1zqbR8BHaM3ZZ4U8yIPOlD5E",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Indiana.Jones.And.The.Raiders.Of.The.Lost.Ark.1981.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "When Dr. Indiana Jones \u2013 the tweed-suited professor who just happens to be a celebrated archaeologist \u2013 is hired by the government to locate the legendary Ark of the Covenant, he finds himself up against the entire Nazi regime.",
+ "parents": [
+ "1WSHP9JlruZJvSjn3E-jA7PzUA1j1EHQT"
+ ],
+ "popularity": 70.856,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ceG9VzoRAVGwivFU403Wc3AHRys.jpg",
+ "releaseDate": "1981-06-12",
+ "title": "Raiders of the Lost Ark",
+ "type": "file",
+ "voteAverage": 7.926
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 16869,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1Jpkm9qZcsT0mSyVXgs4VlGjPNI.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "War"
+ ],
+ "id": "1Uk7WQ2Rysaq0WEUY5Uvx7PyWaDvqqyF_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Inglourious Bastards.2009.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "In Nazi-occupied France during World War II, a group of Jewish-American soldiers known as \"The Basterds\" are chosen specifically to spread fear throughout the Third Reich by scalping and brutally killing Nazis. The Basterds, lead by Lt. Aldo Raine soon cross paths with a French-Jewish teenage girl who runs a movie theater in Paris which is targeted by the soldiers.",
+ "parents": [
+ "11HmBD5mNDyb2gp6r6vlHX3OjA_WMQric"
+ ],
+ "popularity": 104.595,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7sfbEnaARXDDhKm0CZ7D7uc2sbo.jpg",
+ "releaseDate": "2009-08-02",
+ "title": "Inglourious Basterds",
+ "type": "file",
+ "voteAverage": 8.219
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 150540,
+ "backdropPath": "https://image.tmdb.org/t/p/original/j29ekbcLpBvxnGk6LjdTc2EI5SA.jpg",
+ "genres": [
+ "Animation",
+ "Family",
+ "Adventure",
+ "Drama",
+ "Comedy"
+ ],
+ "id": "117gEC1F6zdEIaDmeohOYfmyHFctaZCo-",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Inside.Out.2015.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "From an adventurous balloon ride above the clouds to a monster-filled metropolis, Academy Award\u00ae-winning director Pete Docter (\u201cMonsters, Inc.,\u201d \u201cUp\u201d) has taken audiences to unique and imaginative places. In Disney and Pixar\u2019s original movie \u201c Inside Out,\u201d he will take us to the most extraordinary location of all\u2014inside the mind.",
+ "parents": [
+ "1PciFhqRMetWEeL9j-7pBzCk9oJFY0yha"
+ ],
+ "popularity": 415.909,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2H1TmgdfNtsKlU9jKdeNyYL5y8T.jpg",
+ "releaseDate": "2015-06-09",
+ "title": "Inside Out",
+ "type": "file",
+ "voteAverage": 7.914
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 157336,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xJHokMbljvjADYdit5fK5VQsXEG.jpg",
+ "genres": [
+ "Adventure",
+ "Drama",
+ "Science Fiction"
+ ],
+ "id": "1qiqox0okc4vb_kYVYzKE0iXk_9UQg2XZ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Interstellar.2014.2014.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "The adventures of a group of explorers who make use of a newly discovered wormhole to surpass the limitations on human space travel and conquer the vast distances involved in an interstellar voyage.",
+ "parents": [
+ "19p6oKvBPddLRBmzPlQvyx3KcVezpiQZm"
+ ],
+ "popularity": 325.093,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gEU2QniE6E77NI6lCU6MxlNBvIx.jpg",
+ "releaseDate": "2014-11-05",
+ "title": "Interstellar",
+ "type": "file",
+ "voteAverage": 8.435
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 5915,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mvyERNa0oNsBjbHqn5qSGMHk2FM.jpg",
+ "genres": [
+ "Adventure",
+ "Drama"
+ ],
+ "id": "145BKefNXiMnJ-KYADOQXEhNaTQPMRA3p",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Into.the.Wild.2007.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "After graduating from Emory University in 1992, top student and athlete Christopher McCandless abandons his possessions, gives his entire $24,000 savings account to charity, and hitchhikes to Alaska to live in the wilderness.",
+ "parents": [
+ "1OW5ZAfXameZpuc0_Vclhu2fOT_IL2gbu"
+ ],
+ "popularity": 39.994,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2MSGZEE6XZd2r4ODNziwAw7Hpw0.jpg",
+ "releaseDate": "2007-09-21",
+ "title": "Into the Wild",
+ "type": "file",
+ "voteAverage": 7.805
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3078,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hmiC0MsI0PDd1TJXC62xyw0tX0s.jpg",
+ "genres": [
+ "Comedy",
+ "Romance"
+ ],
+ "id": "1ezEcQIfa3cWpbfqSHnHKyykFJLFpXvLl",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "It.Happened.One.Night.1934.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "A rogue reporter trailing a runaway heiress for a big story joins her on a bus heading from Florida to New York and they end up stuck with each other when the bus leaves them behind at one of the stops along the way.",
+ "parents": [
+ "1HTW_G263A2Av7werFQxw9emDA3Cyy3vw"
+ ],
+ "popularity": 17.39,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2PNUGWAflH6UUumas0POMmokHlc.jpg",
+ "releaseDate": "1934-02-22",
+ "title": "It Happened One Night",
+ "type": "file",
+ "voteAverage": 7.828
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1585,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ch3lDc4xQ9MpsNEpnRhvR8PIxxK.jpg",
+ "genres": [
+ "Drama",
+ "Family",
+ "Fantasy"
+ ],
+ "id": "1Q30MxLwix8Iag6w0Ju2snpejuWcXaOmc",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Its.A.Wonderful.Life.1946.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "A holiday favourite for generations... George Bailey has spent his entire life giving to the people of Bedford Falls. All that prevents rich skinflint Mr. Potter from taking over the entire town is George's modest building and loan company. But on Christmas Eve the business's $8,000 is lost and George's troubles begin.",
+ "parents": [
+ "1McqEQrDYP-bt9IZH91fQJel-QxEhJvSB"
+ ],
+ "popularity": 44.791,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bSqt9rhDZx1Q7UZ86dBPKdNomp2.jpg",
+ "releaseDate": "1946-12-20",
+ "title": "It's a Wonderful Life",
+ "type": "file",
+ "voteAverage": 8.269
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 855400,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zdoxq5iQ2Wlg7VQRG67bAmXOWqZ.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Mystery"
+ ],
+ "id": "153g84nNveQm95kmD2p8m2eqHiH_PVryX",
+ "language": "ta",
+ "mimeType": "video/mp4",
+ "name": "Jai.Bhim.2021.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A pregnant woman from a primitive tribal community, searches desperately for her husband, who is missing from police custody. So as to find her husband and seek justice for them, as their voice, a High Court advocate rises in support. Will their battle for justice succeed?",
+ "parents": [
+ "1N_TSI1Sdl5kyeZa7Ki7hK9YroCKQdT4O"
+ ],
+ "popularity": 9.086,
+ "posterPath": "https://image.tmdb.org/t/p/w342/zb9QBUn5AZzoKCS2jsnhp6ySSGp.jpg",
+ "releaseDate": "2021-11-02",
+ "title": "Jai Bhim",
+ "type": "file",
+ "voteAverage": 7.492
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 578,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3nYlM34QhzdtAvWRV5bN4nLtnTc.jpg",
+ "genres": [
+ "Horror",
+ "Thriller",
+ "Adventure"
+ ],
+ "id": "1V4YJ1q8NMkl2ToJ2h8tyzZw7Bx0PATMS",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Jaws.1975.1080p.BrRip.x264.bitloks.YIFY.mp4",
+ "overview": "When the seaside community of Amity finds itself under attack by a dangerous great white shark, the town's chief of police, a young marine biologist, and a grizzled hunter embark on a desperate quest to destroy the beast before it strikes again.",
+ "parents": [
+ "1_dxMy5qfTT80e_7FGOXAJAkWuctyKotE"
+ ],
+ "popularity": 292.271,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lxM6kqilAdpdhqUl2biYp5frUxE.jpg",
+ "releaseDate": "1975-06-20",
+ "title": "Jaws",
+ "type": "file",
+ "voteAverage": 7.662
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 475557,
+ "backdropPath": "https://image.tmdb.org/t/p/original/n6bUvigpRFqSwmPp1m2YADdbRBc.jpg",
+ "genres": [
+ "Crime",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1K2Y0SxoelfJ76v_lEmccgfe6Qvqi_on6",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Joker.2019.1080p.BluRay.x264-[YTS.LT].mp4",
+ "overview": "During the 1980s, a failed stand-up comedian is driven insane and turns to a life of crime and chaos in Gotham City while becoming an infamous psychopathic crime figure.",
+ "parents": [
+ "1z_Ifndh2otzMVAAxSQXZIJfFdEP57okx"
+ ],
+ "popularity": 383.395,
+ "posterPath": "https://image.tmdb.org/t/p/w342/udDclJoHjfjb8Ekgsd4FDteOkCU.jpg",
+ "releaseDate": "2019-10-01",
+ "title": "Joker",
+ "type": "file",
+ "voteAverage": 8.161
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 821,
+ "backdropPath": "https://image.tmdb.org/t/p/original/37lz7mPo3AWV2BiaF7TA6ZWqL5u.jpg",
+ "genres": [
+ "Drama",
+ "War",
+ "History"
+ ],
+ "id": "1S56Y7Mg0ZYNPNB0US6rQycS-wQ9PJ_xk",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Judgment.at.Nuremberg.1961.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "In 1947, four German judges who served on the bench during the Nazi regime face a military tribunal to answer charges of crimes against humanity. Chief Justice Haywood hears evidence and testimony not only from lead defendant Ernst Janning and his defense attorney Hans Rolfe, but also from the widow of a Nazi general, an idealistic U.S. Army captain and reluctant witness Irene Wallner.",
+ "parents": [
+ "1V9hjYtzsBpov4kTuY6ZOc4Eqpdy6zCdL"
+ ],
+ "popularity": 15.877,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cqumfgd74ftVzOKJpFGOG64WlXL.jpg",
+ "releaseDate": "1961-12-18",
+ "title": "Judgment at Nuremberg",
+ "type": "file",
+ "voteAverage": 8.04
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 329,
+ "backdropPath": "https://image.tmdb.org/t/p/original/79bJL9ydAMYVltuNTt4VhxORqIz.jpg",
+ "genres": [
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "11TdiHzD2DlWRlIC3_ElUjcOek9M3T6Li",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Jurassic.Park.1993.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "A wealthy entrepreneur secretly creates a theme park featuring living dinosaurs drawn from prehistoric DNA. Before opening day, he invites a team of experts and his two eager grandchildren to experience the park and help calm anxious investors. However, the park is anything but amusing as the security systems go off-line and the dinosaurs escape.",
+ "parents": [
+ "1_HGuGJDJ7oTd5hye5d8qbY26wBvmfWts"
+ ],
+ "popularity": 37.255,
+ "posterPath": "https://image.tmdb.org/t/p/w342/b1xCNnyrPebIc7EWNZIa6jhb1Ww.jpg",
+ "releaseDate": "1993-06-11",
+ "title": "Jurassic Park",
+ "type": "file",
+ "voteAverage": 7.946
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 24,
+ "backdropPath": "https://image.tmdb.org/t/p/original/lVy5Zqcty2NfemqKYbVJfdg44rK.jpg",
+ "genres": [
+ "Action",
+ "Crime"
+ ],
+ "id": "1qaOpw69SSGFOHSS5pnLSPT7jLsKK-Z10",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Kill.Bill.Vol.1.2003.1080p.BrRIp.x264.YIFY.mp4",
+ "overview": "An assassin is shot by her ruthless employer, Bill, and other members of their assassination circle \u2013 but she lives to plot her vengeance.",
+ "parents": [
+ "1TKpcbZh4wZ15W6u1Zjps6bhAv9s15EPU"
+ ],
+ "popularity": 56.322,
+ "posterPath": "https://image.tmdb.org/t/p/w342/v7TaX8kXMXs5yFFGR41guUDNcnB.jpg",
+ "releaseDate": "2003-10-10",
+ "title": "Kill Bill: Vol. 1",
+ "type": "file",
+ "voteAverage": 7.971
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 508965,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mlxKite1x1PgmIhJgAxNS9eHmH8.jpg",
+ "genres": [
+ "Animation",
+ "Family",
+ "Adventure",
+ "Comedy",
+ "Fantasy"
+ ],
+ "id": "1Z0ZnhYYzZgEBJ7Sl7_wQXKIo7VXUe2Cu",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Klaus.2019.1080p.WEBRip.x264-[YTS.LT].mp4",
+ "overview": "When Jesper distinguishes himself as the Postal Academy's worst student, he is sent to Smeerensburg, a small village located on an icy island above the Arctic Circle, where grumpy inhabitants barely exchange words, let alone letters. Jesper is about to give up and abandon his duty as a postman when he meets local teacher Alva and Klaus, a mysterious carpenter who lives alone in a cabin full of handmade toys.",
+ "parents": [
+ "1-Dds8-UmfC0zrYB3w-0_WX8rXYGyb9mT"
+ ],
+ "popularity": 28.714,
+ "posterPath": "https://image.tmdb.org/t/p/w342/q125RHUDgR4gjwh1QkfYuJLYkL.jpg",
+ "releaseDate": "2019-11-08",
+ "title": "Klaus",
+ "type": "file",
+ "voteAverage": 8.249
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 2118,
+ "backdropPath": "https://image.tmdb.org/t/p/original/fGbM2cqPauRu7ALFPSTDBH9FgpU.jpg",
+ "genres": [
+ "Crime",
+ "Mystery",
+ "Thriller"
+ ],
+ "id": "1iWmTIkBPXVypB40XHsJjbbLDTeTGZVMH",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "L.A..Confidential.1997.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Three detectives in the corrupt and brutal L.A. police force of the 1950s use differing methods to uncover a conspiracy behind the shotgun slayings of the patrons at an all-night diner.",
+ "parents": [
+ "11sPcoT7N9m_yXq7_dfLSCOKJLWSVCBee"
+ ],
+ "popularity": 24.752,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lWCgf5sD5FpMljjpkRhcC8pXcch.jpg",
+ "releaseDate": "1997-09-19",
+ "title": "L.A. Confidential",
+ "type": "file",
+ "voteAverage": 7.792
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 406,
+ "backdropPath": "https://image.tmdb.org/t/p/original/viGCwLxupyoaLsa6hrnu1gYrB0B.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1q4JFY3YA1wbDu4LRupvJY6VfQSx87fr3",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "La.Haine.1995.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After a chaotic night of rioting in a marginal suburb of Paris, three young friends, Vinz, Hubert and Sa\u00efd, wander around unoccupied waiting for news about the state of health of a mutual friend who has been seriously injured when confronting the police.",
+ "parents": [
+ "1zvOAySRZSvWDz3jXb7Z4WLyjh15seClY"
+ ],
+ "popularity": 27.884,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8rgPyWjYZhsphSSxbXguMnhN7H0.jpg",
+ "releaseDate": "1995-05-31",
+ "title": "La Haine",
+ "type": "file",
+ "voteAverage": 8.096
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 947,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mx2jS5Kaa5rmaldEFzKeKpDN9Q2.jpg",
+ "genres": [
+ "Adventure",
+ "History",
+ "War"
+ ],
+ "id": "1GWALf52AReeq1s_bUM2_pLHZAa8w8omv",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Lawrence.Of.Arabia.1962.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "The story of British officer T.E. Lawrence's mission to aid the Arab tribes in their revolt against the Ottoman Empire during the First World War. Lawrence becomes a flamboyant, messianic figure in the cause of Arab unity but his psychological instability threatens to undermine his achievements.",
+ "parents": [
+ "1a_IbVNK1rXFlBgKXNxRHeG3s-txVoe-Q"
+ ],
+ "popularity": 90.948,
+ "posterPath": "https://image.tmdb.org/t/p/w342/AiAm0EtDvyGqNpVoieRw4u65vD1.jpg",
+ "releaseDate": "1962-12-11",
+ "title": "Lawrence of Arabia",
+ "type": "file",
+ "voteAverage": 8.001
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1l3V1xDHFt7GvK1z3rK8PvonF8AhPSvWE",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Leon.the.Professional.Extended.1994.BrRip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1tsZRLY-E04JuImyyYIv7LR2Wtk-Y4qw4"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "1994-01-01",
+ "title": "Leon the Professional Extended",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 637,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gavyCu1UaTaTNPsVaGXT6pe5u24.jpg",
+ "genres": [
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1pXN36pmlNe5SCxd8RGzpRyiMx8K9kASJ",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "Life.Is.Beautiful.1997.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A touching story of an Italian book seller of Jewish ancestry who lives in his own little fairy tale. His creative and happy life would come to an abrupt halt when his entire family is deported to a concentration camp during World War II. While locked up he tries to convince his son that the whole thing is just a game.",
+ "parents": [
+ "1_io86tTytSQFdoNj0Ls25uGyPr1m7_Hs"
+ ],
+ "popularity": 53.139,
+ "posterPath": "https://image.tmdb.org/t/p/w342/74hLDKjD5aGYOotO6esUVaeISa2.jpg",
+ "releaseDate": "1997-12-20",
+ "title": "Life Is Beautiful",
+ "type": "file",
+ "voteAverage": 8.452
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 7508,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5dF4FNwM2qZIuF0WCUs5zvDGU2H.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1iHlpwh5BUmWfdefNi8A69WkAcPp_3UYk",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Like.Stars.On.Earth.2007.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Ishaan Awasthi is an eight-year-old whose world is filled with wonders that no one else seems to appreciate. Colours, fish, dogs, and kites don't seem important to the adults, who are much more interested in things like homework, marks, and neatness. Ishaan cannot seem to get anything right in class; he is then sent to boarding school, where his life changes forever.",
+ "parents": [
+ "1tlht9fizJiI9B4-VeUOM9RFeivSYR01M"
+ ],
+ "popularity": 22.126,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fwXhw9bERqKrJfJK6WGakPIh3FS.jpg",
+ "releaseDate": "2007-12-21",
+ "title": "Like Stars on Earth",
+ "type": "file",
+ "voteAverage": 7.994
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 100,
+ "backdropPath": "https://image.tmdb.org/t/p/original/cXQH2u7wUIX1eoIdEj51kHXoWhX.jpg",
+ "genres": [
+ "Comedy",
+ "Crime"
+ ],
+ "id": "1tVwn9RNd5baGtWohHMps2x2s35sS5ZBu",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Lock,.Stock.and.Two.Smoking.Barrels.1998.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "A card shark and his unwillingly-enlisted friends need to make a lot of cash quick after losing a sketchy poker match. To do this they decide to pull a heist on a small-time gang who happen to be operating out of the flat next door.",
+ "parents": [
+ "10pous4gA_sv9JdaYmnHTgcIsXqbhjkMr"
+ ],
+ "popularity": 13.397,
+ "posterPath": "https://image.tmdb.org/t/p/w342/wt2TRBmFmBn5M5MBcPTwovlREaB.jpg",
+ "releaseDate": "1998-08-28",
+ "title": "Lock, Stock and Two Smoking Barrels",
+ "type": "file",
+ "voteAverage": 8.123
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 263115,
+ "backdropPath": "https://image.tmdb.org/t/p/original/9X7YweCJw3q8Mcf6GadxReFEksM.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "Science Fiction"
+ ],
+ "id": "1esTMmy_W0Pjq-AmFJpPby35JSYozIpsk",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Logan.2017.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "In the near future, a weary Logan cares for an ailing Professor X in a hideout on the Mexican border. But Logan's attempts to hide from the world and his legacy are upended when a young mutant arrives, pursued by dark forces.",
+ "parents": [
+ "16-9zO9o1gS0OIiy3o65oPjNzVNoc93Bb"
+ ],
+ "popularity": 382.987,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fnbjcRDYn6YviCcePDnGdyAkYsB.jpg",
+ "releaseDate": "2017-02-28",
+ "title": "Logan",
+ "type": "file",
+ "voteAverage": 7.818
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 832,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mQUOFbRoRG9t8oS0SOk955flHJq.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1e06Rj4-QMLu_MK15BCV5gtxknOlAqg-h",
+ "language": "de",
+ "mimeType": "video/mp4",
+ "name": "M.1931.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In this classic German thriller, Hans Beckert, a serial killer who preys on children, becomes the focus of a massive Berlin police manhunt. Beckert's heinous crimes are so repellant and disruptive to city life that he is even targeted by others in the seedy underworld network. With both cops and criminals in pursuit, the murderer soon realizes that people are on his trail, sending him into a tense, panicked attempt to escape justice.",
+ "parents": [
+ "1PwFtKO1LiMET2KMKCISIaRcjgWJXwFEC"
+ ],
+ "popularity": 18.531,
+ "posterPath": "https://image.tmdb.org/t/p/w342/slsS6jT6SXjcTPOrsFcLIrHboXA.jpg",
+ "releaseDate": "1931-05-11",
+ "title": "M",
+ "type": "file",
+ "voteAverage": 8.089
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 76341,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8yACFuo4OaIiKr9hHFlmPcGalKx.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1kx_8nYPm0Kk_cSM5EKpcLeSgiej7fvoH",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Mad.Max.Fury.Road.2015.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "An apocalyptic story set in the furthest reaches of our planet, in a stark desert landscape where humanity is broken, and most everyone is crazed fighting for the necessities of life. Within this world exist two rebels on the run who just might be able to restore order.",
+ "parents": [
+ "1jzneo-I2hKRbMcJFrMy3IbabmvNzplZT"
+ ],
+ "popularity": 316.372,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hA2ple9q4qnwxp3hKVNhroipsir.jpg",
+ "releaseDate": "2015-05-13",
+ "title": "Mad Max: Fury Road",
+ "type": "file",
+ "voteAverage": 7.599
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 24238,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pW1sEV4R2GL99OoUq73Pvf7r7Ce.jpg",
+ "genres": [
+ "Animation",
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1wIXhsxego4qy1SzZv5YbiLNulQwBPPBO",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Mary.and.Max.2009.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "A tale of friendship between two unlikely pen pals: Mary, a lonely, eight-year-old girl living in the suburbs of Melbourne, and Max, a forty-four-year old, severely obese man living in New York.",
+ "parents": [
+ "1eemPYx24vGE0XwTI4d-PB2Pu2vD5GqbS"
+ ],
+ "popularity": 70.5,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ebmsM382m9IClLUzKYY2U5biFwM.jpg",
+ "releaseDate": "2009-02-09",
+ "title": "Mary and Max",
+ "type": "file",
+ "voteAverage": 7.851
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 77,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7Wev9JMo6R5XAfz2KDvXb7oPMmy.jpg",
+ "genres": [
+ "Mystery",
+ "Thriller"
+ ],
+ "id": "1MZKIMVaoXA4Iu7r9llqvd9zigau5Aq-a",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Memento.2000.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Leonard Shelby is tracking down the man who raped and murdered his wife. The difficulty of locating his wife's killer, however, is compounded by the fact that he suffers from a rare, untreatable form of short-term memory loss. Although he can recall details of life before his accident, Leonard cannot remember what happened fifteen minutes ago, where he's going, or why.",
+ "parents": [
+ "1A4ndS19ufCZc2OXEMfhRNz4mFVAE0TUs"
+ ],
+ "popularity": 45.162,
+ "posterPath": "https://image.tmdb.org/t/p/w342/nWtySDlffTfwAa0rSfq61o33ZXV.jpg",
+ "releaseDate": "2000-10-11",
+ "title": "Memento",
+ "type": "file",
+ "voteAverage": 8.183
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11423,
+ "backdropPath": "https://image.tmdb.org/t/p/original/njaw7QZy5ni8ZDydx3b1EDpEfwk.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1n4YRIUo9Kv6yM03UYaaxgZ5j4quiDwFb",
+ "language": "ko",
+ "mimeType": "video/mp4",
+ "name": "Memories.Of.Murder.2003.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "During the late 1980s, two detectives in a South Korean province attempt to solve the nation's first series of rape-and-murder cases.",
+ "parents": [
+ "1so6crHVXcKDfHpWZJqnjP8iX_rhPGv8M"
+ ],
+ "popularity": 30.865,
+ "posterPath": "https://image.tmdb.org/t/p/w342/jcgUjx1QcupGzjntTVlnQ15lHqy.jpg",
+ "releaseDate": "2003-05-02",
+ "title": "Memories of Murder",
+ "type": "file",
+ "voteAverage": 8.062
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 19,
+ "backdropPath": "https://image.tmdb.org/t/p/original/rnN9yJfwso6JA64wIPqK1m6K6e1.jpg",
+ "genres": [
+ "Drama",
+ "Science Fiction"
+ ],
+ "id": "1V4lENVk5XdhKCXnsvbmyE_dU0hUoqtY2",
+ "language": "de",
+ "mimeType": "video/mp4",
+ "name": "Metropolis.1927.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In a futuristic city sharply divided between the rich and the poor, the son of the city's mastermind meets a prophet who predicts the coming of a savior to mediate their differences.",
+ "parents": [
+ "1uooEwfFX0LvCbv0jhJC7F8wT05yQ1jU1"
+ ],
+ "popularity": 205.622,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pxbGZewX327IbTvrCVRJgcLJTSQ.jpg",
+ "releaseDate": "1927-02-06",
+ "title": "Metropolis",
+ "type": "file",
+ "voteAverage": 8.138
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 70,
+ "backdropPath": "https://image.tmdb.org/t/p/original/oGMomeS7bE43eN8SGJUaKvQnmud.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1R_jVCGJkNEz2yDtd0kVpMf0Dzt_b-CUf",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Million.Dollar.Baby.2004.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Despondent over a painful estrangement from his daughter, trainer Frankie Dunn isn't prepared for boxer Maggie Fitzgerald to enter his life. But Maggie's determined to go pro and to convince Dunn and his cohort to help her.",
+ "parents": [
+ "18f2XTqYLXwlaYkd2yyxiTF0lO76Lfh00"
+ ],
+ "popularity": 58.892,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2ti3l1OeB8G94yyqfAI7nmMZUbA.jpg",
+ "releaseDate": "2004-12-15",
+ "title": "Million Dollar Baby",
+ "type": "file",
+ "voteAverage": 7.956
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3082,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kSlO1pHpwQfPQdgVPr7dJiJNtJ8.jpg",
+ "genres": [
+ "Comedy",
+ "Drama",
+ "Romance"
+ ],
+ "id": "1w0pW7gwxIn-wAbn6VQNSf8Glgdd__g4M",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Modern.Times.1936.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A bumbling tramp desires to build a home with a young woman, yet is thwarted time and time again by his lack of experience and habit of being in the wrong place at the wrong time..",
+ "parents": [
+ "1kDxyS5MK1f8QPZ6ihLzkXmQw6hJk_Y6G"
+ ],
+ "popularity": 28.924,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uEMekS25hwXrCJOZZ3NKMGcAFJo.jpg",
+ "releaseDate": "1936-02-05",
+ "title": "Modern Times",
+ "type": "file",
+ "voteAverage": 8.293
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 585,
+ "backdropPath": "https://image.tmdb.org/t/p/original/puo6orN2BjQt1g4K0umVlooVff9.jpg",
+ "genres": [
+ "Animation",
+ "Comedy",
+ "Family"
+ ],
+ "id": "12DMwfhn0ZoKF4C87qnRVd5jAGdTgwYvS",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Monsters.Inc.2001.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Lovable Sulley and his wisecracking sidekick Mike Wazowski are the top scare team at Monsters, Inc., the scream-processing factory in Monstropolis. When a little girl named Boo wanders into their world, it's the monsters who are scared silly, and it's up to Sulley and Mike to keep her out of sight and get her back home.",
+ "parents": [
+ "1kWUVIcRs5H-XQFcn3ga8toEqCo8LtvUC"
+ ],
+ "popularity": 135.046,
+ "posterPath": "https://image.tmdb.org/t/p/w342/wFSpyMsp7H0ttERbxY7Trlv8xry.jpg",
+ "releaseDate": "2001-11-01",
+ "title": "Monsters, Inc.",
+ "type": "file",
+ "voteAverage": 7.843
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 762,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1KgXxv6tHXOnakqYvMPvFwYKWiw.jpg",
+ "genres": [
+ "Adventure",
+ "Comedy",
+ "Fantasy"
+ ],
+ "id": "1Q7GveL4zJczRfby75trtbbL6ZRb5YuBT",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Monty.Python.And.The.Holy.Grail.1975.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "King Arthur, accompanied by his squire, recruits his Knights of the Round Table, including Sir Bedevere the Wise, Sir Lancelot the Brave, Sir Robin the Not-Quite-So-Brave-As-Sir-Lancelot and Sir Galahad the Pure. On the way, Arthur battles the Black Knight who, despite having had all his limbs chopped off, insists he can still fight. They reach Camelot, but Arthur decides not to enter, as \"it is a silly place\".",
+ "parents": [
+ "1OVyjX-Xlh1C82ZM47YUkKF8rIFeXGz0d"
+ ],
+ "popularity": 32.913,
+ "posterPath": "https://image.tmdb.org/t/p/w342/xZ0rC0kuIsjk6RncpNK73kwstEP.jpg",
+ "releaseDate": "1975-03-14",
+ "title": "Monty Python and the Holy Grail",
+ "type": "file",
+ "voteAverage": 7.805
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3083,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ymgCnPxic0dFagzsK4RX1tIPjE5.jpg",
+ "genres": [
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1zUHmRd6oHvimpjSBmWxRykWIvNyVOD6S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Mr..Smith.Goes.To.Washington.1939.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Naive and idealistic Jefferson Smith, leader of the Boy Rangers, is appointed to the United States Senate by the puppet governor of his state. He soon discovers, upon going to Washington, many shortcomings of the political process as his earnest goal of a national boys' camp leads to a conflict with the state political boss.",
+ "parents": [
+ "1fZtp7ix9w6ZqSFkP7_gqcqTLVxhG1gwW"
+ ],
+ "popularity": 13.09,
+ "posterPath": "https://image.tmdb.org/t/p/w342/nDjg1fbNyq15excNDl3acd2IqAk.jpg",
+ "releaseDate": "1939-10-19",
+ "title": "Mr. Smith Goes to Washington",
+ "type": "file",
+ "voteAverage": 7.9
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 13393,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ci8NMpK3HvuySQRGPMAPyBSlL7f.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1Pr1HKY0AtHXtQkyngCmO9oP9LHs3eT82",
+ "language": "tr",
+ "mimeType": "video/mp4",
+ "name": "My.Father.And.My.Son.2005.1080p.WEBRip.x264-[YTS.AM].mp4",
+ "overview": "A left-wing journalist whose wife died while giving birth to his son during a military coup returns to his family's farm. Estranged from his father for turning his back on the family and wasting his life with political activism instead, he tries to reconnect with him so that his son will have a place to live as his health is deteriorating due to the extensive torture he had to endure.",
+ "parents": [
+ "1rt2sU0jp2zy0JbQ33Ofv8zva3NxoJFFa"
+ ],
+ "popularity": 10.045,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dcKY23xowYTU9B1cagUdHQwsxOB.jpg",
+ "releaseDate": "2005-11-18",
+ "title": "My Father and My Son",
+ "type": "file",
+ "voteAverage": 7.6
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 8392,
+ "backdropPath": "https://image.tmdb.org/t/p/original/fxYazFVeOCHpHwuqGuiqcCTw162.jpg",
+ "genres": [
+ "Fantasy",
+ "Animation",
+ "Family"
+ ],
+ "id": "1O0aKaZR6ImYDCwYIrB8-XngS-JyGIBQL",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "My.Neighbor.Totoro.1988.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "Two sisters move to the country with their father in order to be closer to their hospitalized mother, and discover the surrounding trees are inhabited by Totoros, magical spirits of the forest. When the youngest runs away from home, the older sister seeks help from the spirits to find her.",
+ "parents": [
+ "1sg1npRg9UVgOu-BovY3zcwwtALNOBiiw"
+ ],
+ "popularity": 70.176,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rtGDOeG9LzoerkDGZF9dnVeLppL.jpg",
+ "releaseDate": "1988-04-16",
+ "title": "My Neighbor Totoro",
+ "type": "file",
+ "voteAverage": 8.1
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 10774,
+ "backdropPath": "https://image.tmdb.org/t/p/original/bODIl4B857k20AhrHylKzpLprk4.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1F3e9Ai7u1hhQKe9mXGSWBQLnlsIv8-Xo",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Network.1976.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "When veteran anchorman Howard Beale is forced to retire his 25-year post because of his age, he announces to viewers that he will kill himself during his farewell broadcast. Network executives rethink their decision when his fanatical tirade results in a spike in ratings.",
+ "parents": [
+ "1IzPu9LAFLP4TiN8gCRTb4X7j9el3GRWz"
+ ],
+ "popularity": 25.775,
+ "posterPath": "https://image.tmdb.org/t/p/w342/qZomlHsaALUtkFeMDwdYmwS2Pbo.jpg",
+ "releaseDate": "1976-11-14",
+ "title": "Network",
+ "type": "file",
+ "voteAverage": 7.818
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 6977,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kd9jFTTabg4xJpHDgxY0h8F9BzG.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "18JrDhWD-DPeJz3qYM718hKQpXcL_4xHS",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "No.Country.For.Old.Men.2007.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Llewelyn Moss stumbles upon dead bodies, $2 million and a hoard of heroin in a Texas desert, but methodical killer Anton Chigurh comes looking for it, with local sheriff Ed Tom Bell hot on his trail. The roles of prey and predator blur as the violent pursuit of money and justice collide.",
+ "parents": [
+ "1zLkHM-gN9EQiweCPimts8aRKj3ctYHSL"
+ ],
+ "popularity": 58.631,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bj1v6YKF8yHqA489VFfnQvOJpnc.jpg",
+ "releaseDate": "2007-06-13",
+ "title": "No Country for Old Men",
+ "type": "file",
+ "voteAverage": 7.938
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 213,
+ "backdropPath": "https://image.tmdb.org/t/p/original/OR8oloCZ3klJtB7Y0i8pSqWw5a.jpg",
+ "genres": [
+ "Mystery",
+ "Thriller",
+ "Adventure"
+ ],
+ "id": "1TyQXIH3-31fLep2Nyx5O0Mr6jscBsn3c",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "North.By.Northwest.1959.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Advertising man Roger Thornhill is mistaken for a spy, triggering a deadly cross-country chase.",
+ "parents": [
+ "1E7P67V_G_rrcIJNHwGbWERuuTtX92xML"
+ ],
+ "popularity": 131.992,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lStZVLHQmn7MSWx0OcI0tfaGwsI.jpg",
+ "releaseDate": "1959-07-08",
+ "title": "North by Northwest",
+ "type": "file",
+ "voteAverage": 7.985
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 670,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sdwjQEM869JFwMytTmvr6ggvaUl.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Mystery",
+ "Action"
+ ],
+ "id": "15p8t5NyPZAddRdZnYpSma5Z3Z4wnRmfO",
+ "language": "ko",
+ "mimeType": "video/mp4",
+ "name": "Oldboy.2003.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "With no clue how he came to be imprisoned, drugged and tortured for 15 years, a desperate man seeks revenge on his captors.",
+ "parents": [
+ "1_YGPefURT5QZpYHzSTAgGKzhohD8Fd20"
+ ],
+ "popularity": 51.139,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pWDtjs568ZfOTMbURQBYuT4Qxka.jpg",
+ "releaseDate": "2003-11-21",
+ "title": "Oldboy",
+ "type": "file",
+ "voteAverage": 8.256
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 654,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pxkQAIhC7LXN5s5B23lnvCMgva5.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Romance"
+ ],
+ "id": "1QSahWtqU2JFFWfi_KK9UBkOmmnYvkbf2",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "On.The.Waterfront.1954.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A dim-witted yet kind-hearted boxer, Terry Malloy, who failed to succeed unintentionally lures a man to his death after being tricked by a criminal called Johnny Friendly whose men pick of every man who has the courage to speak up to their crimes. As he works on the waterfronts that Friendly owns, he is sent to a church meeting run by a good preacher about how to deal with the problem and runs into the dead man\u2019s sister. Slowly, he falls in love with her and begins to feel guilt about his crime.",
+ "parents": [
+ "1b904h4ba-O_6mmmuyXHnA5tRTzu4gVPb"
+ ],
+ "popularity": 18.914,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fKjLZy9W8VxMOp5OoyWojmLVCQw.jpg",
+ "releaseDate": "1954-06-22",
+ "title": "On the Waterfront",
+ "type": "file",
+ "voteAverage": 7.929
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 311,
+ "backdropPath": "https://image.tmdb.org/t/p/original/uPYa165sraN2c8gZBM9C47g3JoU.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1jxIDYCn876Ap7fgWyhNP9RkoWUYdBp0n",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Once.Upon.A.Time.In.America.1984.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A former Prohibition-era Jewish gangster returns to the Lower East Side of Manhattan over thirty years later, where he once again must confront the ghosts and regrets of his old life.",
+ "parents": [
+ "1H1dVoylmjjPhlT19fg4GDIOIk6Gzl4YT"
+ ],
+ "popularity": 47.756,
+ "posterPath": "https://image.tmdb.org/t/p/w342/i0enkzsL5dPeneWnjl1fCWm6L7k.jpg",
+ "releaseDate": "1984-05-23",
+ "title": "Once Upon a Time in America",
+ "type": "file",
+ "voteAverage": 8.423
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 335,
+ "backdropPath": "https://image.tmdb.org/t/p/original/26SUDI2iKhZTIKcU4ZzezTH1G15.jpg",
+ "genres": [
+ "Drama",
+ "Western"
+ ],
+ "id": "1CmRClD8njG3vt9Tb45q-TcfGT95FbNb8",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "Once.Upon.a.Time.in.the.West.1968.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "As the railroad builders advance unstoppably through the Arizona desert on their way to the sea, Jill arrives in the small town of Flagstone with the intention of starting a new life.",
+ "parents": [
+ "1WamfvE9NiZkRO8PSQn_oOwtfuw3hztvL"
+ ],
+ "popularity": 57.845,
+ "posterPath": "https://image.tmdb.org/t/p/w342/qbYgqOczabWNn2XKwgMtVrntD6P.jpg",
+ "releaseDate": "1968-12-21",
+ "title": "Once Upon a Time in the West",
+ "type": "file",
+ "voteAverage": 8.288
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1fOJUIqH9svsqo9QEOCUkoCvS5VFq6bi-",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "One.Flew.Over.The.Cuckoo's.Nest.1080p.BrRip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1D_HhZg5DjcfRKCQbh9RqTmAbXTilFHga"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "1080-01-01",
+ "title": "One Flew Over The Cuckoo's Nest",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 872585,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nb3xI8XI3w4pMVZ38VijbsyBqP4.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1oZrSxKlGwVBOlgQnBaVvNL91BzGiHsLi",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Oppenheimer.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The story of J. Robert Oppenheimer's role in the development of the atomic bomb during World War II.",
+ "parents": [
+ "1gOYEyFojH54KvY8ANp6e8F3fjnpA1Zs1"
+ ],
+ "popularity": 528.011,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8Gxv8gSFCU0XGDykEGv7zR1n2ua.jpg",
+ "releaseDate": "2023-07-19",
+ "title": "Oppenheimer",
+ "type": "file",
+ "voteAverage": 8.096
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1417,
+ "backdropPath": "https://image.tmdb.org/t/p/original/o0IWa75BXyXryNDVqw0xoXZzy1J.jpg",
+ "genres": [
+ "Fantasy",
+ "Drama",
+ "War"
+ ],
+ "id": "1AAbKlfHJmFabuZRGHjxd9JAIbpSOohXM",
+ "language": "es",
+ "mimeType": "video/mp4",
+ "name": "Pan's.Labyrinth.2006.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Living with her tyrannical stepfather in a new home with her pregnant mother, 10-year-old Ofelia feels alone until she explores a decaying labyrinth guarded by a mysterious faun who claims to know her destiny. If she wishes to return to her real father, Ofelia must complete three terrifying tasks.",
+ "parents": [
+ "1RKF7-672kPwpL0lNI6k3YKPUcdDhMbCJ"
+ ],
+ "popularity": 134.333,
+ "posterPath": "https://image.tmdb.org/t/p/w342/s8C4whhKtDaJvMDcyiMvx3BIF5F.jpg",
+ "releaseDate": "2006-10-10",
+ "title": "Pan's Labyrinth",
+ "type": "file",
+ "voteAverage": 7.757
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 496243,
+ "backdropPath": "https://image.tmdb.org/t/p/original/TU9NIjwzjoKPwQHoHshkFcQUCG.jpg",
+ "genres": [
+ "Comedy",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1GDVL3FbRgdPBSsvdOgP9f1jhWDFrniVg",
+ "language": "ko",
+ "mimeType": "video/mp4",
+ "name": "Parasite.2019.1080p.BluRay.x264-[YTS.LT].mp4",
+ "overview": "All unemployed, Ki-taek's family takes peculiar interest in the wealthy and glamorous Parks for their livelihood until they get entangled in an unexpected incident.",
+ "parents": [
+ "1DhuuAfyCK0Ws4ArvhIb_aM9MgwvTPsqw"
+ ],
+ "popularity": 75.004,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7IiTTgloJzvGI1TAYymCfbfl3vT.jpg",
+ "releaseDate": "2019-05-30",
+ "title": "Parasite",
+ "type": "file",
+ "voteAverage": 8.51
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 975,
+ "backdropPath": "https://image.tmdb.org/t/p/original/354kfjVb96mtFALMhBE6jzHGiA2.jpg",
+ "genres": [
+ "War",
+ "Drama",
+ "History"
+ ],
+ "id": "1ZAGuPqG120QbuwjFHTpig5SnRJOUneFV",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Paths.Of.Glory.1957.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A commanding officer defends three scapegoats on trial for a failed offensive that occurred within the French Army in 1916.",
+ "parents": [
+ "1lfHB3HlmaKggOfaDOzCDi9JxlNzuX67g"
+ ],
+ "popularity": 21.674,
+ "posterPath": "https://image.tmdb.org/t/p/w342/3O10X1bVSasrS2NQ186s2tlKvqN.jpg",
+ "releaseDate": "1957-10-25",
+ "title": "Paths of Glory",
+ "type": "file",
+ "voteAverage": 8.27
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 22,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wW7Wt5bXzPy4VOEE4LTIUDyDgBo.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Action"
+ ],
+ "id": "1Yj-3xl1zQq0vROj_s8fZuwiTVV-Zt26i",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Pirates.of.the.Caribbean.Curse.of.the.Black.Pearl.2003.1080p.BrRip.x264.Deceit.YIFY.mp4",
+ "overview": "Jack Sparrow, a freewheeling 18th-century pirate, quarrels with a rival pirate bent on pillaging Port Royal. When the governor's daughter is kidnapped, Sparrow decides to help the girl's love save her.",
+ "parents": [
+ "1NQ8saqTIRpVW9LvXCUwNm_ukjsfgd9LY"
+ ],
+ "popularity": 120.695,
+ "posterPath": "https://image.tmdb.org/t/p/w342/poHwCZeWzJCShH7tOjg8RIoyjcw.jpg",
+ "releaseDate": "2003-07-09",
+ "title": "Pirates of the Caribbean: The Curse of the Black Pearl",
+ "type": "file",
+ "voteAverage": 7.801
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 792,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wjt1dwtabVm9vujAteDTnXnpHfZ.jpg",
+ "genres": [
+ "Drama",
+ "War",
+ "Action"
+ ],
+ "id": "1mdrduYL1skcUJ0nQb8tcPdtM8Hw55-EP",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Platoon.1986.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "As a young and naive recruit in Vietnam, Chris Taylor faces a moral crisis when confronted with the horrors of war and the duality of man.",
+ "parents": [
+ "1mppmbBawszKk7BedW0CG7HDrJmtVkpVd"
+ ],
+ "popularity": 174.012,
+ "posterPath": "https://image.tmdb.org/t/p/w342/m3mmFkPQKvPZq5exmh0bDuXlD9T.jpg",
+ "releaseDate": "1986-12-19",
+ "title": "Platoon",
+ "type": "file",
+ "voteAverage": 7.746
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 128,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gl0jzn4BupSbL2qMVeqrjKkF9Js.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Animation"
+ ],
+ "id": "1KTDRBN7m_pXlCrgqFxTcHL4sJKAzGuNN",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Princess.Mononoke.1997.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Ashitaka, a prince of the disappearing Emishi people, is cursed by a demonized boar god and must journey to the west to find a cure. Along the way, he encounters San, a young human woman fighting to protect the forest, and Lady Eboshi, who is trying to destroy it. Ashitaka must find a way to bring balance to this conflict.",
+ "parents": [
+ "1r044VgiksP5VyS-ESYcu0KOpEHu7HwfK"
+ ],
+ "popularity": 46.505,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cMYCDADoLKLbB83g4WnJegaZimC.jpg",
+ "releaseDate": "1997-07-12",
+ "title": "Princess Mononoke",
+ "type": "file",
+ "voteAverage": 8.339
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 146233,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3RFmTz5h2UuFWEV4oH00XICBR9y.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1x-X-4z7qBx69NDbcbQGv9ew0PydNpcIH",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Prisoners.2013.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Keller Dover is facing a parent\u2019s worst nightmare: his young daughter and her friend have gone missing. Heading the investigation, Detective Loki arrests the only suspect \u2013 the driver of an RV on which the girls had been playing \u2013 but a lack of evidence forces his release. As pressure mounts, Loki\u2019s team pursues multiple leads while a frantic Dover decides he has no choice but to take matters into his own hands.",
+ "parents": [
+ "19byQc7IKPjmZzsKarK3cOTgzBM0Iw1j8"
+ ],
+ "popularity": 70.424,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uhviyknTT5cEQXbn6vWIqfM4vGm.jpg",
+ "releaseDate": "2013-09-19",
+ "title": "Prisoners",
+ "type": "file",
+ "voteAverage": 8.096
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 539,
+ "backdropPath": "https://image.tmdb.org/t/p/original/uif5fUshJrXyyDzfpzp1DLw3N0S.jpg",
+ "genres": [
+ "Horror",
+ "Thriller",
+ "Mystery"
+ ],
+ "id": "1FMEH8Xd2r1ruKIZ4wWecEvfQnNsAOBmC",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Psycho.1960.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "When larcenous real estate clerk Marion Crane goes on the lam with a wad of cash and hopes of starting a new life, she ends up at the notorious Bates Motel, where manager Norman Bates cares for his housebound mother.",
+ "parents": [
+ "1yHZcS7M9TywVuYDJsO_fHJ_j_slEsH7_"
+ ],
+ "popularity": 151.577,
+ "posterPath": "https://image.tmdb.org/t/p/w342/yz4QVqPx3h1hD1DfqqQkCq3rmxW.jpg",
+ "releaseDate": "1960-06-22",
+ "title": "Psycho",
+ "type": "file",
+ "voteAverage": 8.434
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 680,
+ "backdropPath": "https://image.tmdb.org/t/p/original/suaEOtk1N1sgg2MTM7oZd2cfVp3.jpg",
+ "genres": [
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1uICTYI8BUN5BcCh-UE1shmJ35F6BGNED",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Pulp.Fiction.1994.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "A burger-loving hit man, his philosophical partner, a drug-addled gangster's moll and a washed-up boxer converge in this sprawling, comedic crime caper. Their adventures unfurl in three stories that ingeniously trip back and forth in time.",
+ "parents": [
+ "1DxgixjnM1rQXMevHWrTygd1vFS_kKxCu"
+ ],
+ "popularity": 354.718,
+ "posterPath": "https://image.tmdb.org/t/p/w342/d5iIlFn5s0ImszYzBPb8JPIfbXD.jpg",
+ "releaseDate": "1994-09-10",
+ "title": "Pulp Fiction",
+ "type": "file",
+ "voteAverage": 8.489
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1578,
+ "backdropPath": "https://image.tmdb.org/t/p/original/aAStHDJgD97k4g4Zf0NLqbAmrvZ.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1_zf-mK2H12sfLr-zg2yroG4plAMowjvQ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Raging.Bull.1980.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "The life of boxer Jake LaMotta, whose violence and temper that led him to the top in the ring destroyed his life outside of it.",
+ "parents": [
+ "18Ea7OUsU6dAAzI3ialVT5t8cNKZgvulO"
+ ],
+ "popularity": 54.814,
+ "posterPath": "https://image.tmdb.org/t/p/w342/d7Okds2lx0MwwwDdtEAjFdrnJZS.jpg",
+ "releaseDate": "1980-11-14",
+ "title": "Raging Bull",
+ "type": "file",
+ "voteAverage": 7.938
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11645,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8wdxa4JgiAXvITgqkra1W0Dpii5.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "History"
+ ],
+ "id": "1XKzfrdhZRy9VoLJgoTu62wpkk5fiwW9A",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Ran.1985.REMASTERED.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "With Ran, legendary director Akira Kurosawa reimagines Shakespeare's King Lear as a singular historical epic set in sixteenth-century Japan. Majestic in scope, the film is Kurosawa's late-life masterpiece, a profound examination of the folly of war and the crumbling of one family under the weight of betrayal, greed, and the insatiable thirst for power.",
+ "parents": [
+ "1wDGVmnt20pB_UXMkw649BgKLXOTRIBX2"
+ ],
+ "popularity": 20.349,
+ "posterPath": "https://image.tmdb.org/t/p/w342/jQnUtWaHYfqnXPOIf77K7Ycqk4M.jpg",
+ "releaseDate": "1985-06-01",
+ "title": "Ran",
+ "type": "file",
+ "voteAverage": 8.074
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 548,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zyO6j74DKMWfp5snWg6Hwo0T3Mz.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Mystery"
+ ],
+ "id": "1SwC12GcMEEu9OIC79aBSxUuC47PX5KF0",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Rashomon.1950.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Brimming with action while incisively examining the nature of truth, \"Rashomon\" is perhaps the finest film ever to investigate the philosophy of justice. Through an ingenious use of camera and flashbacks, Kurosawa reveals the complexities of human nature as four people recount different versions of the story of a man's murder and the rape of his wife.",
+ "parents": [
+ "1sVkhkkoS9DM_l9lpK8_o_dR5gCBpM4C5"
+ ],
+ "popularity": 17.2,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vL7Xw04nFMHwnvXRFCmYYAzMUvY.jpg",
+ "releaseDate": "1950-08-26",
+ "title": "Rashomon",
+ "type": "file",
+ "voteAverage": 8.1
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 2062,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xgDj56UWyeWQcxQ44f5A3RTWuSs.jpg",
+ "genres": [
+ "Animation",
+ "Comedy",
+ "Family",
+ "Fantasy"
+ ],
+ "id": "1Q5iRP01wKGv2VgK9XFdMU7tdqNwBXEzb",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Ratatouille.2007.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Remy, a resident of Paris, appreciates good food and has quite a sophisticated palate. He would love to become a chef so he can create and enjoy culinary masterpieces to his heart's delight. The only problem is, Remy is a rat. When he winds up in the sewer beneath one of Paris' finest restaurants, the rodent gourmet finds himself ideally placed to realize his dream.",
+ "parents": [
+ "182deg8KYu07q0uWfBa39HdcgEeQgHP1B"
+ ],
+ "popularity": 96.432,
+ "posterPath": "https://image.tmdb.org/t/p/w342/t3vaWRPSf6WjDSamIkKDs1iQWna.jpg",
+ "releaseDate": "2007-06-21",
+ "title": "Ratatouille",
+ "type": "file",
+ "voteAverage": 7.82
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 567,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8aEe01VfGtYG2dFy9V5MqyyNPlh.jpg",
+ "genres": [
+ "Thriller",
+ "Mystery"
+ ],
+ "id": "1Vo1kOCfKiiOrCSmjJedI7YsIFD8FAIXf",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Rear.Window.1954.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A wheelchair-bound photographer spies on his neighbors from his apartment window and becomes convinced one of them has committed murder.",
+ "parents": [
+ "13UuglOBTn0o1DYJhhpbI-YjrI6frUv3x"
+ ],
+ "popularity": 50.086,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ILVF0eJxHMddjxeQhswFtpMtqx.jpg",
+ "releaseDate": "1954-08-01",
+ "title": "Rear Window",
+ "type": "file",
+ "voteAverage": 8.351
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 223,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jKgLVAhoq4fXBs1C9Gjvap93fxd.jpg",
+ "genres": [
+ "Mystery",
+ "Romance",
+ "Thriller"
+ ],
+ "id": "1205cp2YMZFz29eTnC956GawJAb9HYO4S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Rebecca.1940.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Story of a young woman who marries a fascinating widower only to find out that she must live in the shadow of his former wife, Rebecca, who died mysteriously several years earlier. The young wife must come to grips with the terrible secret of her handsome, cold husband, Max De Winter. She must also deal with the jealous, obsessed Mrs. Danvers, the housekeeper, who will not accept her as the mistress of the house.",
+ "parents": [
+ "1UepoVcTkNuDkp7Nr1rPX-F4ZIob9_TGN"
+ ],
+ "popularity": 27.624,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1qz3qUOHnVy7dL7M7G8jSErxE4b.jpg",
+ "releaseDate": "1940-03-23",
+ "title": "Rebecca",
+ "type": "file",
+ "voteAverage": 7.92
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1-qmbMqVQeUNQbUOolZBbUr-DOm98iNFL",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Requiem.For.A.Dream.DIRECTORS.CUT.2000.1080p.BrRip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1Dre_T4SLjxvHXtkgplV-G361XGwCXFv2"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "2000-01-01",
+ "title": "Requiem For A Dream DIRECTORS CUT",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 500,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jqFjgNnxpXIXWuPsyfqmcLXRo9p.jpg",
+ "genres": [
+ "Crime",
+ "Thriller"
+ ],
+ "id": "1DgUKDzYJpOFUm8v2yTMGsOT8CgOMx67l",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Reservoir Dogs.1992.BluRay.1080p.x264.YIFY.mp4",
+ "overview": "A botched robbery indicates a police informant, and the pressure mounts in the aftermath at a warehouse. Crime begets violence as the survivors -- veteran Mr. White, newcomer Mr. Orange, psychopathic parolee Mr. Blonde, bickering weasel Mr. Pink and Nice Guy Eddie -- unravel.",
+ "parents": [
+ "15mLam_wQkStJUjzYO1SkFAfBQvDZO9sb"
+ ],
+ "popularity": 72.398,
+ "posterPath": "https://image.tmdb.org/t/p/w342/xi8Iu6qyTfyZVDVy60raIOYJJmk.jpg",
+ "releaseDate": "1992-09-02",
+ "title": "Reservoir Dogs",
+ "type": "file",
+ "voteAverage": 8.128
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1366,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kK9v1wclQxug6ZUJucD4DTaHgVF.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1iUFE-eu_4dO4IYDucYJxE0P-v5v0BN1b",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Rocky.1976.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "An uneducated collector for a Philadelphia loan shark is given a once-in-a-lifetime opportunity to fight against the world heavyweight boxing champion.",
+ "parents": [
+ "1YOpU4QAWjsOInrJILB7rNmCX3RqKOV7R"
+ ],
+ "popularity": 364.645,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cqxg1CihGR5ge0i1wYXr4Rdeppu.jpg",
+ "releaseDate": "1976-11-20",
+ "title": "Rocky",
+ "type": "file",
+ "voteAverage": 7.789
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 264644,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8J26Cw50hW11dBJSKycQayOa2RZ.jpg",
+ "genres": [
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1n3meBZ8kCtqvGEzuDrbfiiDja0Y1xCWA",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Room.2015.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Held captive for 7 years in an enclosed space, a woman and her young son finally gain their freedom, allowing the boy to experience the outside world for the first time.",
+ "parents": [
+ "1Trvyi8tP0HFiKptOqxfhCzsluY98x7Ny"
+ ],
+ "popularity": 29.366,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dIxoYFcj6EqD5KScuU8lWCftnvH.jpg",
+ "releaseDate": "2015-10-16",
+ "title": "Room",
+ "type": "file",
+ "voteAverage": 8.024
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 96721,
+ "backdropPath": "https://image.tmdb.org/t/p/original/caKZWDGmv5iW2U99skHs75MmOmU.jpg",
+ "genres": [
+ "Drama",
+ "Action"
+ ],
+ "id": "1w-5As82nW8ZgyfUPu1Rnh_m1nQ0awXpb",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Rush.2013.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "In the 1970s, a rivalry propels race car drivers Niki Lauda and James Hunt to fame and glory \u2014 until a horrible accident threatens to end it all.",
+ "parents": [
+ "1_iFWDwJjm9iNXQtNAAfwUVVZGf6nxNSn"
+ ],
+ "popularity": 41.699,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5akKFgS7eeXUw9rKTEujryKrH17.jpg",
+ "releaseDate": "2013-09-02",
+ "title": "Rush",
+ "type": "file",
+ "voteAverage": 7.722
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 857,
+ "backdropPath": "https://image.tmdb.org/t/p/original/rW2xRFlJRbTnBJlQTSjQmjevIwb.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1jnlp_sKcEbO9fSalaZj1KBb9I87QRGOp",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Saving.Private.Ryan.1998.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "As U.S. troops storm the beaches of Normandy, three brothers lie dead on the battlefield, with a fourth trapped behind enemy lines. Ranger captain John Miller and seven men are tasked with penetrating German-held territory and bringing the boy home.",
+ "parents": [
+ "1QwZqx515AC-1guR5rBOUVjTPCk1SDYlt"
+ ],
+ "popularity": 117.929,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uqx37cS8cpHg8U35f9U5IBlrCV3.jpg",
+ "releaseDate": "1998-07-24",
+ "title": "Saving Private Ryan",
+ "type": "file",
+ "voteAverage": 8.215
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 111,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sctvs9cUwJD15qlTlrsh2BXsK75.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Drama"
+ ],
+ "id": "1kuOzWwB6Pm2AnQwtiQVMb8EVanN-_IV6",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Scarface.1983.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "After getting a green card in exchange for assassinating a Cuban government official, Tony Montana stakes a claim on the drug trade in Miami. Viciously murdering anyone who stands in his way, Tony eventually becomes the biggest drug lord in the state, controlling nearly all the cocaine that comes through Miami. But increased pressure from the police, wars with Colombian drug cartels and his own drug-fueled paranoia serve to fuel the flames of his eventual downfall.",
+ "parents": [
+ "1k9TfYU65uMZtLPJIKzABeP-AVeqPr5ku"
+ ],
+ "popularity": 273.14,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iQ5ztdjvteGeboxtmRdXEChJOHh.jpg",
+ "releaseDate": "1983-12-09",
+ "title": "Scarface",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 424,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zb6fM1CX41D9rF9hdgclu0peUmy.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1Xd9xBGpgcpGbN8MY4_gcEUbnNfcX1_wM",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Schindlers.List.1993.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "The true story of how businessman Oskar Schindler saved over a thousand Jewish lives from the Nazis while they worked as slaves in his factory during World War II.",
+ "parents": [
+ "1kTGwFcACvLpQVwCy-U_xIwzqkO8NCIJO"
+ ],
+ "popularity": 69.043,
+ "posterPath": "https://image.tmdb.org/t/p/w342/sF1U4EUQS8YHUYjNl3pMGNIQyr0.jpg",
+ "releaseDate": "1993-12-15",
+ "title": "Schindler's List",
+ "type": "file",
+ "voteAverage": 8.567
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1VNDYgRItM4E6bPfrC8L-P-hzRIhyoTyH",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Se7en(1995)1080p.BrRip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1LY4jqLve87ShWgUkjTaox8d9XzrSTbeU"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "1900-01-01",
+ "title": "Se7en(1995)1080p.BrRip.x264.YIFY",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 346,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qvZ91FwMq6O47VViAr8vZNQz3WI.jpg",
+ "genres": [
+ "Action",
+ "Drama"
+ ],
+ "id": "1_7HFLukiyvsptGw-S-3vuOt7SHQNT3DG",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Seven.Samurai.1954.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A samurai answers a village's request for protection after he falls on hard times. The town needs protection from bandits, so the samurai gathers six others to help him teach the people how to defend themselves, and the villagers provide the soldiers with food.",
+ "parents": [
+ "1OLBwBZs0TFBcc_w6xfrwpG74Qkp00mjY"
+ ],
+ "popularity": 45.555,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8OKmBV5BUFzmozIC3pPWKHy17kx.jpg",
+ "releaseDate": "1954-04-26",
+ "title": "Seven Samurai",
+ "type": "file",
+ "voteAverage": 8.456
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 992,
+ "backdropPath": "https://image.tmdb.org/t/p/original/dRKCNvOjXkRTIA3D3KAve7GRu4k.jpg",
+ "genres": [
+ "Action",
+ "Comedy",
+ "Mystery"
+ ],
+ "id": "1jAJrOaWSiAugjGQjvIyRuseX2OH7MjNG",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Sherlock.Jr..1924.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A film projectionist longs to be a detective, and puts his meagre skills to work when he is framed by a rival for stealing his girlfriend's father's pocketwatch.",
+ "parents": [
+ "1PRoJW8yXio2TgX8DwuwmWfCs-cTUJAvj"
+ ],
+ "popularity": 17.863,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1G9r3rqtbFAQuyWKOZm4Y5J5s7Q.jpg",
+ "releaseDate": "1924-04-17",
+ "title": "Sherlock Jr.",
+ "type": "file",
+ "voteAverage": 8.074
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11324,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ecvy2kMxsJ60ej52beZ0F8EOGkL.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Mystery"
+ ],
+ "id": "1UuACpbK-ntATOBlcjYH3q4ZRLNGJ5m1_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Shutter.Island.2010.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "World War II soldier-turned-U.S. Marshal Teddy Daniels investigates the disappearance of a patient from a hospital for the criminally insane, but his efforts are compromised by troubling visions and a mysterious doctor.",
+ "parents": [
+ "16kP6oLPHLI3gPSlXmhJik4HGR8KaKPeN"
+ ],
+ "popularity": 82.359,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4GDy0PHYX3VRXUtwK5ysFbg3kEx.jpg",
+ "releaseDate": "2010-02-14",
+ "title": "Shutter Island",
+ "type": "file",
+ "voteAverage": 8.203
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 872,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mxf8hJJkHTCqZP3m4o8E1TtwHHs.jpg",
+ "genres": [
+ "Comedy",
+ "Romance"
+ ],
+ "id": "1ZoIAglB1YwwqS_F6avST-4RyfAix28XY",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Singin'.In.The.Rain.1952.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "In 1927 Hollywood, a silent film production company and cast make a difficult transition to sound.",
+ "parents": [
+ "11CNHehN1gRvrjc5sfQP6yla8pqQoROwL"
+ ],
+ "popularity": 35.803,
+ "posterPath": "https://image.tmdb.org/t/p/w342/w03EiJVHP8Un77boQeE7hg9DVdU.jpg",
+ "releaseDate": "1952-04-09",
+ "title": "Singin' in the Rain",
+ "type": "file",
+ "voteAverage": 8.16
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 107,
+ "backdropPath": "https://image.tmdb.org/t/p/original/oamoFZS2ok4JCIgsWu5lOC6rAr4.jpg",
+ "genres": [
+ "Crime",
+ "Comedy"
+ ],
+ "id": "13Sb315LLHwa8kGwy1acvKKqoJqmY9REY",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Snatch.2000.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Unscrupulous boxing promoters, violent bookmakers, a Russian gangster, incompetent amateur robbers and supposedly Jewish jewelers fight to track down a priceless stolen diamond.",
+ "parents": [
+ "1Gdt0joUuHugFR3F2qYPbytEe8lE1untd"
+ ],
+ "popularity": 82.066,
+ "posterPath": "https://image.tmdb.org/t/p/w342/56mOJth6DJ6JhgoE2jtpilVqJO.jpg",
+ "releaseDate": "2000-09-01",
+ "title": "Snatch",
+ "type": "file",
+ "voteAverage": 7.811
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 239,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5zTwAcnI3zCJ0mucPPnoBtkSWEV.jpg",
+ "genres": [
+ "Comedy",
+ "Romance",
+ "Crime"
+ ],
+ "id": "1rjya8olZF31Ekl5lstQyIJtOhvGjdLfs",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Some.Like.It.Hot.1959.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Two musicians witness a mob hit and struggle to find a way out of the city before they are found by the gangsters. Their only opportunity is to join an all-girl band as they leave on a tour. To make their getaway they must first disguise themselves as women, then keep their identities secret and deal with the problems this brings - such as an attractive bandmate and a very determined suitor.",
+ "parents": [
+ "144eabiwfJxxNVxw-TmPiGCzkU1MwgWCs"
+ ],
+ "popularity": 36.657,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hVIKyTK13AvOGv7ICmJjK44DTzp.jpg",
+ "releaseDate": "1959-03-19",
+ "title": "Some Like It Hot",
+ "type": "file",
+ "voteAverage": 8.099
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 569094,
+ "backdropPath": "https://image.tmdb.org/t/p/original/4HodYYKEIsGOdinkGi2Ucz6X9i0.jpg",
+ "genres": [
+ "Animation",
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1W2fi52OQB2TgvDDGeTG-eZAMtyY09Sy-",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Spider-Man.Across.The.Spider-Verse.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After reuniting with Gwen Stacy, Brooklyn\u2019s full-time, friendly neighborhood Spider-Man is catapulted across the Multiverse, where he encounters the Spider Society, a team of Spider-People charged with protecting the Multiverse\u2019s very existence. But when the heroes clash on how to handle a new threat, Miles finds himself pitted against the other Spiders and must set out on his own to save those he loves most.",
+ "parents": [
+ "1dx4DO9qXlgd1UkxHeVixMfjMvHzVuIIT"
+ ],
+ "popularity": 184.071,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8Vt6mWEReuy4Of61Lnj5Xj704m8.jpg",
+ "releaseDate": "2023-05-31",
+ "title": "Spider-Man: Across the Spider-Verse",
+ "type": "file",
+ "voteAverage": 8.363
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 324857,
+ "backdropPath": "https://image.tmdb.org/t/p/original/b9YkKJcW3pPaXgMZu9uoT7v9yRB.jpg",
+ "genres": [
+ "Animation",
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1SmecEn1XWIItziVHcxkN-qN4BQlRvktd",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Spider-Man.Into.The.Spider-Verse.2018.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Struggling to find his place in the world while juggling school and family, Brooklyn teenager Miles Morales is unexpectedly bitten by a radioactive spider and develops unfathomable powers just like the one and only Spider-Man. While wrestling with the implications of his new abilities, Miles discovers a super collider created by the madman Wilson \"Kingpin\" Fisk, causing others from across the Spider-Verse to be inadvertently transported to his dimension.",
+ "parents": [
+ "1x3prjCEcZEPw6vzKAGs6UE3I7oa9rFDS"
+ ],
+ "popularity": 93.183,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iiZZdoQBEYBv6id8su7ImL0oCbD.jpg",
+ "releaseDate": "2018-12-06",
+ "title": "Spider-Man: Into the Spider-Verse",
+ "type": "file",
+ "voteAverage": 8.404
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 634649,
+ "backdropPath": "https://image.tmdb.org/t/p/original/14QbnygCuTO0vl7CAFmPf1fgZfV.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1704b7DJgHzgxEz8aYWDlYAaccFixOu6l",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Spider-Man.No.Way.Home.2021.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Peter Parker is unmasked and no longer able to separate his normal life from the high-stakes of being a super-hero. When he asks for help from Doctor Strange the stakes become even more dangerous, forcing him to discover what it truly means to be Spider-Man.",
+ "parents": [
+ "1AdqFJg_X8FnOIisBnTd2NI59UvD6Ta4H"
+ ],
+ "popularity": 235.964,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1g0dhYtq4irTY1GPXvft6k4YLjm.jpg",
+ "releaseDate": "2021-12-15",
+ "title": "Spider-Man: No Way Home",
+ "type": "file",
+ "voteAverage": 7.966
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 129,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mSDsSDwaP3E7dEfUPWy4J0djt4O.jpg",
+ "genres": [
+ "Animation",
+ "Family",
+ "Fantasy"
+ ],
+ "id": "19tFeezP_zlMN77l4S2IttpRFp_y8qCPr",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Spirited.Away.2001.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A young girl, Chihiro, becomes trapped in a strange new world of spirits. When her parents undergo a mysterious transformation, she must call upon the courage she never knew she had to free her family.",
+ "parents": [
+ "1ksnjcJeWE-r0LOcOFjYm2m7PPfMdlIiX"
+ ],
+ "popularity": 95.953,
+ "posterPath": "https://image.tmdb.org/t/p/w342/39wmItIWsg5sZMyRUHLkWBcuVCM.jpg",
+ "releaseDate": "2001-07-20",
+ "title": "Spirited Away",
+ "type": "file",
+ "voteAverage": 8.537
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 314365,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8FbbcmwmpGd7brfiC7f7lWFNGdi.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1CXfeFy0AQsFQ2WXtCjeLRuQSrbwvSjy7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Spotlight.2015.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "The true story of how the Boston Globe uncovered the massive scandal of child molestation and cover-up within the local Catholic Archdiocese, shaking the entire Catholic Church to its core.",
+ "parents": [
+ "1D3B-owQ1ujPZsQU_fDouv7VhCXElIYt9"
+ ],
+ "popularity": 47.145,
+ "posterPath": "https://image.tmdb.org/t/p/w342/olYvlO7lZLpUM62w1LYnAgdd6CD.jpg",
+ "releaseDate": "2015-11-06",
+ "title": "Spotlight",
+ "type": "file",
+ "voteAverage": 7.817
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 235,
+ "backdropPath": "https://image.tmdb.org/t/p/original/yjGllQUm28R4X9xD9T5xMszirgw.jpg",
+ "genres": [
+ "Crime",
+ "Drama"
+ ],
+ "id": "1Hhko9XflmScwjL-dDcFxVpEa_4G3ao41",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Stand.by.Me.1986.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "After learning that a boy their age has been accidentally killed near their rural homes, four Oregon boys decide to go see the body. On the way, Gordie, Vern, Chris and Teddy encounter a mean junk man and a marsh full of leeches, as they also learn more about one another and their very different home lives. Just a lark at first, the boys' adventure evolves into a defining event in their lives.",
+ "parents": [
+ "1zMMd4HKIrr1Nkckt31tcLuoLBu4wjX1y"
+ ],
+ "popularity": 271.207,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vz0w9BSehcqjDcJOjRaCk7fgJe7.jpg",
+ "releaseDate": "1986-08-08",
+ "title": "Stand by Me",
+ "type": "file",
+ "voteAverage": 7.856
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11,
+ "backdropPath": "https://image.tmdb.org/t/p/original/4qCqAdHcNKeAHcK8tJ8wNJZa9cx.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "11RZEsQMC_RKQIV-K4-o-dsU7vqjg8TR8",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Star.Wars.Episode.4.A.New.Hope.1977.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Princess Leia is captured and held hostage by the evil Imperial forces in their effort to take over the galactic Empire. Venturesome Luke Skywalker and dashing captain Han Solo team together with the loveable robot duo R2-D2 and C-3PO to rescue the beautiful princess and restore peace and justice in the Empire.",
+ "parents": [
+ "1w_uVyTPgaJHbW4_4UItmFFr5tsAkpf1R"
+ ],
+ "popularity": 385.7,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6FfCtAuVAW8XJjZ7eWeLibRLWTw.jpg",
+ "releaseDate": "1977-05-25",
+ "title": "Star Wars",
+ "type": "file",
+ "voteAverage": 8.204
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1891,
+ "backdropPath": "https://image.tmdb.org/t/p/original/aJCtkxLLzkk1pECehVjKHA2lBgw.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "13-JIxDDDSrkov7-znUDciuZlCvyywxHv",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Star.Wars.Episode.5.The.Empire.Strikes.Back.1980.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "The epic saga continues as Luke Skywalker, in hopes of defeating the evil Galactic Empire, learns the ways of the Jedi from aging master Yoda. But Darth Vader is more determined than ever to capture Luke. Meanwhile, rebel leader Princess Leia, cocky Han Solo, Chewbacca, and droids C-3PO and R2-D2 are thrown into various stages of capture, betrayal and despair.",
+ "parents": [
+ "12ZkLyoC1CYzNfYMh0Ai1nh5LGWCCtY4C"
+ ],
+ "popularity": 39.355,
+ "posterPath": "https://image.tmdb.org/t/p/w342/nNAeTmF4CtdSgMDplXTDPOpYzsX.jpg",
+ "releaseDate": "1980-05-20",
+ "title": "The Empire Strikes Back",
+ "type": "file",
+ "voteAverage": 8.39
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1892,
+ "backdropPath": "https://image.tmdb.org/t/p/original/soJdiy91Mcyj29GzEgZ5svFcuZg.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "1UWmq-COg9kALparY3lbPRkRBnZLcKoIQ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Star.Wars.Episode.6.Return.of.the.Jedi.1983.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Luke Skywalker leads a mission to rescue his friend Han Solo from the clutches of Jabba the Hutt, while the Emperor seeks to destroy the Rebellion once and for all with a second dreaded Death Star.",
+ "parents": [
+ "1Js0qJz-TJ8ReTDL9EjJmCBS_TBuJSYZc"
+ ],
+ "popularity": 189.009,
+ "posterPath": "https://image.tmdb.org/t/p/w342/40HKwFzsPoukpQVYcM1bSWQWNkX.jpg",
+ "releaseDate": "1983-05-25",
+ "title": "Return of the Jedi",
+ "type": "file",
+ "voteAverage": 7.894
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 599,
+ "backdropPath": "https://image.tmdb.org/t/p/original/p47ihFj4A7EpBjmPHdTj4ipyq1S.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "101vDDW5B2pGyCVMCvGv9OipxnY7tKjqz",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Sunset.Boulevard.1950.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A hack screenwriter writes a screenplay for a former silent film star who has faded into Hollywood obscurity.",
+ "parents": [
+ "1O7Xvt9hqMsdyq28hhV9wIm-Qe37-N-H1"
+ ],
+ "popularity": 46.939,
+ "posterPath": "https://image.tmdb.org/t/p/w342/sC4Dpmn87oz9AuxZ15Lmip0Ftgr.jpg",
+ "releaseDate": "1950-08-10",
+ "title": "Sunset Boulevard",
+ "type": "file",
+ "voteAverage": 8.311
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 103,
+ "backdropPath": "https://image.tmdb.org/t/p/original/6aoyUbvu0419XLKLIMoH0TkEicH.jpg",
+ "genres": [
+ "Crime",
+ "Drama"
+ ],
+ "id": "1rsvnaD8hENK_9jj4FeSbwih98LljeUow",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Taxi.Driver.1976.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A mentally unstable Vietnam War veteran works as a night-time taxi driver in New York City where the perceived decadence and sleaze feed his urge for violent action.",
+ "parents": [
+ "1VRObyDwDUbG8ulVg7u3S3ypWbx94ubYc"
+ ],
+ "popularity": 306.81,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ekstpH614fwDX8DUln1a2Opz0N8.jpg",
+ "releaseDate": "1976-02-09",
+ "title": "Taxi Driver",
+ "type": "file",
+ "voteAverage": 8.152
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 280,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8MksSPtPvqcSDruLdpibPmTP7LY.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Science Fiction"
+ ],
+ "id": "1FLurA7Kl5Nshq8dTJe_JHZ2CppQYiyR-",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Terminator.2.1991.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Set ten years after the events of the original, James Cameron\u2019s classic sci-fi action flick tells the story of a second attempt to get the rid of rebellion leader John Connor, this time targeting the boy himself. However, the rebellion has sent a reprogrammed terminator to protect Connor.",
+ "parents": [
+ "1nzcQ8tmVclrwMy2mLpD0TEi2DdC6qHMw"
+ ],
+ "popularity": 100.441,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5M0j0B18abtBI5gi2RhfjjurTqb.jpg",
+ "releaseDate": "1991-07-03",
+ "title": "Terminator 2: Judgment Day",
+ "type": "file",
+ "voteAverage": 8.116
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 284,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1HSgkvoOyr47cSNKgDLbRYhEoMq.jpg",
+ "genres": [
+ "Comedy",
+ "Drama",
+ "Romance"
+ ],
+ "id": "1McYB1U9zmmm7RaQM48opvP-e83nVOdvM",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Apartment.1960.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Bud Baxter is a minor clerk in a huge New York insurance company, until he discovers a quick way to climb the corporate ladder. He lends out his apartment to the executives as a place to take their mistresses. Although he often has to deal with the aftermath of their visits, one night he's left with a major problem to solve.",
+ "parents": [
+ "1wKf6aNT0pRk4uzJlsZSQ_bqHvt1iTA5B"
+ ],
+ "popularity": 35.441,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hhSRt1KKfRT0yEhEtRW3qp31JFU.jpg",
+ "releaseDate": "1960-06-21",
+ "title": "The Apartment",
+ "type": "file",
+ "voteAverage": 8.205
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 17295,
+ "backdropPath": "https://image.tmdb.org/t/p/original/A5sZ1OxIH5StZgqBE9MslgsWjK6.jpg",
+ "genres": [
+ "Drama",
+ "War",
+ "History"
+ ],
+ "id": "1QjW2ygjt_Amos1ouXtYTuUzntbM9O2k8",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "The.Battle.Of.Algiers.1966.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "Tracing the struggle of the Algerian Front de Liberation Nationale to gain freedom from French colonial rule as seen through the eyes of Ali from his start as a petty thief to his rise to prominence in the organisation and capture by the French in 1957. The film traces the rebels' struggle and the increasingly extreme measures taken by the French government to quell the revolt.",
+ "parents": [
+ "1AOZlGtkdyr6lQckhcSixEft94Fg83JOh"
+ ],
+ "popularity": 11.124,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1eEN4ubAFB4N2Rl9syqPVCcwrGG.jpg",
+ "releaseDate": "1966-09-08",
+ "title": "The Battle of Algiers",
+ "type": "file",
+ "voteAverage": 7.881
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 887,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nCl5KzxUs4rVVlAdixDf4r5AbbZ.jpg",
+ "genres": [
+ "Drama",
+ "Romance",
+ "War"
+ ],
+ "id": "1gNV26Dv_O7fse5usJkoxUEoOktL3fOFc",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Best.Years.Of.Our.Lives.1946.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "It's the hope that sustains the spirit of every GI: the dream of the day when he will finally return home. For three WWII veterans, the day has arrived. But for each man, the dream is about to become a nightmare.",
+ "parents": [
+ "1fnk2lKOvK6DBS5F866tuiqPRP5m0-9EC"
+ ],
+ "popularity": 20.02,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gd5EoAU4MM57sW3vlWxJ0NMM8cV.jpg",
+ "releaseDate": "1946-12-25",
+ "title": "The Best Years of Our Lives",
+ "type": "file",
+ "voteAverage": 7.792
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 115,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nevS6wjzCxZESvmjJZqdyZ3RNQ6.jpg",
+ "genres": [
+ "Comedy",
+ "Crime"
+ ],
+ "id": "1WfhBhwL7ohfSD_l6tnDA5P_hRnuyNWty",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Big.Lebowski.1998.1080p.BrRip.x264.YIFY+HI.mp4",
+ "overview": "Jeffrey 'The Dude' Lebowski, a Los Angeles slacker who only wants to bowl and drink White Russians, is mistaken for another Jeffrey Lebowski, a wheelchair-bound millionaire, and finds himself dragged into a strange series of events involving nihilists, adult film producers, ferrets, errant toes, and large sums of money.",
+ "parents": [
+ "1LeOiPDcGqY5zDSWBVkSPgBMierfRi2-F"
+ ],
+ "popularity": 39.723,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9mprbw31MGdd66LR0AQKoDMoFRv.jpg",
+ "releaseDate": "1998-03-06",
+ "title": "The Big Lebowski",
+ "type": "file",
+ "voteAverage": 7.846
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 826,
+ "backdropPath": "https://image.tmdb.org/t/p/original/liZhDhrrNVX8IK4TaeaFodzMamy.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1pbQNWuU1J3gmVqSluZxc-BuFQVGJGPwM",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Bridge.on.the.River.Kwai.1957.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "The classic story of English POWs in Burma forced to build a bridge to aid the war effort of their Japanese captors. British and American intelligence officers conspire to blow up the structure, but Col. Nicholson, the commander who supervised the bridge's construction, has acquired a sense of pride in his creation and tries to foil their plans.",
+ "parents": [
+ "1aIcHJuVBiGoffxA5Gy93KNoXIpP-OFJj"
+ ],
+ "popularity": 33.307,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7paXMt2e3Tr5dLmEZOGgFEn2Vo7.jpg",
+ "releaseDate": "1957-10-11",
+ "title": "The Bridge on the River Kwai",
+ "type": "file",
+ "voteAverage": 7.828
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 49026,
+ "backdropPath": "https://image.tmdb.org/t/p/original/c3OHQncTAnKFhdOTX7D3LTW6son.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1u07kFu91PZiKdQYoVqgCcYE8WSKlkYqN",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Dark.Knight.Rises.2012.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Following the death of District Attorney Harvey Dent, Batman assumes responsibility for Dent's crimes to protect the late attorney's reputation and is subsequently hunted by the Gotham City Police Department. Eight years later, Batman encounters the mysterious Selina Kyle and the villainous Bane, a new terrorist leader who overwhelms Gotham's finest. The Dark Knight resurfaces to protect a city that has branded him an enemy.",
+ "parents": [
+ "10Y2JLDiBbSNqX_Ju7TYoQBvclKOfX1Bl"
+ ],
+ "popularity": 82.951,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hr0L2aueqlP2BYUblTTjmtn0hw4.jpg",
+ "releaseDate": "2012-07-17",
+ "title": "The Dark Knight Rises",
+ "type": "file",
+ "voteAverage": 7.78
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11778,
+ "backdropPath": "https://image.tmdb.org/t/p/original/a5zBQfXmLk3qqRYF7AioWpiAxk2.jpg",
+ "genres": [
+ "Drama",
+ "War"
+ ],
+ "id": "19748yqe1rKVhn2lnlM0or8kBWdDRIfmp",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Deer.Hunter.1978.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A group of working-class friends decide to enlist in the Army during the Vietnam War and finds it to be hellish chaos -- not the noble venture they imagined. Before they left, Steven married his pregnant girlfriend -- and Michael and Nick were in love with the same woman. But all three are different men upon their return.",
+ "parents": [
+ "1i5PWjk03o9zHPnLZvGcvXwu21YbaBI48"
+ ],
+ "popularity": 28.478,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bbGtogDZOg09bm42KIpCXUXICkh.jpg",
+ "releaseDate": "1978-12-08",
+ "title": "The Deer Hunter",
+ "type": "file",
+ "voteAverage": 8.012
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1422,
+ "backdropPath": "https://image.tmdb.org/t/p/original/6WRrGYalXXveItfpnipYdayFkQB.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1l3xhSTBHpJm-mFOPFL70FjYKHPHdfQnX",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Departed.2006.BluRay.1080p.x264.YIFY.mp4",
+ "overview": "To take down South Boston's Irish Mafia, the police send in one of their own to infiltrate the underworld, not realizing the syndicate has done likewise. While an undercover cop curries favor with the mob kingpin, a career criminal rises through the police ranks. But both sides soon discover there's a mole among them.",
+ "parents": [
+ "15Xa6Wb9PQ0poKSICDNkei_-Uw97eziJq"
+ ],
+ "popularity": 158.527,
+ "posterPath": "https://image.tmdb.org/t/p/w342/nT97ifVT2J1yMQmeq20Qblg61T.jpg",
+ "releaseDate": "2006-10-04",
+ "title": "The Departed",
+ "type": "file",
+ "voteAverage": 8.168
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1955,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hKpzq3U7X1C1lqnYh0WQwlPyxO5.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1mWG5yTS5pXZrCRYdwFBhT6A_dfCjIFfN",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Elephant.Man.1980.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A Victorian surgeon rescues a heavily disfigured man being mistreated by his \"owner\" as a side-show freak. Behind his monstrous fa\u00e7ade, there is revealed a person of great intelligence and sensitivity. Based on the true story of Joseph Merrick (called John Merrick in the film), a severely deformed man in 19th century London.",
+ "parents": [
+ "1IppioWdoH7CizP-IQyMfqeux8XXuRanl"
+ ],
+ "popularity": 31.547,
+ "posterPath": "https://image.tmdb.org/t/p/w342/3SInR81qnXjY7Or5qXyiQLmWfEh.jpg",
+ "releaseDate": "1980-10-09",
+ "title": "The Elephant Man",
+ "type": "file",
+ "voteAverage": 8.045
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 9552,
+ "backdropPath": "https://image.tmdb.org/t/p/original/huC0x1don81NMreSGx4ITkrv9aG.jpg",
+ "genres": [
+ "Horror",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1ks1EBw1-bjMzw6_eb2ddvrlZz8ycyy97",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Exorcist.1973.1080p.BrRip.x264.bitloks.YIFY.mp4",
+ "overview": "When a charming 12-year-old girl takes on the characteristics and voices of others, doctors say there is nothing they can do. As people begin to die, the girl's mother realizes her daughter has been possessed by the devil--and that her daughter's only possible hope lies with two priests and the ancient rite of demonic exorcism.",
+ "parents": [
+ "1qjJ6TzcD4TDXAlYJ2T_TSpwGTImmTusK"
+ ],
+ "popularity": 59.988,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5x0CeVHJI8tcDx8tUUwYHQSNILq.jpg",
+ "releaseDate": "1973-12-26",
+ "title": "The Exorcist",
+ "type": "file",
+ "voteAverage": 7.732
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 600354,
+ "backdropPath": "https://image.tmdb.org/t/p/original/h3weAFgg06GqchI2xDfufBgSFTj.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1SZ055M2iW5RiqBq_oTgZVetYbhb-QflO",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Father.2020.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A man refuses all assistance from his daughter as he ages and, as he tries to make sense of his changing circumstances, he begins to doubt his loved ones, his own mind and even the fabric of his reality.",
+ "parents": [
+ "1zZfjx0Rh3ctvz6wcrwzYAAOmMetNSsh_"
+ ],
+ "popularity": 45.95,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pr3bEQ517uMb5loLvjFQi8uLAsp.jpg",
+ "releaseDate": "2020-12-23",
+ "title": "The Father",
+ "type": "file",
+ "voteAverage": 8.129
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 961,
+ "backdropPath": "https://image.tmdb.org/t/p/original/h68ilwiTesb5wmDgy2mHYkVuOBP.jpg",
+ "genres": [
+ "Comedy",
+ "Action",
+ "Adventure",
+ "War"
+ ],
+ "id": "1WCN1yVgICtZIOhUgAZhv40C0Q2ay1ECy",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.General.1926.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "During America\u2019s Civil War, Union spies steal engineer Johnny Gray's beloved locomotive, 'The General'\u2014with Johnnie's lady love aboard an attached boxcar\u2014and he single-handedly must do all in his power to both get The General back and to rescue Annabelle.",
+ "parents": [
+ "1jWxcGtJKi2Rveg33HCGpOz4i4thHHwgs"
+ ],
+ "popularity": 206.276,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4NmV1Wei4LxT2lpjViCAScgCZLq.jpg",
+ "releaseDate": "1926-12-25",
+ "title": "The General",
+ "type": "file",
+ "voteAverage": 7.966
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 238,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tmU7GeKVybMWFButWEGl2M4GeiP.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1JdE_M0IqOStYm9yVdp9vnGYWN2o8uXAJ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Godfather.1972.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Spanning the years 1945 to 1955, a chronicle of the fictional Italian-American Corleone crime family. When organized crime family patriarch, Vito Corleone barely survives an attempt on his life, his youngest son, Michael steps in to take care of the would-be killers, launching a campaign of bloody revenge.",
+ "parents": [
+ "1bCay-APF5djUGd1yJEQ270d6_iUnfL2t"
+ ],
+ "popularity": 128.992,
+ "posterPath": "https://image.tmdb.org/t/p/w342/3bhkrj58Vtu7enYsRolD1fZdja1.jpg",
+ "releaseDate": "1972-03-14",
+ "title": "The Godfather",
+ "type": "file",
+ "voteAverage": 8.7
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 240,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kGzFbGhp99zva6oZODW5atUtnqi.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1QDr4iabjdsD0bzv4BODxl1yQ-Euhql9S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Godfather.Part.2.1974.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "In the continuing saga of the Corleone crime family, a young Vito Corleone grows up in Sicily and in 1910s New York. In the 1950s, Michael Corleone attempts to expand the family business into Las Vegas, Hollywood and Cuba.",
+ "parents": [
+ "1hEQ4AxLIFTqllzSVmsR_GDaCYndO5tRQ"
+ ],
+ "popularity": 132.565,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hek3koDUyRQk7FIhPXsa6mT2Zc3.jpg",
+ "releaseDate": "1974-12-20",
+ "title": "The Godfather Part II",
+ "type": "file",
+ "voteAverage": 8.6
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 962,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hZHeDPQGNKN9NN9GuW7qVbM2tDx.jpg",
+ "genres": [
+ "Adventure",
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1WbederbuQ_567awhwNnEugaYXLOU_-GT",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Gold.Rush.1925.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A gold prospector in Alaska struggles to survive the elements and win the heart of a dance hall girl.",
+ "parents": [
+ "14-mwvATAcyJpQ7hspkfzKw-U3i8gbu_f"
+ ],
+ "popularity": 19.717,
+ "posterPath": "https://image.tmdb.org/t/p/w342/eQRFo1qwRREYwj47Yoe1PisgOle.jpg",
+ "releaseDate": "1925-07-12",
+ "title": "The Gold Rush",
+ "type": "file",
+ "voteAverage": 8.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 429,
+ "backdropPath": "https://image.tmdb.org/t/p/original/Adrip2Jqzw56KeuV2nAxucKMNXA.jpg",
+ "genres": [
+ "Western"
+ ],
+ "id": "1g1GY-w_sL6aey4sYGE7JkbnPAgDlVe0Y",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "The.Good.The.Bad.And.The.Ugly.1966.REMASTERED.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "While the Civil War rages on between the Union and the Confederacy, three men \u2013 a quiet loner, a ruthless hitman, and a Mexican bandit \u2013 comb the American Southwest in search of a strongbox containing $200,000 in stolen gold.",
+ "parents": [
+ "1mUUmi3emn4X9k02u3o91AJUi5Vrz9uld"
+ ],
+ "popularity": 74.724,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bX2xnavhMYjWDoZp1VM6VnU1xwe.jpg",
+ "releaseDate": "1966-12-22",
+ "title": "The Good, the Bad and the Ugly",
+ "type": "file",
+ "voteAverage": 8.464
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 120467,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5vPW6MPAyCFd84FEQQgtPDmVDPQ.jpg",
+ "genres": [
+ "Comedy",
+ "Drama"
+ ],
+ "id": "14dNXJU7AgyYW1nbrgPU8SL3KJSSZbjGx",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Grand.Budapest.Hotel.2014.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "The Grand Budapest Hotel tells of a legendary concierge at a famous European hotel between the wars and his friendship with a young employee who becomes his trusted prot\u00e9g\u00e9. The story involves the theft and recovery of a priceless Renaissance painting, the battle for an enormous family fortune and the slow and then sudden upheavals that transformed Europe during the first half of the 20th century.",
+ "parents": [
+ "18j9rq6RG5lEYdmiCxgaKevyoDRX7dy-o"
+ ],
+ "popularity": 39.323,
+ "posterPath": "https://image.tmdb.org/t/p/w342/eWdyYQreja6JGCzqHWXpWHDrrPo.jpg",
+ "releaseDate": "2014-02-26",
+ "title": "The Grand Budapest Hotel",
+ "type": "file",
+ "voteAverage": 8.05
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 596,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7UTQCis1B8oWNjIMzQq57LPqma2.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1tBoPKko1oWDADVnY38nYbfyX4U4a5sYk",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Grapes.Of.Wrath.1940.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Tom Joad returns to his home after a jail sentence to find his family kicked out of their farm due to foreclosure. He catches up with them on his Uncle\u2019s farm, and joins them the next day as they head for California and a new life... Hopefully.",
+ "parents": [
+ "18TU9_lc2uFVP7ZPAshHaWLiWAdtFfPYh"
+ ],
+ "popularity": 21.726,
+ "posterPath": "https://image.tmdb.org/t/p/w342/eUcxMVBIA0Jg8l1RGUqycrc3eIQ.jpg",
+ "releaseDate": "1940-03-15",
+ "title": "The Grapes of Wrath",
+ "type": "file",
+ "voteAverage": 7.851
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 914,
+ "backdropPath": "https://image.tmdb.org/t/p/original/c8Pi8F1FzpNebtgXcSjC9nWCdSW.jpg",
+ "genres": [
+ "Comedy",
+ "War"
+ ],
+ "id": "16t6yMIAR4-BlgcPBS3FmsTHTMsNcoBMe",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Great.Dictator.1940.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Dictator Adenoid Hynkel tries to expand his empire while a poor Jewish barber tries to avoid persecution from Hynkel's regime.",
+ "parents": [
+ "1sVacX18GVi0GgLGC89IsjHxONe7SkyWW"
+ ],
+ "popularity": 76.162,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1QpO9wo7JWecZ4NiBuu625FiY1j.jpg",
+ "releaseDate": "1940-10-15",
+ "title": "The Great Dictator",
+ "type": "file",
+ "voteAverage": 8.321
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 5925,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ih30cG9OGlJ7zyzhG3G5Bd3YGa9.jpg",
+ "genres": [
+ "Adventure",
+ "Drama",
+ "History",
+ "Thriller",
+ "War"
+ ],
+ "id": "1mt1B9EphRxTKKj11f7iv8xLXpcco07UP",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Great.Escape.1963.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The Nazis, exasperated at the number of escapes from their prison camps by a relatively small number of Allied prisoners, relocate them to a high-security 'escape-proof' camp to sit out the remainder of the war. Undaunted, the prisoners plan one of the most ambitious escape attempts of World War II. Based on a true story.",
+ "parents": [
+ "1AwSohSyxByMZPHbXQh0dvW2zQxT9VGWK"
+ ],
+ "popularity": 37.832,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gBH4H8UMFxl139HaLz6lRuvsel8.jpg",
+ "releaseDate": "1963-07-03",
+ "title": "The Great Escape",
+ "type": "file",
+ "voteAverage": 7.947
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 497,
+ "backdropPath": "https://image.tmdb.org/t/p/original/vxJ08SvwomfKbpboCWynC3uqUg4.jpg",
+ "genres": [
+ "Fantasy",
+ "Drama",
+ "Crime"
+ ],
+ "id": "15sqOs_FNjloqP9yFnQpR0VYxFdluoHlf",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Green.Mile.1999.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "A supernatural tale set on death row in a Southern prison, where gentle giant John Coffey possesses the mysterious power to heal people's ailments. When the cell block's head guard, Paul Edgecomb, recognizes Coffey's miraculous gift, he tries desperately to help stave off the condemned man's execution.",
+ "parents": [
+ "1ko2gpDFh8XWm0VIxveQodZP03vGTjC00"
+ ],
+ "popularity": 92.352,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8VG8fDNiy50H4FedGwdSVUPoaJe.jpg",
+ "releaseDate": "1999-12-10",
+ "title": "The Green Mile",
+ "type": "file",
+ "voteAverage": 8.505
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 290098,
+ "backdropPath": "https://image.tmdb.org/t/p/original/9o9ci7ZH9chSy8B7YXCBYih8Kkd.jpg",
+ "genres": [
+ "Thriller",
+ "Drama",
+ "Romance"
+ ],
+ "id": "1new64ZMsZsZv8GlyRvcV4h6IgkYuz7Lt",
+ "language": "ko",
+ "mimeType": "video/mp4",
+ "name": "The.Handmaiden.2016.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In 1930s Korea, a swindler and a young woman pose as a Japanese count and a handmaiden to seduce a Japanese heiress and steal her fortune.",
+ "parents": [
+ "1NeWnvljq6a1QTdC3VuIWrzHWnOUnDmZ2"
+ ],
+ "popularity": 63.947,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dLlH4aNHdnmf62umnInL8xPlPzw.jpg",
+ "releaseDate": "2016-06-01",
+ "title": "The Handmaiden",
+ "type": "file",
+ "voteAverage": 8.224
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 50014,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wyvUmyzqGOBDyqLHRSukGDjI7bH.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1oMnt4MF1IFCWV-AK0D2YnH5ee7o-hxVe",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Help.2011.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Aibileen Clark is a middle-aged African-American maid who has spent her life raising white children and has recently lost her only son; Minny Jackson is an African-American maid who has often offended her employers despite her family's struggles with money and her desperate need for jobs; and Eugenia \"Skeeter\" Phelan is a young white woman who has recently moved back home after graduating college to find out her childhood maid has mysteriously disappeared. These three stories intertwine to explain how life in Jackson, Mississippi revolves around \"the help\"; yet they are always kept at a certain distance because of racial lines.",
+ "parents": [
+ "1QcfkJ7ouVZ04fTaVxDi_iF5uR3xMZThK"
+ ],
+ "popularity": 123.235,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7XLSwxpfpPoJyTdJVot6a42TS2V.jpg",
+ "releaseDate": "2011-08-09",
+ "title": "The Help",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 103663,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7zN7m5jEyrNxFYm2EbQJAZwAG5i.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1IQCqCHkpNqpQL0uygnG50S1CPWvxWd5s",
+ "language": "da",
+ "mimeType": "video/mp4",
+ "name": "The.Hunt.2012.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A teacher lives a lonely life, all the while struggling over his son\u2019s custody. His life slowly gets better as he finds love and receives good news from his son, but his new luck is about to be brutally shattered by an innocent little lie.",
+ "parents": [
+ "1D6VheVxRlCDZ_PLJasqSmdeE5uJZ0GW-"
+ ],
+ "popularity": 36.4,
+ "posterPath": "https://image.tmdb.org/t/p/w342/jkixsXzRh28q3PCqFoWcf7unghT.jpg",
+ "releaseDate": "2012-06-13",
+ "title": "The Hunt",
+ "type": "file",
+ "voteAverage": 8.102
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 9806,
+ "backdropPath": "https://image.tmdb.org/t/p/original/cnORTKYtAzPXIY6lizTJspfoXnd.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Animation",
+ "Family"
+ ],
+ "id": "1iVO6Z6GpadnbsCHn68XXUwjEkKzdcTxi",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Incredibles.2004.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Bob Parr has given up his superhero days to log in time as an insurance adjuster and raise his three children with his formerly heroic wife in suburbia. But when he receives a mysterious assignment, it's time to get back into costume.",
+ "parents": [
+ "1YT1PYHvGK2TMK3M8z8aMhW1hG3Zw30L9"
+ ],
+ "popularity": 72.876,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2LqaLgk4Z226KkgPJuiOQ58wvrm.jpg",
+ "releaseDate": "2004-10-27",
+ "title": "The Incredibles",
+ "type": "file",
+ "voteAverage": 7.705
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 77338,
+ "backdropPath": "https://image.tmdb.org/t/p/original/bGksau9GGu0uJ8DJQ8DYc9JW5LM.jpg",
+ "genres": [
+ "Drama",
+ "Comedy"
+ ],
+ "id": "1acml88lvpQ11alKP-3-pxZD-aN-56lhl",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "The.Intouchables.2011.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A true story of two men who should never have met \u2013 a quadriplegic aristocrat who was injured in a paragliding accident and a young man from the projects.",
+ "parents": [
+ "1t5hCLtf3p0eOr2a9onB0ciyh33oSW3A7"
+ ],
+ "popularity": 52.729,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1QU7HKgsQbGpzsJbJK4pAVQV9F5.jpg",
+ "releaseDate": "2011-11-02",
+ "title": "The Intouchables",
+ "type": "file",
+ "voteAverage": 8.279
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 10386,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gZ78dyRH9hXeH94ASjuvD9Vw4b5.jpg",
+ "genres": [
+ "Family",
+ "Animation",
+ "Science Fiction",
+ "Adventure"
+ ],
+ "id": "12k0XM4-L6U0d7ypdn3V3ukV2WttBzrFe",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Iron.Giant.1999.DIRECTOR.CUT.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In the small town of Rockwell, Maine in October 1957, a giant metal machine befriends a nine-year-old boy and ultimately finds its humanity by unselfishly saving people from their own fears and prejudices.",
+ "parents": [
+ "13ilSWqaQVo5FhJQMZO0fkxwCjyc86j4Z"
+ ],
+ "popularity": 41.537,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ct04FCFLPImNG5thcPLRnVsZlmS.jpg",
+ "releaseDate": "1999-08-06",
+ "title": "The Iron Giant",
+ "type": "file",
+ "voteAverage": 7.944
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 10098,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mAhCW7QbpL5kwvCWGsfyY3ILoW6.jpg",
+ "genres": [
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1QFBwaKdCHUaSgyfCL3yG4aREJguLEo8S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Kid.1921.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A tramp cares for a boy after he's abandoned as a newborn by his mother. Later the mother has a change of heart and aches to be reunited with her son.",
+ "parents": [
+ "17ehw75nGAR3QIv-JNbd35BaYya0a2WC1"
+ ],
+ "popularity": 24.694,
+ "posterPath": "https://image.tmdb.org/t/p/w342/drgMcyTsySQBnUPGaBThCHGdlWT.jpg",
+ "releaseDate": "1921-01-21",
+ "title": "The Kid",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11430,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3eQnD9CIUerbXbgtFE1zJNvEVVo.jpg",
+ "genres": [
+ "Family",
+ "Animation",
+ "Comedy",
+ "Action"
+ ],
+ "id": "1d9W5iqGInTxOEJTSIqxx03t3ufSLWOad",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Lion.King.1.1.2.2004.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Timon the meerkat and Pumbaa the warthog are best pals and the unsung heroes of the African savanna. This prequel to the smash Disney animated adventure takes you back -- way back -- before Simba's adventure began. You'll find out all about Timon and Pumbaa and tag along as they search for the perfect home and attempt to raise a rambunctious lion cub.",
+ "parents": [
+ "1cx_W-zY99YE3cy7hkoLY9IMLFoiD95WI"
+ ],
+ "popularity": 40.897,
+ "posterPath": "https://image.tmdb.org/t/p/w342/sVJME5R1NmTXtbdnAxYPx7Xa7kr.jpg",
+ "releaseDate": "2004-02-06",
+ "title": "The Lion King 1\u00bd",
+ "type": "file",
+ "voteAverage": 6.577
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 582,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3mxteiwtcCPjbYKlyC0WxY1G9J3.jpg",
+ "genres": [
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1o8L_f4GAO0B-sA3RARKiYvVzS4bBBjYK",
+ "language": "de",
+ "mimeType": "video/mp4",
+ "name": "The.Lives.Of.Others.2006.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In 1984 East Berlin, an agent of the secret police, conducting surveillance on a writer and his lover, finds himself becoming increasingly absorbed by their lives.",
+ "parents": [
+ "1WkhMy5W7aLfsDt-MMfD7BNrGAa-kBteV"
+ ],
+ "popularity": 26.605,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cVUDMnskSc01rdbyH0tLATTJUdP.jpg",
+ "releaseDate": "2006-03-23",
+ "title": "The Lives of Others",
+ "type": "file",
+ "voteAverage": 8.028
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 120,
+ "backdropPath": "https://image.tmdb.org/t/p/original/z51Wzj94hvAIsWfknifKTqKJRwp.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Action"
+ ],
+ "id": "13nrKdj8jdHYS7qgAab0vmLMi8NlJEyr8",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Lord.Of.The.Rings.The.Fellowship.Of.The.Ring.2001.EXTENDED.REMASTERED.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Young hobbit Frodo Baggins, after inheriting a mysterious ring from his uncle Bilbo, must leave his home in order to keep it from falling into the hands of its evil creator. Along the way, a fellowship is formed to protect the ringbearer and make sure that the ring arrives at its final destination: Mt. Doom, the only place where it can be destroyed.",
+ "parents": [
+ "1RIFGGRe_-HER8uurd536tZgxNFZeaeXs"
+ ],
+ "popularity": 124.96,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6oom5QYQ2yQTMJIbnvbkBL9cHo6.jpg",
+ "releaseDate": "2001-12-18",
+ "title": "The Lord of the Rings: The Fellowship of the Ring",
+ "type": "file",
+ "voteAverage": 8.4
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 122,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2u7zbn8EudG6kLlBzUYqP8RyFU4.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Action"
+ ],
+ "id": "1FH1Om5Q0gq3lwLmzzo9arXYpdGxmLpCo",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Lord.Of.The.Rings.The.Return.Of.The.King.2003.EXTENDED.REMASTERED.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "As armies mass for a final battle that will decide the fate of the world--and powerful, ancient forces of Light and Dark compete to determine the outcome--one member of the Fellowship of the Ring is revealed as the noble heir to the throne of the Kings of Men. Yet, the sole hope for triumph over evil lies with a brave hobbit, Frodo, who, accompanied by his loyal friend Sam and the hideous, wretched Gollum, ventures deep into the very dark heart of Mordor on his seemingly impossible quest to destroy the Ring of Power.\u200b",
+ "parents": [
+ "1Ccd6n-LWzM6abcjHyZS-4PYQ2HOghro8"
+ ],
+ "popularity": 105.709,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rCzpDGLbOoPwLjy3OAm5NUPOTrC.jpg",
+ "releaseDate": "2003-12-01",
+ "title": "The Lord of the Rings: The Return of the King",
+ "type": "file",
+ "voteAverage": 8.481
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 121,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mshaKLtPUxcDBhzau6qiObEblhL.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Action"
+ ],
+ "id": "1uyv1Pd60aRx5VpsIwitMsQtb16UwDAa4",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Lord.Of.The.Rings.The.Two.Towers.2002.EXTENDED.REMASTERED.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Frodo Baggins and the other members of the Fellowship continue on their sacred quest to destroy the One Ring--but on separate paths. Their destinies lie at two towers--Orthanc Tower in Isengard, where the corrupt wizard Saruman awaits, and Sauron's fortress at Barad-dur, deep within the dark lands of Mordor. Frodo and Sam are trekking to Mordor to destroy the One Ring of Power while Gimli, Legolas and Aragorn search for the orc-captured Merry and Pippin. All along, nefarious wizard Saruman awaits the Fellowship members at the Orthanc Tower in Isengard.",
+ "parents": [
+ "1R5LJY1WfK2sgtZ-z4a3RNb6V4wuHQWpV"
+ ],
+ "popularity": 92.479,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5VTN0pR8gcqV3EPUHHfMGnJYN9L.jpg",
+ "releaseDate": "2002-12-18",
+ "title": "The Lord of the Rings: The Two Towers",
+ "type": "file",
+ "voteAverage": 8.395
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 603,
+ "backdropPath": "https://image.tmdb.org/t/p/original/icmmSD4vTTDKOq2vvdulafOGw93.jpg",
+ "genres": [
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "1nHEzAVopUPhP1p5BhwW_IvVKAmudGJj9",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Matrix.1999.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Set in the 22nd century, The Matrix tells the story of a computer hacker who joins a group of underground insurgents fighting the vast and powerful computers who now rule the earth.",
+ "parents": [
+ "1QNLrIAG4dhxYKDyZKGREDOC3HmqkWOjT"
+ ],
+ "popularity": 394.386,
+ "posterPath": "https://image.tmdb.org/t/p/w342/f89U3ADr1oiB1s9GkdPOEpXUk5H.jpg",
+ "releaseDate": "1999-03-31",
+ "title": "The Matrix",
+ "type": "file",
+ "voteAverage": 8.217
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 780,
+ "backdropPath": "https://image.tmdb.org/t/p/original/A1mteOfKdvK5er2sD5i02Qw3CWz.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1w0JeTcLKZMn8PhBhlG9zDPgfNogpzSqc",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "The.Passion.Of.Joan.Of.Arc.1928.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A classic of the silent age, this film tells the story of the doomed but ultimately canonized 15th-century teenage warrior. On trial for claiming she'd spoken to God, Jeanne d'Arc is subjected to inhumane treatment and scare tactics at the hands of church court officials. Initially bullied into changing her story, Jeanne eventually opts for what she sees as the truth. Her punishment, a famously brutal execution, earns her perpetual martyrdom.",
+ "parents": [
+ "1JauYgLvvYTIzLFrdNSGszfpNFEqyuEiq"
+ ],
+ "popularity": 16.429,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8OYGtQlO8k9PcOm49apV62eVJQo.jpg",
+ "releaseDate": "1928-04-21",
+ "title": "The Passion of Joan of Arc",
+ "type": "file",
+ "voteAverage": 8.003
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 423,
+ "backdropPath": "https://image.tmdb.org/t/p/original/dVr11o9or7AS8AMPfwjSpEU83iU.jpg",
+ "genres": [
+ "Drama",
+ "War"
+ ],
+ "id": "159jVuzH9HIBEThr2YHbK1awLGtRe5qbJ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Pianist.2002.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "The true story of pianist W\u0142adys\u0142aw Szpilman's experiences in Warsaw during the Nazi occupation. When the Jews of the city find themselves forced into a ghetto, Szpilman finds work playing in a caf\u00e9; and when his family is deported in 1942, he stays behind, works for a while as a laborer, and eventually goes into hiding in the ruins of the war-torn city.",
+ "parents": [
+ "19roEnw9jAryd9LXzR4ezShBAUa5oe4Ux"
+ ],
+ "popularity": 64.875,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2hFvxCCWrTmCYwfy7yum0GKRi3Y.jpg",
+ "releaseDate": "2002-09-17",
+ "title": "The Pianist",
+ "type": "file",
+ "voteAverage": 8.384
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1124,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xBDE2d6HM1aBKQRu4IT7SfPD9fs.jpg",
+ "genres": [
+ "Drama",
+ "Mystery",
+ "Science Fiction"
+ ],
+ "id": "1WAURuzxdBExVw0PEVU1YJGQibM-73hVq",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Prestige.2006.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A mysterious story of two magicians whose intense rivalry leads them on a life-long battle for supremacy -- full of obsession, deceit and jealousy with dangerous and deadly consequences.",
+ "parents": [
+ "1wpL2knBnvQCLHwyxU5OEzVsHVy3LpKBR"
+ ],
+ "popularity": 171.296,
+ "posterPath": "https://image.tmdb.org/t/p/w342/tRNlZbgNCNOpLpbPEz5L8G8A0JN.jpg",
+ "releaseDate": "2006-10-17",
+ "title": "The Prestige",
+ "type": "file",
+ "voteAverage": 8.203
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 25376,
+ "backdropPath": "https://image.tmdb.org/t/p/original/fNHCogWhABNAmzk0IFdzQP5XLYj.jpg",
+ "genres": [
+ "Mystery",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1g-MS4mcm0BMJlBfmPBCB-0UoA4adrsof",
+ "language": "es",
+ "mimeType": "video/mp4",
+ "name": "The.Secret.In.Their.Eyes.2009.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Hoping to put to rest years of unease concerning a past case, retired criminal investigator Benjam\u00edn begins writing a novel based on the unsolved mystery of a newlywed\u2019s rape and murder. With the help of a former colleague, judge Irene, he attempts to make sense of the past.",
+ "parents": [
+ "1uvYqazRiQmGSpxAzubUkBjm3gpq4Np0C"
+ ],
+ "popularity": 26.835,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dkeAwfZzwL3WvToydE3CXiY80E0.jpg",
+ "releaseDate": "2009-08-13",
+ "title": "The Secret in Their Eyes",
+ "type": "file",
+ "voteAverage": 8.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 490,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7tBfYcZH4P4AA1oFzjflUTSDZgx.jpg",
+ "genres": [
+ "Fantasy",
+ "Drama"
+ ],
+ "id": "1KoIYABEOoaciDpJMnrPKjie2MAAmMq-Q",
+ "language": "sv",
+ "mimeType": "video/mp4",
+ "name": "The.Seventh.Seal.1957.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "When disillusioned Swedish knight Antonius Block returns home from the Crusades to find his country in the grips of the Black Death, he challenges Death to a chess match for his life. Tormented by the belief that God does not exist, Block sets off on a journey, meeting up with traveling players Jof and his wife, Mia, and becoming determined to evade Death long enough to commit one redemptive act while he still lives.",
+ "parents": [
+ "1fgW67u0nuBNokxaZRUy4tU2RtWUzKxkg"
+ ],
+ "popularity": 27.13,
+ "posterPath": "https://image.tmdb.org/t/p/w342/j6z3c6dGXtPHUATJX8J7Y70mM1S.jpg",
+ "releaseDate": "1957-02-16",
+ "title": "The Seventh Seal",
+ "type": "file",
+ "voteAverage": 8.198
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 278,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zfbjgQE1uSd9wiPTX4VzsLi0rGG.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1Wem-ygHutzfse14oaZezk-AY4vwpvYHX",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Shawshank.Redemption.1994.1080p.x264.YIFY.mp4",
+ "overview": "Imprisoned in the 1940s for the double murder of his wife and her lover, upstanding banker Andy Dufresne begins a new life at the Shawshank prison, where he puts his accounting skills to work for an amoral warden. During his long stretch in prison, Dufresne comes to be admired by the other inmates -- including an older prisoner named Red -- for his integrity and unquenchable sense of hope.",
+ "parents": [
+ "17N8Pvt0StLGGH506gtbmtCLYkpBCF94f"
+ ],
+ "popularity": 121.768,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9cqNxx0GxF0bflZmeSMuL5tnGzr.jpg",
+ "releaseDate": "1994-09-23",
+ "title": "The Shawshank Redemption",
+ "type": "file",
+ "voteAverage": 8.7
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 694,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mmd1HnuvAzFc4iuVJcnBrhDNEKr.jpg",
+ "genres": [
+ "Horror",
+ "Thriller"
+ ],
+ "id": "1JMJWudLlS2wOkHzQ32aqNvvI0BvJu9JK",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Shining.1980.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Jack Torrance accepts a caretaker job at the Overlook Hotel, where he, along with his wife Wendy and their son Danny, must live isolated from the rest of the world for the winter. But they aren't prepared for the madness that lurks within.",
+ "parents": [
+ "12JJHw6iF9i3655L30jekdSwRM3KLPrxk"
+ ],
+ "popularity": 80.28,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9PtPnOJSH6pewElRlJPGqC5Gd3W.jpg",
+ "releaseDate": "1980-05-23",
+ "title": "The Shining",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 274,
+ "backdropPath": "https://image.tmdb.org/t/p/original/lDJx0ZKbfYbGoe8mwWmVKSQr0ub.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1b8MHcwt9mhU8cwbdfQtymRwTNNjQ59Rw",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Silence.Of.The.Lambs.1991.1080p.BluRay.X264.YIFY.mp4",
+ "overview": "Clarice Starling is a top student at the FBI's training academy. Jack Crawford wants Clarice to interview Dr. Hannibal Lecter, a brilliant psychiatrist who is also a violent psychopath, serving life behind bars for various acts of murder and cannibalism. Crawford believes that Lecter may have insight into a case and that Starling, as an attractive young woman, may be just the bait to draw him out.",
+ "parents": [
+ "1EtHsO-erK5KsvklFRpE18eZG-khZAM3w"
+ ],
+ "popularity": 14.496,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uS9m8OBk1A8eM9I042bx8XXpqAq.jpg",
+ "releaseDate": "1991-02-14",
+ "title": "The Silence of the Lambs",
+ "type": "file",
+ "voteAverage": 8.348
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 745,
+ "backdropPath": "https://image.tmdb.org/t/p/original/paUKxrbN2ww0JeT2JtvgAuaGlPf.jpg",
+ "genres": [
+ "Mystery",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1Oo9QjG0crw_ZOTJEcM4yhdCk6e4NMkDe",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Sixth.Sense.1999.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Following an unexpected tragedy, child psychologist Malcolm Crowe meets a nine year old boy named Cole Sear, who is hiding a dark secret.",
+ "parents": [
+ "1PVP4OTOnpx8QiQz49l106UTqwuA7S7Ar"
+ ],
+ "popularity": 100.742,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4AfSDjjCy6T5LA1TMz0Lh2HlpRh.jpg",
+ "releaseDate": "1999-08-06",
+ "title": "The Sixth Sense",
+ "type": "file",
+ "voteAverage": 7.953
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 15121,
+ "backdropPath": "https://image.tmdb.org/t/p/original/m5n1nguLC3pTJLPKhN5Ek0aNT6E.jpg",
+ "genres": [
+ "Drama",
+ "Family",
+ "Music",
+ "Romance"
+ ],
+ "id": "1k7s7dqwpyfi-oA9Ui2mtIM3ViolMX5aY",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Sound.of.Music.1965.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "In the years before the Second World War, a tomboyish postulant at an Austrian abbey is hired as a governess in the home of a widowed naval captain with seven children, and brings a new love of life and music into the home.",
+ "parents": [
+ "18_oaILelTMmMozKZ_k6wbVKE9YzYCPrQ"
+ ],
+ "popularity": 66.422,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5qQTu2iGTiQ2UvyGp0beQAZ2rKx.jpg",
+ "releaseDate": "1965-03-29",
+ "title": "The Sound of Music",
+ "type": "file",
+ "voteAverage": 7.724
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 9277,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tQcbNXoYU7zy1dz96npOlbDgtbq.jpg",
+ "genres": [
+ "Comedy",
+ "Crime",
+ "Drama"
+ ],
+ "id": "18f93pDjsi6GbU3Mi5YlBovCn5OWnGNbU",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Sting.1973.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A novice con man teams up with an acknowledged master to avenge the murder of a mutual friend by pulling off the ultimate big con and swindling a fortune from a big-time mobster.",
+ "parents": [
+ "1igYcfEnIxB0xWAgtZeic-7TbSmaI4FpU"
+ ],
+ "popularity": 67.59,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ckmYng37zey8INYf6d10cVgIG93.jpg",
+ "releaseDate": "1973-12-25",
+ "title": "The Sting",
+ "type": "file",
+ "voteAverage": 8.024
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 218,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wh4ze6klUbeichAj603OKZwY1W5.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Science Fiction"
+ ],
+ "id": "1VrXS_WvO9aP5JbzsvTZbuQaj7bX2yK32",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Terminator.1984.1080p.BRrip.x264.GAZ.YIFY.mp4",
+ "overview": "In the post-apocalyptic future, reigning tyrannical supercomputers teleport a cyborg assassin known as the \"Terminator\" back to 1984 to kill Sarah Connor, whose unborn son is destined to lead insurgents against 21st century mechanical hegemony. Meanwhile, the human-resistance movement dispatches a lone warrior to safeguard Sarah. Can he stop the virtually indestructible killing machine?",
+ "parents": [
+ "122-ILHQ9mDTkzbPqaWWNvjG0MuqKYjRW"
+ ],
+ "popularity": 418.037,
+ "posterPath": "https://image.tmdb.org/t/p/w342/qvktm0BHcnmDpul4Hz01GIazWPr.jpg",
+ "releaseDate": "1984-10-26",
+ "title": "The Terminator",
+ "type": "file",
+ "voteAverage": 7.667
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1091,
+ "backdropPath": "https://image.tmdb.org/t/p/original/r9leYNa8nTRCceZrZhP1DXkgKVb.jpg",
+ "genres": [
+ "Horror",
+ "Mystery",
+ "Science Fiction"
+ ],
+ "id": "1K5s16Hf2GQAxgjqih1yj7Z86jWpx24b7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Thing.1982.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "In the winter of 1982, a twelve-man research team at a remote Antarctic research station discovers an alien buried in the snow for over 100,000 years. Soon unfrozen, the form-changing creature wreaks havoc, creates terror... and becomes one of them.",
+ "parents": [
+ "19rk8HImSMfQPDC7KvQ__RF_Km7s2-9Rr"
+ ],
+ "popularity": 82.582,
+ "posterPath": "https://image.tmdb.org/t/p/w342/tzGY49kseSE9QAKk47uuDGwnSCu.jpg",
+ "releaseDate": "1982-06-25",
+ "title": "The Thing",
+ "type": "file",
+ "voteAverage": 8.059
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1092,
+ "backdropPath": "https://image.tmdb.org/t/p/original/l2iY1AgqQ8dEa3FtWkN5TQ5aVbU.jpg",
+ "genres": [
+ "Thriller",
+ "Mystery"
+ ],
+ "id": "1EBeLe2JCs0SEovGdxNyjfyIq4OUVXcse",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Third.Man.1949.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "In postwar Vienna, Austria, Holly Martins, a writer of pulp Westerns, arrives penniless as a guest of his childhood chum Harry Lime, only to learn he has died. Martins develops a conspiracy theory after learning of a \"third man\" present at the time of Harry's death, running into interference from British officer Major Calloway, and falling head-over-heels for Harry's grief-stricken lover, Anna.",
+ "parents": [
+ "1BVv_jSkRXcrieRSlaKomDx-8fnvh2S43"
+ ],
+ "popularity": 52.269,
+ "posterPath": "https://image.tmdb.org/t/p/w342/oIF3l7Dxp7Eyye10BNyM611wtKa.jpg",
+ "releaseDate": "1949-08-31",
+ "title": "The Third Man",
+ "type": "file",
+ "voteAverage": 7.926
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3090,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sj5R5SGor3YMFBuabMj8gPbyBmh.jpg",
+ "genres": [
+ "Adventure",
+ "Drama",
+ "Western"
+ ],
+ "id": "1mWHIXImPoU7D_jwMLzs7IEAzwscbzo4B",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Treasure.Of.The.Sierra.Madre.1948.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Fred C. Dobbs and Bob Curtin, both down on their luck in Tampico, Mexico in 1925, meet up with a grizzled prospector named Howard and decide to join with him in search of gold in the wilds of central Mexico. Through enormous difficulties, they eventually succeed in finding gold, but bandits, the elements, and most especially greed threaten to turn their success into disaster.",
+ "parents": [
+ "1C3YycnB5KpdXd1CbewywX4ifjmUo5J_u"
+ ],
+ "popularity": 21.714,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pWcst7zVbi8Z8W6GFrdNE7HHRxL.jpg",
+ "releaseDate": "1948-01-15",
+ "title": "The Treasure of the Sierra Madre",
+ "type": "file",
+ "voteAverage": 7.981
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 37165,
+ "backdropPath": "https://image.tmdb.org/t/p/original/aCHn2TXYJfzPXQKA6r9mKPbMlUB.jpg",
+ "genres": [
+ "Comedy",
+ "Drama"
+ ],
+ "id": "13G7Ex2ARNdwn0lASbm8TQ_DHwRHNoCk_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Truman.Show.1998.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Truman Burbank is the star of The Truman Show, a 24-hour-a-day reality TV show that broadcasts every aspect of his life without his knowledge. His entire life has been an unending soap opera for consumption by the rest of the world. And everyone he knows, including his wife and his best friend, is really an actor, paid to be part of his life.",
+ "parents": [
+ "1DkhBsqxSbkJH0SeUhzmlBUqKGmpYXPyw"
+ ],
+ "popularity": 81.422,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vuza0WqY239yBXOadKlGwJsZJFE.jpg",
+ "releaseDate": "1998-06-04",
+ "title": "The Truman Show",
+ "type": "file",
+ "voteAverage": 8.1
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 629,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7S7PE3vK9Eh5uzCYBDGk5qTJeYW.jpg",
+ "genres": [
+ "Drama",
+ "Crime",
+ "Thriller"
+ ],
+ "id": "1BJtEVu6rbL1Ty0l5eRJG5dZYLvxTvkV7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Usual.Suspects.1995.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Held in an L.A. interrogation room, Verbal Kint attempts to convince the feds that a mythic crime lord, Keyser Soze, not only exists, but was also responsible for drawing him and his four partners into a multi-million dollar heist that ended with an explosion in San Pedro harbor \u2013 leaving few survivors. Verbal lures his interrogators with an incredible story of the crime lord's almost supernatural prowess.",
+ "parents": [
+ "1zYTvcS8IdkudVEIjLUtShH6P1JRYSI2F"
+ ],
+ "popularity": 35.519,
+ "posterPath": "https://image.tmdb.org/t/p/w342/99X2SgyFunJFXGAYnDv3sb9pnUD.jpg",
+ "releaseDate": "1995-07-19",
+ "title": "The Usual Suspects",
+ "type": "file",
+ "voteAverage": 8.186
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 204,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8JaU1ez5TSrRSmncB0Xh2YQavXP.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Adventure"
+ ],
+ "id": "15l_W-SRLPFJPwpwOmSSFY33cDF2fXxyZ",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "The.Wages.Of.Fear.1953.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In a run-down South American town, four men are paid to drive trucks loaded with nitroglycerin into the jungle through to the oil field. Friendships are tested and rivalries develop as they embark upon the perilous journey.",
+ "parents": [
+ "1eDefKAh8mp2NTKioE74U17KHD_4nV6DJ"
+ ],
+ "popularity": 34.8,
+ "posterPath": "https://image.tmdb.org/t/p/w342/y5iBurPvCvPfGukQUxlJHjazeZV.jpg",
+ "releaseDate": "1953-04-22",
+ "title": "The Wages of Fear",
+ "type": "file",
+ "voteAverage": 8.043
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 630,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nRsr98MFztBGm532hCVMGXV6qOp.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Family"
+ ],
+ "id": "115acmm_HO7NWWsIBNoQJKQUA7HF-FyW7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Wizard.of.Oz.1939.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Young Dorothy finds herself in a magical world where she makes friends with a lion, a scarecrow and a tin man as they make their way along the yellow brick road to talk with the Wizard and ask for the things they miss most in their lives. The Wicked Witch of the West is the only thing that could stop them.",
+ "parents": [
+ "1PtHGD2AO-MiOK8DTF1GLRdejBsQLTiAa"
+ ],
+ "popularity": 70.683,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pfAZFD7I2hxW9HCChTuAzsdE6UX.jpg",
+ "releaseDate": "1939-08-15",
+ "title": "The Wizard of Oz",
+ "type": "file",
+ "voteAverage": 7.585
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 106646,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7Nwnmyzrtd0FkcRyPqmdzTPppQa.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Comedy"
+ ],
+ "id": "1mQnkBjXCGtCivgOaL54c2L203okYOO3h",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Wolf.of.Wall.Street.2013.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "A New York stockbroker refuses to cooperate in a large securities fraud case involving corruption on Wall Street, corporate banking world and mob infiltration. Based on Jordan Belfort's autobiography.",
+ "parents": [
+ "1NgRucpkh9Q0gwUGD5mgVoPwpyzM172QI"
+ ],
+ "popularity": 105.122,
+ "posterPath": "https://image.tmdb.org/t/p/w342/34m2tygAYBGqA9MXKhRDtzYd4MR.jpg",
+ "releaseDate": "2013-12-25",
+ "title": "The Wolf of Wall Street",
+ "type": "file",
+ "voteAverage": 8.035
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 7345,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8LRcCJjbQI552BMCuGgYqph8USS.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1wpLw_1ggup8jZM4z7nIT-uhaEqQ6GU7L",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "There.Will.Be.Blood.2007.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Ruthless silver miner, turned oil prospector, Daniel Plainview, moves to oil-rich California. Using his son to project a trustworthy, family-man image, Plainview cons local landowners into selling him their valuable properties for a pittance. However, local preacher Eli Sunday suspects Plainview's motives and intentions, starting a slow-burning feud that threatens both their lives.",
+ "parents": [
+ "1GjTiI6J2JZrvPaKQ-pdQROSTZOrC4UzA"
+ ],
+ "popularity": 36.563,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fa0RDkAlCec0STeMNAhPaF89q6U.jpg",
+ "releaseDate": "2007-12-26",
+ "title": "There Will Be Blood",
+ "type": "file",
+ "voteAverage": 8.083
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 359940,
+ "backdropPath": "https://image.tmdb.org/t/p/original/oQHF0Y4gCw6VdPmapjsbZoxY2ht.jpg",
+ "genres": [
+ "Crime",
+ "Drama"
+ ],
+ "id": "1svREjmSdNcrUJ6iiXBFujWu_bhrQ9_m1",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Three.Billboards.Outside.Ebbing,.Missouri.2017.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "After seven months have passed without a culprit in her daughter's murder case, Mildred Hayes makes a bold move, painting three signs leading into her town with a controversial message directed at Bill Willoughby, the town's revered chief of police. When his second-in-command Officer Jason Dixon, an immature mother's boy with a penchant for violence, gets involved, the battle between Mildred and Ebbing's law enforcement is only exacerbated.",
+ "parents": [
+ "1T6p0nBOBUhgIb51tJUtPsgkKTtWyu8x5"
+ ],
+ "popularity": 26.281,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pZRhqJj0DBy4ghB7g6pU7MGHsWJ.jpg",
+ "releaseDate": "2017-12-01",
+ "title": "Three Billboards Outside Ebbing, Missouri",
+ "type": "file",
+ "voteAverage": 8.073
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 198,
+ "backdropPath": "https://image.tmdb.org/t/p/original/p69ybBV94wSmyCGE2y2pH9U86l0.jpg",
+ "genres": [
+ "Comedy",
+ "War"
+ ],
+ "id": "1ZjVkYavk_PVBrx2Pi3Jfdr6mwVlv0EEb",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "To.Be.Or.Not.To.Be.1942.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "During the Nazi occupation of Poland, an acting troupe becomes embroiled in a Polish soldier's efforts to track down a German spy.",
+ "parents": [
+ "1uCulMz6muNGD-9tRANPyz_TljHc0og5E"
+ ],
+ "popularity": 12.653,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dDQRpEoyjHT4fzw9cNklIvZuXYg.jpg",
+ "releaseDate": "1942-03-05",
+ "title": "To Be or Not to Be",
+ "type": "file",
+ "voteAverage": 7.8
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 595,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mbJIERhLu25fyZb8DQIq1JN3AOR.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "19HL-ak_xSN2CDkVG83g6dmyDCF_sRDkA",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "To.Kill.A.Mockingbird.1962.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Scout Finch, 6, and her older brother Jem live in sleepy Maycomb, Alabama, spending much of their time with their friend Dill and spying on their reclusive and mysterious neighbor, Boo Radley. When Atticus, their widowed father and a respected lawyer, defends a black man named Tom Robinson against fabricated rape charges, the trial and tangent events expose the children to evils of racism and stereotyping.",
+ "parents": [
+ "1SSIYZMJUNctMAy5vLMcyqyy5bznDV_-3"
+ ],
+ "popularity": 33.409,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gZycFUMLx2110dzK3nBNai7gfpM.jpg",
+ "releaseDate": "1962-12-20",
+ "title": "To Kill a Mockingbird",
+ "type": "file",
+ "voteAverage": 7.999
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 18148,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jLq0ol1f0ZKXni9R9GsPBcyPrNN.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "175wSmXooQe-qQgrXaXJPndUPkMXRW6m_",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Tokyo.Story.1953.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "The elderly Shukishi and his wife, Tomi, take the long journey from their small seaside village to visit their adult children in Tokyo. Their elder son, Koichi, a doctor, and their daughter, Shige, a hairdresser, don't have much time to spend with their aged parents, and so it falls to Noriko, the widow of their younger son who was killed in the war, to keep her in-laws company.",
+ "parents": [
+ "1dLMMHo1vVmkOO9j-OrB2fz44kzzaQn0j"
+ ],
+ "popularity": 16.032,
+ "posterPath": "https://image.tmdb.org/t/p/w342/g2YbTYKpY7N2yDSk7BfXZ18I5QV.jpg",
+ "releaseDate": "1953-11-03",
+ "title": "Tokyo Story",
+ "type": "file",
+ "voteAverage": 8.175
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 361743,
+ "backdropPath": "https://image.tmdb.org/t/p/original/AaV1YIdWKnjAIAOe8UUKBFm327v.jpg",
+ "genres": [
+ "Action",
+ "Drama"
+ ],
+ "id": "16uCiTYp8KFlO171IEyUgIWu8WRc0TKJA",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Top.Gun.Maverick.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After more than thirty years of service as one of the Navy\u2019s top aviators, and dodging the advancement in rank that would ground him, Pete \u201cMaverick\u201d Mitchell finds himself training a detachment of TOP GUN graduates for a specialized mission the likes of which no living pilot has ever seen.",
+ "parents": [
+ "1E7lQ2BGNDK7-hPvcZwN85YadycwWtx9N"
+ ],
+ "popularity": 148.606,
+ "posterPath": "https://image.tmdb.org/t/p/w342/62HCnUTziyWcpDaBO2i1DX17ljH.jpg",
+ "releaseDate": "2022-05-21",
+ "title": "Top Gun: Maverick",
+ "type": "file",
+ "voteAverage": 8.218
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 862,
+ "backdropPath": "https://image.tmdb.org/t/p/original/lxD5ak7BOoinRNehOCA85CQ8ubr.jpg",
+ "genres": [
+ "Animation",
+ "Adventure",
+ "Family",
+ "Comedy"
+ ],
+ "id": "1m-U191NMuOe3tTcZRgDTLK0SdEbfGBwH",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Toy.Story.1995.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "Led by Woody, Andy's toys live happily in his room until Andy's birthday brings Buzz Lightyear onto the scene. Afraid of losing his place in Andy's heart, Woody plots against Buzz. But when circumstances separate Buzz and Woody from their owner, the duo eventually learns to put aside their differences.",
+ "parents": [
+ "1RZXEJwZuRom2GOoVlxub-k4-BFRCGXZZ"
+ ],
+ "popularity": 221.874,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uXDfjJbdP4ijW5hWSBrPrlKpxab.jpg",
+ "releaseDate": "1995-10-30",
+ "title": "Toy Story",
+ "type": "file",
+ "voteAverage": 7.971
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 10193,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wE5JGzujfvDPMIfFjJyrhXFjZLc.jpg",
+ "genres": [
+ "Animation",
+ "Family",
+ "Comedy"
+ ],
+ "id": "1PXYTLsMx7ocWZB1OGiD-ZMz-PPWn54nk",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Toy.Story.3.2010.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "Woody, Buzz, and the rest of Andy's toys haven't been played with in years. With Andy about to go to college, the gang find themselves accidentally left at a nefarious day care center. The toys must band together to escape and return home to Andy.",
+ "parents": [
+ "1P_2UWGRKV7l8itMj7JOuGw1k5hwuRUJI"
+ ],
+ "popularity": 70.242,
+ "posterPath": "https://image.tmdb.org/t/p/w342/AbbXspMOwdvwWZgVN0nabZq03Ec.jpg",
+ "releaseDate": "2010-06-16",
+ "title": "Toy Story 3",
+ "type": "file",
+ "voteAverage": 7.796
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 627,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xbk4yCvG9k6Z5gfPqcNM5DG6x3d.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1qS7C8FbsaYgqgHyuZO13iBFZwLvEG-lo",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Trainspotting.1996.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Heroin addict Mark Renton stumbles through bad ideas and sobriety attempts with his unreliable friends -- Sick Boy, Begbie, Spud and Tommy. He also has an underage girlfriend, Diane, along for the ride. After cleaning up and moving from Edinburgh to London, Mark finds he can't escape the life he left behind when Begbie shows up at his front door on the lam, and a scheming Sick Boy follows.",
+ "parents": [
+ "1wi8Gt6vSxmdJQZArfOMRa1lMwzORHgoC"
+ ],
+ "popularity": 40.379,
+ "posterPath": "https://image.tmdb.org/t/p/w342/yKmmT0q35R4AfW9Rbq2IPVAPwk3.jpg",
+ "releaseDate": "1996-02-23",
+ "title": "Trainspotting",
+ "type": "file",
+ "voteAverage": 8.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 33,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ibrZ4mTkRJbFJ8UAFTCW590DM38.jpg",
+ "genres": [
+ "Western"
+ ],
+ "id": "1l2q-Elznxrwm39eOjRU7adO2d5pT8336",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Unforgiven.1992.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "William Munny is a retired, once-ruthless killer turned gentle widower and hog farmer. To help support his two motherless children, he accepts one last bounty-hunter mission to find the men who brutalized a prostitute. Joined by his former partner and a cocky greenhorn, he takes on a corrupt sheriff.",
+ "parents": [
+ "19L70sXlS6jKniPLPyNS6p4AKoLQP5mHo"
+ ],
+ "popularity": 39.792,
+ "posterPath": "https://image.tmdb.org/t/p/w342/54roTwbX9fltg85zjsmrooXAs12.jpg",
+ "releaseDate": "1992-08-07",
+ "title": "Unforgiven",
+ "type": "file",
+ "voteAverage": 7.918
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 14160,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hGGC9gKo7CFE3fW07RA587e5kol.jpg",
+ "genres": [
+ "Animation",
+ "Comedy",
+ "Family",
+ "Adventure"
+ ],
+ "id": "1rZKGyGJU469WbDZJGWXRv5YbT3Tp7Rwj",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Up.2009.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Carl Fredricksen spent his entire life dreaming of exploring the globe and experiencing life to its fullest. But at age 78, life seems to have passed him by, until a twist of fate (and a persistent 8-year old Wilderness Explorer named Russell) gives him a new lease on life.",
+ "parents": [
+ "1kikqVXk5UGiiofzw1q-Uj3Yq1yY0jkdX"
+ ],
+ "popularity": 156.735,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vpbaStTMt8qqXaEgnOR2EE4DNJk.jpg",
+ "releaseDate": "2009-05-28",
+ "title": "Up",
+ "type": "file",
+ "voteAverage": 7.958
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 752,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sFEYsEfzTx7hhjetlNrme8B5OUo.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Science Fiction"
+ ],
+ "id": "1yUhRhJ0IT2Zr7sIXpRN1MmbteJ-DbEmB",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "V.For.Vendetta.2006.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "In a world in which Great Britain has become a fascist state, a masked vigilante known only as \u201cV\u201d conducts guerrilla warfare against the oppressive British government. When V rescues a young woman from the secret police, he finds in her an ally with whom he can continue his fight to free the people of Britain.",
+ "parents": [
+ "1ybzD4-LdrFJ7ps7cfsKkDouEr2mfQJF1"
+ ],
+ "popularity": 47.864,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1avD1JeaRiJX5M4ahPdZPypGoGN.jpg",
+ "releaseDate": "2006-02-23",
+ "title": "V for Vendetta",
+ "type": "file",
+ "voteAverage": 7.9
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 426,
+ "backdropPath": "https://image.tmdb.org/t/p/original/77aHwg1SCy89rfvQtiruPU58qEV.jpg",
+ "genres": [
+ "Mystery",
+ "Romance",
+ "Thriller"
+ ],
+ "id": "1Bxf12MI0nqALGkOzwqoyxKGfsNs3yvd4",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Vertigo.1958.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "A retired San Francisco detective suffering from acrophobia investigates the strange activities of an old friend's wife, all the while becoming dangerously obsessed with her.",
+ "parents": [
+ "117xTEa-AMqWDmfQ0SNIFpOjw5DCynlGG"
+ ],
+ "popularity": 63.334,
+ "posterPath": "https://image.tmdb.org/t/p/w342/15uOEfqBNTVtDUT7hGBVCka0rZz.jpg",
+ "releaseDate": "1958-05-28",
+ "title": "Vertigo",
+ "type": "file",
+ "voteAverage": 8.171
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 211683,
+ "backdropPath": null,
+ "genres": [],
+ "id": "15iTtw3pxrt2-f2jxmvw8uilT7uPBxY3_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "WALL-E.2008.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Berlin Wall: Escape To Freedom reveals the stories of courageous East Germans who dared to challenge the authorities and the Berlin Wall in their bid for freedom. From tunnelling under the Wall, to smuggling refugees in a car\u2019s trunk, to flights over the Wall, uncover the details of sensational escape stories. It takes us into the heart of the Death Strip \u2013 a lethal zone next to the Wall filled with barbed wire, mines, attack dogs, tank traps, and armed guards - and shows us how authorities learned from each escape to make the Wall stronger and harder to beat. Finally, the Wall that was strengthened over 28 years was opened in one unbelievable night and yet the divisions of generations past still linger today in modern Berlin.",
+ "parents": [
+ "1-Tw-BcUzErPTQ_uUYeDHC9yvtjB8CbRf"
+ ],
+ "popularity": 0.736,
+ "posterPath": null,
+ "releaseDate": "2008-05-19",
+ "title": "The Berlin Wall: Escape to Freedom",
+ "type": "file",
+ "voteAverage": 6.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 59440,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1PnRPz4A4AguUEVOTcprIyctrax.jpg",
+ "genres": [
+ "Drama",
+ "Action"
+ ],
+ "id": "10dSPvAQObiQ365QG_fnF21nhF8YSrOOz",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Warrior.2011.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The youngest son of an alcoholic former boxer returns home, where he's trained by his father for competition in a mixed martial arts tournament \u2013 a path that puts the fighter on a collision course with his estranged, older brother.",
+ "parents": [
+ "1uONesRQiEtTjk4FDVRCApyqEUrBamwMu"
+ ],
+ "popularity": 41.796,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iM8n4nZJPR2abpnyZ36FUgHiRjr.jpg",
+ "releaseDate": "2011-09-09",
+ "title": "Warrior",
+ "type": "file",
+ "voteAverage": 7.848
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 244786,
+ "backdropPath": "https://image.tmdb.org/t/p/original/vNXGrknx4GjWLgmuNTftWZluIUl.jpg",
+ "genres": [
+ "Drama",
+ "Music"
+ ],
+ "id": "1suJOM3ap1PkWOFFR-9m-ddg9V4YtU2fK",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Whiplash.2014.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Under the direction of a ruthless instructor, a talented young drummer begins to pursue perfection at any cost, even his humanity.",
+ "parents": [
+ "1kTMbMMlQwaTlIj75-_b2ISbr6ZJbQYHQ"
+ ],
+ "popularity": 169.534,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7fn624j5lj3xTme2SgiLCeuedmO.jpg",
+ "releaseDate": "2014-10-10",
+ "title": "Whiplash",
+ "type": "file",
+ "voteAverage": 8.382
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 614,
+ "backdropPath": "https://image.tmdb.org/t/p/original/BBVAUchYvkmPThVIqipgAfabfl.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1_pgKIKHAqYZ4q6yXR3Y4jqzCm6OatsMm",
+ "language": "sv",
+ "mimeType": "video/mp4",
+ "name": "Wild.Strawberries.1957.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Crotchety retired doctor Isak Borg travels from Stockholm to Lund, Sweden, with his pregnant and unhappy daughter-in-law, Marianne, in order to receive an honorary degree from his alma mater. Along the way, they encounter a series of hitchhikers, each of whom causes the elderly doctor to muse upon the pleasures and failures of his own life. These include the vivacious young Sara, a dead ringer for the doctor's own first love.",
+ "parents": [
+ "1IY8dH5TNEUYc3zetTlJsMMOgeuIivVq8"
+ ],
+ "popularity": 28.129,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iyTD2QnySNMPUPE3IedZQipSWfz.jpg",
+ "releaseDate": "1957-12-26",
+ "title": "Wild Strawberries",
+ "type": "file",
+ "voteAverage": 8.13
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 265195,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7SB3a0TzpkI7yvEBTHb4T1EYRXd.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Comedy"
+ ],
+ "id": "12kK4kW9OazLkMc8r1StzbHu3JOBOdMdL",
+ "language": "es",
+ "mimeType": "video/mp4",
+ "name": "Wild.Tales.2014.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Injustice and the demands of the world can cause stress for many people. Some of them, however, explode. This includes a waitress serving a grouchy loan shark, an altercation between two motorists, an ill-fated wedding reception, and a wealthy businessman who tries to buy his family out of trouble.",
+ "parents": [
+ "1YeSRMEyohTIQagAHH2bNGUIyUghHfy91"
+ ],
+ "popularity": 36.313,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bU7IUeTdYFOgeUPtwpWKQNhORMC.jpg",
+ "releaseDate": "2014-08-21",
+ "title": "Wild Tales",
+ "type": "file",
+ "voteAverage": 7.873
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 37257,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ppKDBRK4TMHxjLPRGx3MQEtJWC0.jpg",
+ "genres": [
+ "Drama",
+ "Mystery",
+ "Crime"
+ ],
+ "id": "1CUv9YkkOkn8d_7x_KhSkKWSCPD-6WPNs",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Witness.For.The.Prosecution.1957.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "When Leonard Vole is arrested for the sensational murder of a rich, middle-aged widow, the famous Sir Wilfrid Robarts agrees to appear on his behalf. Sir Wilfrid, recovering from a near-fatal heart attack, is supposed to be on a diet of bland, civil suits\u2014but the lure of the criminal courts is too much for him, especially when the case is so difficult.",
+ "parents": [
+ "1tcoTCGtYAag8LGwt9n2B4ct7cWjU69Yi"
+ ],
+ "popularity": 25.458,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mM5Cad2ESBprh6ucPnMzMfI34Cu.jpg",
+ "releaseDate": "1957-12-17",
+ "title": "Witness for the Prosecution",
+ "type": "file",
+ "voteAverage": 8.215
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1295439,
+ "backdropPath": null,
+ "genres": [
+ "Action",
+ "Drama",
+ "Adventure"
+ ],
+ "id": "1FVdjly_0B3iVRrful0cjhvwvvUCY-oCG",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Yojimbo.1961.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "Yojimbo is a low budget 1961 Japanese samurai film from the studio Zazie Productions. The film follows a wandering samurai who arrives in a small town where two rival crime lords are battling for supremacy. The samurai plays both sides against each other, hoping to profit from the conflict.",
+ "parents": [
+ "11RWd7FxIzVau2jIOAgMHgn3wnAgl_V1W"
+ ],
+ "popularity": 1.354,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cLeIpZsOP4AaFDFTP4bi6rqPyQJ.jpg",
+ "releaseDate": "1961-04-15",
+ "title": "Yojimbo",
+ "type": "file",
+ "voteAverage": 8.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 372058,
+ "backdropPath": "https://image.tmdb.org/t/p/original/dIWwZW7dJJtqC6CgWzYkNVKIUm8.jpg",
+ "genres": [
+ "Animation",
+ "Romance",
+ "Drama"
+ ],
+ "id": "14JejNBaEl4dRDRRcqAMijdhBK98PxJCM",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Your.Name.2016.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "High schoolers Mitsuha and Taki are complete strangers living separate lives. But one night, they suddenly switch places. Mitsuha wakes up in Taki\u2019s body, and he in hers. This bizarre occurrence continues to happen randomly, and the two must adjust their lives around each other.",
+ "parents": [
+ "1LExbEd5EUA3mpU7tcFXi9P3QcCWdFwrI"
+ ],
+ "popularity": 73.71,
+ "posterPath": "https://image.tmdb.org/t/p/w342/q719jXXEzOoYaps6babgKnONONX.jpg",
+ "releaseDate": "2016-08-26",
+ "title": "Your Name.",
+ "type": "file",
+ "voteAverage": 8.495
+ }
+ ],
+ "id": "12Aw6fVZCR3Rmu8hoDw9wyZ-bpMCx-iro",
+ "kind": "drive#file",
+ "length": 250,
+ "mimeType": "application/vnd.google-apps.folder",
+ "name": "Top 250 IMDB",
+ "type": "directory"
+ },
+ {
+ "buildTime": "2024-06-07 17:11:54.092389",
+ "categoryInfo": {
+ "adult": false,
+ "anilist": false,
+ "id": "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB",
+ "language": "en",
+ "name": "Movies",
+ "type": "Movies"
+ },
+ "children": [
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1163258,
+ "backdropPath": "https://image.tmdb.org/t/p/original/6RV2o8PBCEyw9ylOWViV1CtULIF.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1JQmrFYRFjrL0DOzcBCu_psWWIQn7eEH9",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "12th.Fail.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Based on the true story of IPS officer Manoj Kumar Sharma, 12th Fail sheds limelight on fearlessly embracing the idea of restarting the academic journey despite the setbacks and challenges and reclaiming one's destiny at a place where millions of students attempt the world's toughest competitive exam: UPSC.",
+ "parents": [
+ "1rNti0exY76YcoHc7pl9f9oBl0HD3qIiY"
+ ],
+ "popularity": 34.923,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cDWW5l4NTWtQi9McwevrY3knsTd.jpg",
+ "releaseDate": "2023-10-27",
+ "title": "12th Fail",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 584,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xWf5Mjtv2HfIB9FyPYbbaSDdfCW.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Thriller"
+ ],
+ "id": "1innlRsY5pmGf082Tjs5pmaN--e584zAf",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "2.Fast.2.Furious.2003.1080p.BrRip.x264.YIFY+HI.mp4",
+ "overview": "It's a major double-cross when former police officer Brian O'Conner teams up with his ex-con buddy Roman Pearce to transport a shipment of \"dirty\" money for shady Miami-based import-export dealer Carter Verone. But the guys are actually working with undercover agent Monica Fuentes to bring Verone down.",
+ "parents": [
+ "1hs9-enTQyo119O0G2o-6OGgzHDLE0O-T"
+ ],
+ "popularity": 7.721,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6nDZExrDKIXvSAghsFKVFRVJuSf.jpg",
+ "releaseDate": "2003-06-05",
+ "title": "2 Fast 2 Furious",
+ "type": "file",
+ "voteAverage": 6.498
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 14161,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pvxmYJcgrLiYC6G2IQTn1PPNems.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1nz4VZZ6pzBt6Pr-CpkKWhuOU-nDubhc7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "2012 (2009).mp4",
+ "overview": "Dr. Adrian Helmsley, part of a worldwide geophysical team investigating the effect on the earth of radiation from unprecedented solar storms, learns that the earth's core is heating up. He warns U.S. President Thomas Wilson that the crust of the earth is becoming unstable and that without proper preparations for saving a fraction of the world's population, the entire race is doomed. Meanwhile, writer Jackson Curtis stumbles on the same information. While the world's leaders race to build \"arks\" to escape the impending cataclysm, Curtis struggles to find a way to save his family. Meanwhile, volcanic eruptions and earthquakes of unprecedented strength wreak havoc around the world.",
+ "parents": [
+ "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB"
+ ],
+ "popularity": 81.737,
+ "posterPath": "https://image.tmdb.org/t/p/w342/zaqam2RNscH5ooYFWInV6hjx6y5.jpg",
+ "releaseDate": "2009-10-10",
+ "title": "2012",
+ "type": "file",
+ "voteAverage": 5.839
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 20453,
+ "backdropPath": "https://image.tmdb.org/t/p/original/u7kuUaySqXBVAtqEl9vkTkAzHV9.jpg",
+ "genres": [
+ "Drama",
+ "Comedy"
+ ],
+ "id": "1UTmhJI5nzpFqs6KFOgza1LAgRu2Gs7KT",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "3.Idiots.2009.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Rascal. Joker. Dreamer. Genius... You've never met a college student quite like \"Rancho.\" From the moment he arrives at India's most prestigious university, Rancho's outlandish schemes turn the campus upside down\u2014along with the lives of his two newfound best friends. Together, they make life miserable for \"Virus,\" the school\u2019s uptight and heartless dean. But when Rancho catches the eye of the dean's daughter, Virus sets his sights on flunking out the \"3 idiots\" once and for all.",
+ "parents": [
+ "1JFmxExNwPKlQQ8j0nbnG2ZiMWsL_uCr2"
+ ],
+ "popularity": 32.012,
+ "posterPath": "https://image.tmdb.org/t/p/w342/66A9MqXOyVFCssoloscw79z8Tew.jpg",
+ "releaseDate": "2009-12-23",
+ "title": "3 Idiots",
+ "type": "file",
+ "voteAverage": 7.991
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 6957,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8GWECkJcBsdReaotUFbl96gAngj.jpg",
+ "genres": [
+ "Comedy",
+ "Romance"
+ ],
+ "id": "1aqsAL7sM0TtLdMwzNupRlN-DxZuRN6az",
+ "language": "en",
+ "mimeType": "video/x-msvideo",
+ "name": "40 Year Old Virgin",
+ "overview": "Andy Stitzer has a pleasant life with a nice apartment and a job stamping invoices at an electronics store. But at age 40, there's one thing Andy hasn't done, and it's really bothering his sex-obsessed male co-workers: Andy is still a virgin. Determined to help Andy get laid, the guys make it their mission to de-virginize him. But it all seems hopeless until Andy meets small business owner Trish, a single mom.",
+ "parents": [
+ "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB"
+ ],
+ "popularity": 32.593,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mVeoqL37gzhMXQVpONi9DGOQ3tZ.jpg",
+ "releaseDate": "2005-08-11",
+ "title": "The 40 Year Old Virgin",
+ "type": "file",
+ "voteAverage": 6.399
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 700391,
+ "backdropPath": "https://image.tmdb.org/t/p/original/eEF40Xk2twM3WjRNZftfo771gjv.jpg",
+ "genres": [
+ "Science Fiction",
+ "Action",
+ "Thriller"
+ ],
+ "id": "1A1LYkyFDJayP-tmOX-2kRfGEc3_fkDAG",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "65.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "65 million years ago, the only 2 survivors of a spaceship from Somaris that crash-landed on Earth, must fend off dinosaurs to reach the escape vessel in time before an imminent asteroid strike threatens to destroy the planet.",
+ "parents": [
+ "14akWBF2Bu8qpEE4tnUJL-YwSeTjUqJgW"
+ ],
+ "popularity": 51.49,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rzRb63TldOKdKydCvWJM8B6EkPM.jpg",
+ "releaseDate": "2023-03-02",
+ "title": "65",
+ "type": "file",
+ "voteAverage": 6.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 634120,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3Sdi32wfIIOtDz1hYik6bGe1iWC.jpg",
+ "genres": [
+ "Adventure",
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1NUU0z-P8m5DUMZ05zjGIhkHbo8iFu6NU",
+ "language": "kn",
+ "mimeType": "video/mp4",
+ "name": "777.Charlie.2022.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Dharma is stuck in a rut with his negative and lonely lifestyle and spends each day in the comfort of his loneliness. A pup named Charlie who is naughty and energetic which is a complete contrast with the Dharma\u2019s character enters his life and gives him a new perspective towards it.",
+ "parents": [
+ "19wc68lt0x_vrJd0ffyMg4pNI90SfgTOi"
+ ],
+ "popularity": 11.277,
+ "posterPath": "https://image.tmdb.org/t/p/w342/qArPmXH0aWsT3SEtYl8XrU2Oz48.jpg",
+ "releaseDate": "2022-06-10",
+ "title": "777 Charlie",
+ "type": "file",
+ "voteAverage": 7.6
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 484247,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nb1s8r6MhDcPyMjx3sjw9rFsEP5.jpg",
+ "genres": [
+ "Crime",
+ "Thriller",
+ "Comedy"
+ ],
+ "id": "12m_nPYgwmB8tVHIENLZ2XMMDyrjiLLPu",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "A.Simple.Favor.2018.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Stephanie, a dedicated mother and popular vlogger, befriends Emily, a mysterious upper-class woman whose son Nicky attends the same school as Miles, Stephanie's son. When Emily asks her to pick Nicky up from school and then disappears, Stephanie undertakes an investigation that will dive deep into Emily's cloudy past.",
+ "parents": [
+ "1qIFbCBXtuU52bJgp0ct5-fZwOQe7bxJ0"
+ ],
+ "popularity": 21.234,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mbUCU4m8PDZT4AsWYtXdGrtsJx0.jpg",
+ "releaseDate": "2018-08-29",
+ "title": "A Simple Favor",
+ "type": "file",
+ "voteAverage": 6.632
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1111873,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ySgY4jBvZ6qchrxKnBg4M8tZp8V.jpg",
+ "genres": [
+ "Horror",
+ "Thriller"
+ ],
+ "id": "10lqjsMYXEfTwM8PweoTbTnSCBv4cnTfi",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Abigail.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A group of criminals kidnaps a teenage ballet dancer, the daughter of a notorious gang leader, in order to obtain a ransom of $50 million, but over time, they discover that she is not just an ordinary girl. After the kidnappers begin to diminish, one by one, they discover, to their increasing horror, that they are locked inside with an unusual girl.",
+ "parents": [
+ "1FpILXzIpZa4ywIy6fkBcbcMzPET_vXw9"
+ ],
+ "popularity": 300.796,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5gKKSoD3iezjoL7YqZONjmyAiRA.jpg",
+ "releaseDate": "2024-04-18",
+ "title": "Abigail",
+ "type": "file",
+ "voteAverage": 6.813
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1021803,
+ "backdropPath": "https://image.tmdb.org/t/p/original/p3ptZJtmzjpE9jvvi4NzJvuWALp.jpg",
+ "genres": [
+ "Crime",
+ "Thriller",
+ "Action"
+ ],
+ "id": "1I2o0P5CZiFCLR4Eca9D5BjgThWriG5oh",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "Adagio.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Tangled up with blackmail and crooked cops, the son of a former gangster seeks out his father's old friends, who risk everything to save him.",
+ "parents": [
+ "17K_gnzdbsStyHUmUTH9YUWYgs89sO-1i"
+ ],
+ "popularity": 22.938,
+ "posterPath": "https://image.tmdb.org/t/p/w342/x9kLSGl1q6T4IKjXpJ8I6O8U873.jpg",
+ "releaseDate": "2023-12-14",
+ "title": "Adagio",
+ "type": "file",
+ "voteAverage": 6.623
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 348,
+ "backdropPath": "https://image.tmdb.org/t/p/original/AmR3JG1VQVxU8TfAvljUhfSFUOx.jpg",
+ "genres": [
+ "Horror",
+ "Science Fiction"
+ ],
+ "id": "1uAAKXmheJUYhtZblOH4N7SAz43ZtytaQ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Alien (1979) DC.mp4",
+ "overview": "During its return to the earth, commercial spaceship Nostromo intercepts a distress signal from a distant planet. When a three-member team of the crew discovers a chamber containing thousands of eggs on the planet, a creature inside one of the eggs attacks an explorer. The entire crew is unaware of the impending nightmare set to descend upon them when the alien parasite planted inside its unfortunate host is birthed.",
+ "parents": [
+ "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB"
+ ],
+ "popularity": 398.243,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vfrQk5IPloGg1v9Rzbh2Eg3VGyM.jpg",
+ "releaseDate": "1979-05-25",
+ "title": "Alien",
+ "type": "file",
+ "voteAverage": 8.154
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 49046,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xBwtP27cx8WfjHJVFkpuV6F1RES.jpg",
+ "genres": [
+ "Drama",
+ "War",
+ "Action"
+ ],
+ "id": "1LQn_pCzjBhfCMWXzECXQfAIABzbCwny3",
+ "language": "de",
+ "mimeType": "video/mp4",
+ "name": "All.Quiet.On.The.Western.Front.2022.1080p.BluRay.x265.10bit.AAC5.1-[YTS.MX].mp4",
+ "overview": "Paul Baumer and his friends Albert and Muller, egged on by romantic dreams of heroism, voluntarily enlist in the German army. Full of excitement and patriotic fervour, the boys enthusiastically march into a war they believe in. But once on the Western Front, they discover the soul-destroying horror of World War I.",
+ "parents": [
+ "11f3PQJHLMdm5x24ICEM8ODR_PFb0cHAY"
+ ],
+ "popularity": 66.734,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2IRjbi9cADuDMKmHdLK7LaqQDKA.jpg",
+ "releaseDate": "2022-10-07",
+ "title": "All Quiet on the Western Front",
+ "type": "file",
+ "voteAverage": 7.739
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 763285,
+ "backdropPath": "https://image.tmdb.org/t/p/original/rdOIqwR7P7fvTpC6LILSmQxEg6O.jpg",
+ "genres": [
+ "Thriller",
+ "Action",
+ "Crime"
+ ],
+ "id": "1dnvWSJvg1-YkHqzvuBuiTcnTXO6O7IMa",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Ambulance.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Decorated veteran Will Sharp, desperate for money to cover his wife's medical bills, asks for help from his adoptive brother Danny. A charismatic career criminal, Danny instead offers him a score: the biggest bank heist in Los Angeles history: $32 million.",
+ "parents": [
+ "1EzR0V-lprYWc-tvb2q_--EChukcrifYQ"
+ ],
+ "popularity": 38.714,
+ "posterPath": "https://image.tmdb.org/t/p/w342/kuxjMVuc3VTD7p42TZpJNsSrM1V.jpg",
+ "releaseDate": "2022-03-16",
+ "title": "Ambulance",
+ "type": "file",
+ "voteAverage": 6.656
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 781732,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pwBtk8ngoMtqn0qv8j1feSFTKUn.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Drama"
+ ],
+ "id": "1cCzfi6iYBVjDaba8VOnzm3Rnotgbc8_0",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Animal.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The hardened son of a powerful industrialist returns home after years abroad and vows to take bloody revenge on those threatening his father's life.",
+ "parents": [
+ "1-8_iVnPdjcIojvbcZ4blm69kvHC9VOYR"
+ ],
+ "popularity": 46.462,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hr9rjR3J0xBBKmlJ4n3gHId9ccx.jpg",
+ "releaseDate": "2023-12-01",
+ "title": "Animal",
+ "type": "file",
+ "voteAverage": 6.46
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 640146,
+ "backdropPath": "https://image.tmdb.org/t/p/original/m8JTwHFwX7I7JY5fPe4SjqejWag.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1C5-8KSrGGEhInZBdJH6-RPVbhtUQGRMf",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Ant-Man.And.The.Wasp.Quantumania.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Super-Hero partners Scott Lang and Hope van Dyne, along with with Hope's parents Janet van Dyne and Hank Pym, and Scott's daughter Cassie Lang, find themselves exploring the Quantum Realm, interacting with strange new creatures and embarking on an adventure that will push them beyond the limits of what they thought possible.",
+ "parents": [
+ "1hdpDXvK4Oflmdm4Cwi4E-wHk9itgwpDb"
+ ],
+ "popularity": 74.756,
+ "posterPath": "https://image.tmdb.org/t/p/w342/qnqGbB22YJ7dSs4o6M7exTpNxPz.jpg",
+ "releaseDate": "2023-02-15",
+ "title": "Ant-Man and the Wasp: Quantumania",
+ "type": "file",
+ "voteAverage": 6.348
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1072790,
+ "backdropPath": "https://image.tmdb.org/t/p/original/j9eOeLlTGoHoM8BNUJVNyWmIvCi.jpg",
+ "genres": [
+ "Romance",
+ "Comedy"
+ ],
+ "id": "1Cm_8i9zbMmnW_86CWipzFWwCCMPlprds",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Anyone.But.You.2023.BLURAY.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After an amazing first date, Bea and Ben\u2019s fiery attraction turns ice cold \u2014 until they find themselves unexpectedly reunited at a destination wedding in Australia. So they do what any two mature adults would do: pretend to be a couple.",
+ "parents": [
+ "1Hz8U9Sq8qz7h-eVDY3IRUtj4LctMcoqS"
+ ],
+ "popularity": 192.891,
+ "posterPath": "https://image.tmdb.org/t/p/w342/yRt7MGBElkLQOYRvLTT1b3B1rcp.jpg",
+ "releaseDate": "2023-12-21",
+ "title": "Anyone But You",
+ "type": "file",
+ "voteAverage": 7.058
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 576928,
+ "backdropPath": "https://image.tmdb.org/t/p/original/oxl1w7sICYDJfaD9PM06HfPUmOi.jpg",
+ "genres": [
+ "Action",
+ "Drama"
+ ],
+ "id": "1uvNN43KgmFNmORvCiDPB3XvykCpVSzuH",
+ "language": "ta",
+ "mimeType": "video/mp4",
+ "name": "Asuran.2019.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A family from the underprivileged class is on the run after the teenaged son kills a rich man from the upper caste. Can the pacifist father be able to save his hot-blooded son?",
+ "parents": [
+ "1uNNx9LQi_hTQCdgV_YbK8Bw8HhSYPavf"
+ ],
+ "popularity": 6.872,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9EUF0c13y5aigU1Mmzt4fthxrkR.jpg",
+ "releaseDate": "2019-10-02",
+ "title": "Asuran",
+ "type": "file",
+ "voteAverage": 7.7
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 614933,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3TNSoa0UHGEzEz5ndXGjJVKo8RJ.jpg",
+ "genres": [
+ "Science Fiction",
+ "Action"
+ ],
+ "id": "1cQoUIzxOW9vnDlnG7G_eqfnD8odaN6hj",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Atlas.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A brilliant counterterrorism analyst with a deep distrust of AI discovers it might be her only hope when a mission to capture a renegade robot goes awry.",
+ "parents": [
+ "1bcHMFAdKPIlZiCAbbkVhLLWnFLS3VKVU"
+ ],
+ "popularity": 1438.874,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bcM2Tl5HlsvPBnL8DKP9Ie6vU4r.jpg",
+ "releaseDate": "2024-05-23",
+ "title": "Atlas",
+ "type": "file",
+ "voteAverage": 6.724
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 76600,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8rpDcsfLJypbO6vREc0547VKqEv.jpg",
+ "genres": [
+ "Science Fiction",
+ "Adventure",
+ "Action"
+ ],
+ "id": "1H0i_PMcBVknaHjB0f9VI761P2_k3xubk",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Avatar.The.Way.Of.Water.2022.BLURAY.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Set more than a decade after the events of the first film, learn the story of the Sully family (Jake, Neytiri, and their kids), the trouble that follows them, the lengths they go to keep each other safe, the battles they fight to stay alive, and the tragedies they endure.",
+ "parents": [
+ "14jSzrpRN5Ef0-pegUPHpGIuwyH96eoCR"
+ ],
+ "popularity": 229.593,
+ "posterPath": "https://image.tmdb.org/t/p/w342/t6HIqrRAclMCA60NsSmeqe9RmNV.jpg",
+ "releaseDate": "2022-12-14",
+ "title": "Avatar: The Way of Water",
+ "type": "file",
+ "voteAverage": 7.624
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 998846,
+ "backdropPath": "https://image.tmdb.org/t/p/original/a1m4DAmySexNaaGnjEVA2MKNUCo.jpg",
+ "genres": [
+ "History",
+ "Drama",
+ "Music"
+ ],
+ "id": "18gGfVAgGm4fRsQ9tbXADmz2IrMhwTIGx",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Back.To.Black.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The extraordinary story of Amy Winehouse\u2019s early rise to fame from her early days in Camden through the making of her groundbreaking album, Back to Black that catapulted Winehouse to global fame. Told through Amy\u2019s eyes and inspired by her deeply personal lyrics, the film explores and embraces the many layers of the iconic artist and the tumultuous love story at the center of one of the most legendary albums of all time.",
+ "parents": [
+ "1xDfGB4Gdu-UcuwtXv1nBMlDPOtQdcmSl"
+ ],
+ "popularity": 172.818,
+ "posterPath": "https://image.tmdb.org/t/p/w342/xHQEeUT3Ac4fTY72UeNrI75xLtE.jpg",
+ "releaseDate": "2024-04-11",
+ "title": "Back to Black",
+ "type": "file",
+ "voteAverage": 6.726
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 505642,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xDMIl84Qo5Tsu62c9DGWhmPI67A.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1N4sMZbwo7yEuy3EuJpHYSNMFzqmRewBD",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Black.Panther.Wakanda.Forever.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Queen Ramonda, Shuri, M\u2019Baku, Okoye and the Dora Milaje fight to protect their nation from intervening world powers in the wake of King T\u2019Challa\u2019s death. As the Wakandans strive to embrace their next chapter, the heroes must band together with the help of War Dog Nakia and Everett Ross and forge a new path for the kingdom of Wakanda.",
+ "parents": [
+ "1semohDTY1hVQtmaHDKpU5F6yAtCLX2Pc"
+ ],
+ "popularity": 205.728,
+ "posterPath": "https://image.tmdb.org/t/p/w342/sv1xJUazXeYqALzczSZ3O6nkH75.jpg",
+ "releaseDate": "2022-11-09",
+ "title": "Black Panther: Wakanda Forever",
+ "type": "file",
+ "voteAverage": 7.126
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 565770,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xzdOIL7261CWehsHOk3lnP0xqam.jpg",
+ "genres": [
+ "Action",
+ "Science Fiction",
+ "Adventure"
+ ],
+ "id": "1mRLJBhwoOe6JIowrZ6LpZ67f_mqRqdmh",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Blue.Beetle.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Recent college grad Jaime Reyes returns home full of aspirations for his future, only to find that home is not quite as he left it. As he searches to find his purpose in the world, fate intervenes when Jaime unexpectedly finds himself in possession of an ancient relic of alien biotechnology: the Scarab.",
+ "parents": [
+ "1cY3tdHjTOkrvxuvW_iPKLGPY_f38eY_W"
+ ],
+ "popularity": 133.97,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mXLOHHc1Zeuwsl4xYKjKh2280oL.jpg",
+ "releaseDate": "2023-08-16",
+ "title": "Blue Beetle",
+ "type": "file",
+ "voteAverage": 6.788
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1-zIstitwC0IY3ZsdIWfOgUVw68WvAvuD",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Boy.Kills.World.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": null,
+ "parents": [
+ "1-G1LDyiz7gPnGhoNv4eKwuf2YIgMLak4"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "2023-01-01",
+ "title": "Boy Kills World",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "14JC7EKhs63XTqKMpKFQ0U53hCotWeq6X",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Boy.Kills.World.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": null,
+ "parents": [
+ "1XOC_Jn5QX27JHBaYZyPJU9yHpOX2J1jr"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "2023-01-01",
+ "title": "Boy Kills World",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1006540,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mEoIDEiePnYj178H9znzbl9zvky.jpg",
+ "genres": [
+ "Action"
+ ],
+ "id": "1mWCwYlZRjGTBGAyCAIPSDfh7Qc56HU9r",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Bullet.Train.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "On its maiden run, the world's fastest bullet train is rigged with a bomb that will explode if it dips below 200 mph.",
+ "parents": [
+ "1zd7XRqFnjDSNDqXsssqAlwZxoX3u4PEN"
+ ],
+ "popularity": 85.82,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5a7cocgyVuFjYV71neDIGVzD6Yq.jpg",
+ "releaseDate": "2022-08-01",
+ "title": "Bullet Train Down",
+ "type": "file",
+ "voteAverage": 5.602
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 937287,
+ "backdropPath": "https://image.tmdb.org/t/p/original/504GSaoxBA5nLlcMsJfjzLZEKUp.jpg",
+ "genres": [
+ "Romance",
+ "Drama"
+ ],
+ "id": "1T--iPnAfjCP5PDyP9gZ_FKoP5x1AZqnE",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Challengers.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Tennis player turned coach Tashi has taken her husband, Art, and transformed him into a world-famous Grand Slam champion. To jolt him out of his recent losing streak, she signs him up for a \"Challenger\" event \u2014 close to the lowest level of pro tournament \u2014 where he finds himself standing across the net from his former best friend and Tashi's former boyfriend.",
+ "parents": [
+ "1LoBeWA2pbqmVtRDVWm-skPqvYJ4ZO5Zu"
+ ],
+ "popularity": 252.004,
+ "posterPath": "https://image.tmdb.org/t/p/w342/H6vke7zGiuLsz4v4RPeReb9rsv.jpg",
+ "releaseDate": "2024-04-18",
+ "title": "Challengers",
+ "type": "file",
+ "voteAverage": 7.28
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 929590,
+ "backdropPath": "https://image.tmdb.org/t/p/original/z121dSTR7PY9KxKuvwiIFSYW8cf.jpg",
+ "genres": [
+ "War",
+ "Action",
+ "Drama"
+ ],
+ "id": "1dLoMdye63HVtmNwr1ILpbZi5ukNwEoCS",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Civil.War.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In the near future, a group of war journalists attempt to survive while reporting the truth as the United States stands on the brink of civil war.",
+ "parents": [
+ "1TuRL-9MjLGVoV_j13ILdUJ7worcjQU6B"
+ ],
+ "popularity": 2418.019,
+ "posterPath": "https://image.tmdb.org/t/p/w342/sh7Rg8Er3tFcN9BpKIPOMvALgZd.jpg",
+ "releaseDate": "2024-04-10",
+ "title": "Civil War",
+ "type": "file",
+ "voteAverage": 7.081
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1045931,
+ "backdropPath": "https://image.tmdb.org/t/p/original/4kX80Ea98cEy2Ahy0LSMYtFvJDG.jpg",
+ "genres": [
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1cnDTXUGfPV9KTXEXXq95GaIEabEFZ9pY",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Crew.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Three ordinary air hostesses from Mumbai embark on a journey to pursue their dreams but find themselves caught up in unexpected misfortunes.",
+ "parents": [
+ "1ema0uQsOG0b4XYqNcOwtT5Zta5zuC3dR"
+ ],
+ "popularity": 74.317,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7aYI3oubXqbqI9IZ2OedNieVzi5.jpg",
+ "releaseDate": "2024-03-29",
+ "title": "Crew",
+ "type": "file",
+ "voteAverage": 5.912
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 360814,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5qjbu7po6eqLNd4kUPAyIpFRwQK.jpg",
+ "genres": [
+ "Drama",
+ "Family",
+ "Comedy",
+ "Action"
+ ],
+ "id": "1IQVHlWmSKFxnS2Dc_WEHe0ZZBlLfVwCY",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Dangal.2016.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Dangal is an extraordinary true story based on the life of Mahavir Singh and his two daughters, Geeta and Babita Phogat. The film traces the inspirational journey of a father who trains his daughters to become world class wrestlers.",
+ "parents": [
+ "1gsQCStcys8KeD-j0ntUZGPWWRxpQPaj4"
+ ],
+ "popularity": 19.391,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cJRPOLEexI7qp2DKtFfCh7YaaUG.jpg",
+ "releaseDate": "2016-12-21",
+ "title": "Dangal",
+ "type": "file",
+ "voteAverage": 7.913
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1077280,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pxJbfnMIQQxCrdeLD0zQnWr6ouL.jpg",
+ "genres": [
+ "Comedy",
+ "Action",
+ "Thriller"
+ ],
+ "id": "1-v8dH-kmFKxZk8td_-IOtYdl1Y95WVKD",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Die.Hart.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Kevin Hart - playing a version of himself - is on a death-defying quest to become an action star. And with a little help from John Travolta, Nathalie Emmanuel, and Josh Hartnett - he just might pull it off.",
+ "parents": [
+ "1-20Jh6dl2JjVNo1n6o2n_-bPoAFh5hlx"
+ ],
+ "popularity": 161.085,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ff9iMXJjtRdm58nRzM88sNr5CTu.jpg",
+ "releaseDate": "2023-02-22",
+ "title": "Die Hart",
+ "type": "file",
+ "voteAverage": 5.9
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 453395,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gUNRlH66yNDH3NQblYMIwgZXJ2u.jpg",
+ "genres": [
+ "Fantasy",
+ "Action",
+ "Adventure"
+ ],
+ "id": "1ng5q3ASsT-1NzUoLMCMCcGkXB9eOuW8Q",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Doctor.Strange.In.The.Multiverse.Of.Madness.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Doctor Strange, with the help of mystical allies both old and new, traverses the mind-bending and dangerous alternate realities of the Multiverse to confront a mysterious new adversary.",
+ "parents": [
+ "1NS2SzqO91xRUMW4wXBm04RsJp2gaQbq9"
+ ],
+ "popularity": 108.532,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9Gtg2DzBhmYamXBS1hKAhiwbBKS.jpg",
+ "releaseDate": "2022-05-04",
+ "title": "Doctor Strange in the Multiverse of Madness",
+ "type": "file",
+ "voteAverage": 7.303
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 244049,
+ "backdropPath": "https://image.tmdb.org/t/p/original/vCaMZYVf9ylB7I2fx8c0kbuSC2A.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Thriller",
+ "Family"
+ ],
+ "id": "1jPOJ6RJpcf9cBwIaZVRmsxgG2sOpNbd6",
+ "language": "ml",
+ "mimeType": "video/mp4",
+ "name": "Drishyam.2013.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Georgekutty lives a happy life with his wife and daughters. Things take a turn when his daughter gets indecently filmed using a hidden camera, by the son of a police inspector.",
+ "parents": [
+ "1ZgsjLzqkGhnos9lzGpUA5YDwW0FObyqs"
+ ],
+ "popularity": 9.18,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7d8GLneJkF81q1POdK7VUrjWafX.jpg",
+ "releaseDate": "2013-12-19",
+ "title": "Drishyam",
+ "type": "file",
+ "voteAverage": 7.635
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 706872,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1dtXsTIUj5CfpHVCRK4Y3rA2dSG.jpg",
+ "genres": [
+ "Thriller",
+ "Drama",
+ "Crime"
+ ],
+ "id": "1sii40trxeJmSZqQsl7ueWcfkTII3GUBK",
+ "language": "ml",
+ "mimeType": "video/mp4",
+ "name": "Drishyam.2.2021.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "7 years after the events of Drishyam, the family lives with the trauma from that fateful night. A gripping tale of an investigation and a family threatened by it. Will Georgekutty be able to protect his family this time?",
+ "parents": [
+ "1bPJEy3Tp2mTDmhBorvCKL1FX5R0-r9JS"
+ ],
+ "popularity": 8.662,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8RJBCUGE27LX06tAES4jTELN0KA.jpg",
+ "releaseDate": "2021-02-19",
+ "title": "Drishyam 2",
+ "type": "file",
+ "voteAverage": 7.632
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 438631,
+ "backdropPath": "https://image.tmdb.org/t/p/original/lzWHmYdfeFiMIY4JaMmtR7GEli3.jpg",
+ "genres": [
+ "Science Fiction",
+ "Adventure"
+ ],
+ "id": "1dN_6oYeRuy0Pf-mhhv9y_NyeAOR7svoL",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Dune.2021.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Paul Atreides, a brilliant and gifted young man born into a great destiny beyond his understanding, must travel to the most dangerous planet in the universe to ensure the future of his family and his people. As malevolent forces explode into conflict over the planet's exclusive supply of the most precious resource in existence-a commodity capable of unlocking humanity's greatest potential-only those who can conquer their fear will survive.",
+ "parents": [
+ "1IjqE1hkxrwLlM0MKJv4wv7XfezsjEH-s"
+ ],
+ "popularity": 474.853,
+ "posterPath": "https://image.tmdb.org/t/p/w342/d5NXSklXo0qyIYkgV94XAgMIckC.jpg",
+ "releaseDate": "2021-09-15",
+ "title": "Dune",
+ "type": "file",
+ "voteAverage": 7.783
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 693134,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xOMo8BRK7PfcJv9JCnx7s5hj0PX.jpg",
+ "genres": [
+ "Science Fiction",
+ "Adventure"
+ ],
+ "id": "12qyiKsH_k40VDEyR142rVZsPx_6vpB08",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Dune.Part.Two.2024.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Follow the mythic journey of Paul Atreides as he unites with Chani and the Fremen while on a path of revenge against the conspirators who destroyed his family. Facing a choice between the love of his life and the fate of the known universe, Paul endeavors to prevent a terrible future only he can foresee.",
+ "parents": [
+ "14VwlCQkI1cNWAhEb3c4_lT7NGdEWqzwK"
+ ],
+ "popularity": 787.686,
+ "posterPath": "https://image.tmdb.org/t/p/w342/czembW0Rk1Ke7lCJGahbOhdCuhV.jpg",
+ "releaseDate": "2024-02-27",
+ "title": "Dune: Part Two",
+ "type": "file",
+ "voteAverage": 8.169
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 493529,
+ "backdropPath": "https://image.tmdb.org/t/p/original/oblUNeHlwV3VsjB5ITMlco5ZSOF.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Comedy"
+ ],
+ "id": "1aOW_2ZN3teUW-rbLaiROp4FUTseQ4y6W",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Dungeons.Dragons.Honor.Among.Thieves.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A charming thief and a band of unlikely adventurers undertake an epic heist to retrieve a lost relic, but things go dangerously awry when they run afoul of the wrong people.",
+ "parents": [
+ "1iiuREfQCLeuiFTOwmPYBKHOMZDGkn6Xl"
+ ],
+ "popularity": 59.946,
+ "posterPath": "https://image.tmdb.org/t/p/w342/v7UF7ypAqjsFZFdjksjQ7IUpXdn.jpg",
+ "releaseDate": "2023-03-23",
+ "title": "Dungeons & Dragons: Honor Among Thieves",
+ "type": "file",
+ "voteAverage": 7.371
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 545611,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ss0Os3uWJfQAENILHZUdX8Tt1OC.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1D6cLzVl-OvO0Kv76hkW4UK4bpUGUKqkd",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Everything.Everywhere.All.At.Once.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "An aging Chinese immigrant is swept up in an insane adventure, where she alone can save what's important to her by connecting with the lives she could have led in other universes.",
+ "parents": [
+ "1OCC34hsgYsZo2vyC5oLeUaKIF3eI4D4s"
+ ],
+ "popularity": 74.539,
+ "posterPath": "https://image.tmdb.org/t/p/w342/w3LxiVYdWWRvEVdn5RYq6jIqkb1.jpg",
+ "releaseDate": "2022-03-24",
+ "title": "Everything Everywhere All at Once",
+ "type": "file",
+ "voteAverage": 7.791
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 299054,
+ "backdropPath": "https://image.tmdb.org/t/p/original/rMvPXy8PUjj1o8o1pzgQbdNCsvj.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Thriller"
+ ],
+ "id": "1GI8xCiV08G-Gptr1jYLgIGqUxV_qhaTP",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Expend4bles.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Armed with every weapon they can get their hands on and the skills to use them, The Expendables are the world\u2019s last line of defense and the team that gets called when all other options are off the table. But new team members with new styles and tactics are going to give \u201cnew blood\u201d a whole new meaning.",
+ "parents": [
+ "1IztSXnGpqkDd5O9Udlk7oJw7s7lARWFZ"
+ ],
+ "popularity": 146.876,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iwsMu0ehRPbtaSxqiaUDQB9qMWT.jpg",
+ "releaseDate": "2023-09-15",
+ "title": "Expend4bles",
+ "type": "file",
+ "voteAverage": 6.258
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 697843,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wRxLAw4l17LqiFcPLkobriPTZAw.jpg",
+ "genres": [
+ "Action",
+ "Thriller"
+ ],
+ "id": "1bkUOlyNoK67j2fyWgkIG7er7gWUya-9E",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Extraction.2.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Tasked with extracting a family who is at the mercy of a Georgian gangster, Tyler Rake infiltrates one of the world's deadliest prisons in order to save them. But when the extraction gets hot, and the gangster dies in the heat of battle, his equally ruthless brother tracks down Rake and his team to Vienna, in order to get revenge.",
+ "parents": [
+ "1sgFLcoN4M09SAo0PzuCuyIvc1Zs0dK0u"
+ ],
+ "popularity": 91.842,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7gKI9hpEMcZUQpNgKrkDzJpbnNS.jpg",
+ "releaseDate": "2023-06-09",
+ "title": "Extraction 2",
+ "type": "file",
+ "voteAverage": 7.468
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 985939,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hlxduUs8y9icWGMzYCDLcYHEQ2u.jpg",
+ "genres": [
+ "Thriller"
+ ],
+ "id": "1gfbeT67lfgkqVxUWXlHExnzJf4hvDI0S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Fall.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "For best friends Becky and Hunter, life is all about conquering fears and pushing limits. But after they climb 2,000 feet to the top of a remote, abandoned radio tower, they find themselves stranded with no way down. Now Becky and Hunter\u2019s expert climbing skills will be put to the ultimate test as they desperately fight to survive the elements, a lack of supplies, and vertigo-inducing heights",
+ "parents": [
+ "1BaU8euXkEa4HEfLriQ7dAt2HuXlMj0KG"
+ ],
+ "popularity": 95.049,
+ "posterPath": "https://image.tmdb.org/t/p/w342/v28T5F1IygM8vXWZIycfNEm3xcL.jpg",
+ "releaseDate": "2022-08-11",
+ "title": "Fall",
+ "type": "file",
+ "voteAverage": 7.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 13804,
+ "backdropPath": "https://image.tmdb.org/t/p/original/acktCBsLJcgEJsjTuyiQhJipCD6.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1C7hvW9_8YjQB-UWA8RvfPZFtib9lh3db",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Fast.and.Furious.2009.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "When a crime brings them back to L.A., fugitive ex-con Dom Toretto reignites his feud with agent Brian O'Conner. But as they are forced to confront a shared enemy, Dom and Brian must give in to an uncertain new trust if they hope to outmaneuver him. And the two men will find the best way to get revenge: push the limits of what's possible behind the wheel.",
+ "parents": [
+ "1xX4h4GY3n5VY7Y8iPcRW8QKFPFMyVJI_"
+ ],
+ "popularity": 8.603,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lUtVoRukW7WNtUySwd8hWlByBds.jpg",
+ "releaseDate": "2009-04-02",
+ "title": "Fast & Furious",
+ "type": "file",
+ "voteAverage": 6.683
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 385687,
+ "backdropPath": "https://image.tmdb.org/t/p/original/4XM8DUTQb3lhLemJC51Jx4a2EuA.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Thriller"
+ ],
+ "id": "1GXlqgfVVobS5lni2k5MaZvhoiC8Fh2tK",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Fast.X.2023.BLURAY.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Over many missions and against impossible odds, Dom Toretto and his family have outsmarted, out-nerved and outdriven every foe in their path. Now, they confront the most lethal opponent they've ever faced: A terrifying threat emerging from the shadows of the past who's fueled by blood revenge, and who is determined to shatter this family and destroy everything\u2014and everyone\u2014that Dom loves, forever.",
+ "parents": [
+ "1nN9MkNke6IqEZv8roRVZ1OceXUHv7UNo"
+ ],
+ "popularity": 522.689,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fiVW06jE7z9YnO4trhaMEdclSiC.jpg",
+ "releaseDate": "2023-05-17",
+ "title": "Fast X",
+ "type": "file",
+ "voteAverage": 7.118
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 897087,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zIYROrkHJPYB3VTiW1L9QVgaQO.jpg",
+ "genres": [
+ "Action",
+ "Comedy"
+ ],
+ "id": "1oeqUjSdZD9__n832lfr0Yo8FyBpMlHVC",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Freelance.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "An ex-special forces operative takes a job to provide security for a journalist as she interviews a dictator, but a military coup breaks out in the middle of the interview, they are forced to escape into the jungle where they must survive.",
+ "parents": [
+ "1WR_bzzE-ok0mastss2eJu78T4QAMf-DX"
+ ],
+ "popularity": 137.159,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7Bd4EUOqQDKZXA6Od5gkfzRNb0.jpg",
+ "releaseDate": "2023-10-05",
+ "title": "Freelance",
+ "type": "file",
+ "voteAverage": 6.535
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 868759,
+ "backdropPath": "https://image.tmdb.org/t/p/original/b9UCfDzwiWw7mIFsIQR9ZJUeh7q.jpg",
+ "genres": [
+ "Action",
+ "Comedy",
+ "Romance"
+ ],
+ "id": "1r51F38rBlRLCd4YPg0pU9GIS4plPLpXL",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Ghosted.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Salt-of-the-earth Cole falls head over heels for enigmatic Sadie\u2014but then makes the shocking discovery that she's a secret agent. Before they can decide on a second date, Cole and Sadie are swept away on an international adventure to save the world.",
+ "parents": [
+ "1kme0ZN3OGYSIQ83-hNanJfntErT1I77B"
+ ],
+ "popularity": 70.855,
+ "posterPath": "https://image.tmdb.org/t/p/w342/liLN69YgoovHVgmlHJ876PKi5Yi.jpg",
+ "releaseDate": "2023-04-18",
+ "title": "Ghosted",
+ "type": "file",
+ "voteAverage": 6.968
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 940721,
+ "backdropPath": "https://image.tmdb.org/t/p/original/fY3lD0jM5AoHJMunjGWqJ0hRteI.jpg",
+ "genres": [
+ "Science Fiction",
+ "Horror",
+ "Action"
+ ],
+ "id": "1WVI8LXNjayJoP0bH9g4OISW22nCuJLV2",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Godzilla.Minus.One.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In postwar Japan, Godzilla brings new devastation to an already scorched landscape. With no military intervention or government help in sight, the survivors must join together in the face of despair and fight back against an unrelenting horror.",
+ "parents": [
+ "1wjZF-6z3mP17RqFbP4iJSSHkKFXRujrU"
+ ],
+ "popularity": 862.771,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hkxxMIGaiCTmrEArK7J56JTKUlB.jpg",
+ "releaseDate": "2023-11-03",
+ "title": "Godzilla Minus One",
+ "type": "file",
+ "voteAverage": 7.653
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 823464,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xRd1eJIDe7JHO5u4gtEYwGn5wtf.jpg",
+ "genres": [
+ "Science Fiction",
+ "Action",
+ "Adventure"
+ ],
+ "id": "1rFSKs-yVMNUMly3FfTOOeHqF5X9gJinM",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Godzilla.X.Kong.The.New.Empire.2024.REPACK.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Following their explosive showdown, Godzilla and Kong must reunite against a colossal undiscovered threat hidden within our world, challenging their very existence \u2013 and our own.",
+ "parents": [
+ "1b1PsmwJbIsZUThVoWfXZk_eVmx_zyI0P"
+ ],
+ "popularity": 1931.335,
+ "posterPath": "https://image.tmdb.org/t/p/w342/z1p34vh7dEOnLDmyCrlUVLuoDzd.jpg",
+ "releaseDate": "2024-03-27",
+ "title": "Godzilla x Kong: The New Empire",
+ "type": "file",
+ "voteAverage": 7.232
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 980489,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xFYpUmB01nswPgbzi8EOCT1ZYFu.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Drama"
+ ],
+ "id": "1xAI4z6mw-afmx8L6YwJiwnbNGWhERcXl",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Gran.Turismo.2023.BLURAY.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The ultimate wish-fulfillment tale of a teenage Gran Turismo player whose gaming skills won him a series of Nissan competitions to become an actual professional racecar driver.",
+ "parents": [
+ "1oUDxRLRBz-JFubH3xFamDxhEKMT_0ZyU"
+ ],
+ "popularity": 116.685,
+ "posterPath": "https://image.tmdb.org/t/p/w342/51tqzRtKMMZEYUpSYkrUE7v9ehm.jpg",
+ "releaseDate": "2023-08-09",
+ "title": "Gran Turismo",
+ "type": "file",
+ "voteAverage": 7.847
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 447365,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5YZbUmjbMa3ClvSW1Wj3D6XGolb.jpg",
+ "genres": [
+ "Science Fiction",
+ "Adventure",
+ "Action"
+ ],
+ "id": "1tpoFRmLmifwNVwHnyz1Yw_tFQ9AIRH4O",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Guardians.Of.The.Galaxy.Vol..3.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Peter Quill, still reeling from the loss of Gamora, must rally his team around him to defend the universe along with protecting one of their own. A mission that, if not completed successfully, could quite possibly lead to the end of the Guardians as we know them.",
+ "parents": [
+ "1xIQcDehPBrVYkLgeJHemKAkFCK1PaFGw"
+ ],
+ "popularity": 146.965,
+ "posterPath": "https://image.tmdb.org/t/p/w342/r2J02Z2OpNTctfOSN1Ydgii51I3.jpg",
+ "releaseDate": "2023-05-03",
+ "title": "Guardians of the Galaxy Vol. 3",
+ "type": "file",
+ "voteAverage": 7.974
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 724209,
+ "backdropPath": "https://image.tmdb.org/t/p/original/j7eWbnyeTN0rFpNCkSzIl7HhQ2C.jpg",
+ "genres": [
+ "Thriller",
+ "Action"
+ ],
+ "id": "1QuvMqtjtZL-BvVcuGez3M3DGwF8fii-Y",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Heart.Of.Stone.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "An intelligence operative for a shadowy global peacekeeping agency races to stop a hacker from stealing its most valuable \u2014 and dangerous \u2014 weapon.",
+ "parents": [
+ "1xpLoj8TCpTZXuTMs_9194cWjQU37clvT"
+ ],
+ "popularity": 57.378,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vB8o2p4ETnrfiWEgVxHmHWP9yRl.jpg",
+ "releaseDate": "2023-08-09",
+ "title": "Heart of Stone",
+ "type": "file",
+ "voteAverage": 6.831
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1RQztu-g-oYDNOOVmya_YnGHybpZ-p0Ce",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Hundreds.Of.Beavers.2022.1080p.WEBRip.x264.AAC-[YTS.MX].mp4",
+ "overview": null,
+ "parents": [
+ "18ljQhYBH5lL08W9TzjhfaQhPMMe3ZXof"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "2022-01-01",
+ "title": "Hundreds Of Beavers",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1027073,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hd95kH9RgN3W78UaFU6Sdpy9Mfl.jpg",
+ "genres": [
+ "Action",
+ "Thriller"
+ ],
+ "id": "1ojh4vxezOL9wePaSmeaXMd4HRW1W2l05",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "In.The.Land.Of.Saints.And.Sinners.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In a remote Irish village, a damaged Finbar is forced to fight for redemption after a lifetime of sins, but what price is he willing to pay? In the land of saints and sinners, some sins can't be buried.",
+ "parents": [
+ "1Rj8f-RdNrx9SkzcaAqnmTjUhJ7NVomZh"
+ ],
+ "popularity": 82.188,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uOa6TNXi3LUHrqIp9xiWNyOyyCF.jpg",
+ "releaseDate": "2023-10-06",
+ "title": "In the Land of Saints and Sinners",
+ "type": "file",
+ "voteAverage": 6.5
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 335977,
+ "backdropPath": "https://image.tmdb.org/t/p/original/35z8hWuzfFUZQaYog8E9LsXW3iI.jpg",
+ "genres": [
+ "Adventure",
+ "Action"
+ ],
+ "id": "1HWjMqfB3SOm6Mb8XvJdtgJk45ls-Yx2Y",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Indiana.Jones.And.The.Dial.Of.Destiny.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Finding himself in a new era, and approaching retirement, Indy wrestles with fitting into a world that seems to have outgrown him. But as the tentacles of an all-too-familiar evil return in the form of an old rival, Indy must don his hat and pick up his whip once more to make sure an ancient and powerful artifact doesn't fall into the wrong hands.",
+ "parents": [
+ "1KJ-d_1SBtO2MgeNg8PbfGBq1RIZyovta"
+ ],
+ "popularity": 100.68,
+ "posterPath": "https://image.tmdb.org/t/p/w342/Af4bXE63pVsb2FtbW8uYIyPBadD.jpg",
+ "releaseDate": "2023-06-25",
+ "title": "Indiana Jones and the Dial of Destiny",
+ "type": "file",
+ "voteAverage": 6.597
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 855400,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zdoxq5iQ2Wlg7VQRG67bAmXOWqZ.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Mystery"
+ ],
+ "id": "1Q1m2Ymy4BMElirMGxQDzPRkgrlF2DBNk",
+ "language": "ta",
+ "mimeType": "video/mp4",
+ "name": "Jai.Bhim.2021.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A pregnant woman from a primitive tribal community, searches desperately for her husband, who is missing from police custody. So as to find her husband and seek justice for them, as their voice, a High Court advocate rises in support. Will their battle for justice succeed?",
+ "parents": [
+ "1WWeqULej1CfNOA2AatMzmGwvqbgMhY5m"
+ ],
+ "popularity": 9.086,
+ "posterPath": "https://image.tmdb.org/t/p/w342/zb9QBUn5AZzoKCS2jsnhp6ySSGp.jpg",
+ "releaseDate": "2021-11-02",
+ "title": "Jai Bhim",
+ "type": "file",
+ "voteAverage": 7.492
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 592898,
+ "backdropPath": "https://image.tmdb.org/t/p/original/vKZBHAivnppDOvfo0JtqmIBIbTz.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1UrSMCA0IXkilttMn3xWnJYLLNqyvNngX",
+ "language": "te",
+ "mimeType": "video/mp4",
+ "name": "Jersey.2019.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After his career fails to take off, a gifted cricketer in his mid-thirties decides that he\u2019s not ready to give up quite yet.",
+ "parents": [
+ "1pfxTBCqa1SZBaVt_82gX_ctipkegZmEc"
+ ],
+ "popularity": 5.663,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bU9q9yVtxeBiC0Do27CekHXNE6D.jpg",
+ "releaseDate": "2019-04-19",
+ "title": "Jersey",
+ "type": "file",
+ "voteAverage": 8.031
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 603692,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7I6VUdPj6tQECNHdviJkUHD2u89.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1qqOpjJ8O2quoEBYDhWAyBrnZPAHyRK3Z",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "John.Wick.Chapter.4.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "With the price on his head ever increasing, John Wick uncovers a path to defeating The High Table. But before he can earn his freedom, Wick must face off against a new enemy with powerful alliances across the globe and forces that turn old friends into foes.",
+ "parents": [
+ "1bFAGijhBbdylIK793TrzOg4feoSTWgx4"
+ ],
+ "popularity": 189.474,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vZloFAK7NmvMGKE7VkF5UHaz0I.jpg",
+ "releaseDate": "2023-03-22",
+ "title": "John Wick: Chapter 4",
+ "type": "file",
+ "voteAverage": 7.74
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 507086,
+ "backdropPath": "https://image.tmdb.org/t/p/original/698FjyzLdpgXmUSr63LaRwblTmx.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "1rG1WHB6dqTLDpJxQz-ii3uFWVMA4iuR6",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Jurassic.World.Dominion.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Four years after Isla Nublar was destroyed, dinosaurs now live\u2014and hunt\u2014alongside humans all over the world. This fragile balance will reshape the future and determine, once and for all, whether human beings are to remain the apex predators ona planet they now share with history's most fearsome creatures.",
+ "parents": [
+ "1Pr5Xv5x3gKGsrGxjNLss6AxnjogNRgG1"
+ ],
+ "popularity": 123.741,
+ "posterPath": "https://image.tmdb.org/t/p/w342/kAVRgw7GgK1CfYEJq8ME6EvRIgU.jpg",
+ "releaseDate": "2022-06-01",
+ "title": "Jurassic World Dominion",
+ "type": "file",
+ "voteAverage": 6.714
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 587030,
+ "backdropPath": "https://image.tmdb.org/t/p/original/k5iCKAV2VVyXGQbuYRLPmSXiBwm.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Crime"
+ ],
+ "id": "13ZiwCAXUbJ8N1UZcA-lxsa_2NL0u4sSl",
+ "language": "ta",
+ "mimeType": "video/mp4",
+ "name": "Kaithi.2019.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Dilli, a convicted criminal, is out on parole to meet his daughter. However, a drug bust sets him off on a mission to save the life of police officers.",
+ "parents": [
+ "1LG6RuqfQqx1ekXpYd7tr44Fs1YI-_pTv"
+ ],
+ "popularity": 8.804,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hOF9CgPsy9aLr5GJEBESC8MEXFy.jpg",
+ "releaseDate": "2019-10-25",
+ "title": "Kaithi",
+ "type": "file",
+ "voteAverage": 7.5
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 254,
+ "backdropPath": "https://image.tmdb.org/t/p/original/14xx5Tf58mD8FRJ1B3BspiLiRxz.jpg",
+ "genres": [
+ "Adventure",
+ "Drama",
+ "Action"
+ ],
+ "id": "1ckmEvROTk6PKdO_zFY9IYoi3kn7LaTXj",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "King Kong (2005) - HD.mp4",
+ "overview": "In 1933 New York, an overly ambitious movie producer coerces his cast and hired ship crew to travel to mysterious Skull Island, where they encounter Kong, a giant ape who is immediately smitten with the leading lady.",
+ "parents": [
+ "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB"
+ ],
+ "popularity": 63.281,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4fNOp3itFBw7L28kAHxwRPqyZ2K.jpg",
+ "releaseDate": "2005-12-12",
+ "title": "King Kong",
+ "type": "file",
+ "voteAverage": 6.888
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 575351,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8i8ml0LRdFT6LSaTMUG3gLzJfEq.jpg",
+ "genres": [
+ "Comedy",
+ "Drama",
+ "Romance"
+ ],
+ "id": "1qHDYMfv9Mplzg0Kc5VvPx8WHBaIdbBSv",
+ "language": "ml",
+ "mimeType": "video/mp4",
+ "name": "Kumbalangi.Nights.2019.1080p.WEBRip.x264.AAC-[YTS.MX].mp4",
+ "overview": "Four brothers living in the fishing hamlet of Kumbalangi share a love-hate relationship with each other. Their relationship progresses to another level when Saji, Boney and Franky decide to help Bobby stand by his love.",
+ "parents": [
+ "1y1mIC4sJSfrNQQCBKkZRTP-3ph7C6Qst"
+ ],
+ "popularity": 7.674,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lJ3RvIirE2C7gdBKvPRaoQ3iCo2.jpg",
+ "releaseDate": "2019-02-07",
+ "title": "Kumbalangi Nights",
+ "type": "file",
+ "voteAverage": 8.044
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1011985,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kYgQzzjNis5jJalYtIHgrom0gOx.jpg",
+ "genres": [
+ "Animation",
+ "Action",
+ "Family",
+ "Comedy",
+ "Fantasy"
+ ],
+ "id": "1SFgYih06PV2Q8BCbbeCjpgX1KmTVXffy",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "kung fu panda.mp4",
+ "overview": "Po is gearing up to become the spiritual leader of his Valley of Peace, but also needs someone to take his place as Dragon Warrior. As such, he will train a new kung fu practitioner for the spot and will encounter a villain called the Chameleon who conjures villains from the past.",
+ "parents": [
+ "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB"
+ ],
+ "popularity": 705.24,
+ "posterPath": "https://image.tmdb.org/t/p/w342/kDp1vUBnMpe8ak4rjgl3cLELqjU.jpg",
+ "releaseDate": "2024-03-02",
+ "title": "Kung Fu Panda 4",
+ "type": "file",
+ "voteAverage": 7.1
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1ueBYutbfXdRsEgSCQkUOU_WRfKzHiDJt",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Late.Night.With.The.Devil.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": null,
+ "parents": [
+ "1kH482gtXw_SfS9gkCEGx7a6JSax7D5F-"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "2023-01-01",
+ "title": "Late Night With The Devil",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 7508,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5dF4FNwM2qZIuF0WCUs5zvDGU2H.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "13E64vPGN5qvIy4aIphb5lKdHMYfgCTr4",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Like.Stars.On.Earth.2007.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Ishaan Awasthi is an eight-year-old whose world is filled with wonders that no one else seems to appreciate. Colours, fish, dogs, and kites don't seem important to the adults, who are much more interested in things like homework, marks, and neatness. Ishaan cannot seem to get anything right in class; he is then sent to boarding school, where his life changes forever.",
+ "parents": [
+ "1MhVBW_5FO09ETl7ffHQgwoJU5snWOOLo"
+ ],
+ "popularity": 22.126,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fwXhw9bERqKrJfJK6WGakPIh3FS.jpg",
+ "releaseDate": "2007-12-21",
+ "title": "Like Stars on Earth",
+ "type": "file",
+ "voteAverage": 7.994
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 9659,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2eYiXlynI2mSuYJPUkHupJm2dJp.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Thriller",
+ "Science Fiction"
+ ],
+ "id": "1E0BLrS-T6Ykto3EgelwIO2ozF8R79CZx",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Mad.Max.1979.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "In the ravaged near-future, a savage motorcycle gang rules the road. Terrorizing innocent civilians while tearing up the streets, the ruthless gang laughs in the face of a police force hell-bent on stopping them.",
+ "parents": [
+ "1HUp_ho4TFnHoHlxwsMbDd4v7uOwzg16u"
+ ],
+ "popularity": 84.002,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5LrI4GiCSrChgkdskVZiwv643Kg.jpg",
+ "releaseDate": "1979-04-12",
+ "title": "Mad Max",
+ "type": "file",
+ "voteAverage": 6.687
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1_BC0KW7pTNLHtYKHzqPVSI89qdFi-OiL",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Mad.Max.2.The.Road.Warrior.1980.1080p.BRrip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1H1N3XfOZNrPxC7H4QU8RG8N7gw7gTfoM"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "1980-01-01",
+ "title": "Mad Max 2 The Road Warrior",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 76341,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8yACFuo4OaIiKr9hHFlmPcGalKx.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1WMPJG1I5bpK3TfK2usWYs2X6BXO-eYwn",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Mad.Max.Fury.Road.2015.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "An apocalyptic story set in the furthest reaches of our planet, in a stark desert landscape where humanity is broken, and most everyone is crazed fighting for the necessities of life. Within this world exist two rebels on the run who just might be able to restore order.",
+ "parents": [
+ "1hdhDSPv86aeO9p03-MhzmxTym1UGnKdk"
+ ],
+ "popularity": 316.372,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hA2ple9q4qnwxp3hKVNhroipsir.jpg",
+ "releaseDate": "2015-05-13",
+ "title": "Mad Max: Fury Road",
+ "type": "file",
+ "voteAverage": 7.599
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 634492,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pwGmXVKUgKN13psUjlhC9zBcq1o.jpg",
+ "genres": [
+ "Action",
+ "Fantasy"
+ ],
+ "id": "1UpQV7XoQDh9wLmVWHyVpnkibm3eY7rOw",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Madame.Web.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Forced to confront revelations about her past, paramedic Cassandra Webb forges a relationship with three young women destined for powerful futures...if they can all survive a deadly present.",
+ "parents": [
+ "1vT89bhMjtPIJMqR2cyHHOLwbrb0vm-aX"
+ ],
+ "popularity": 385.219,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rULWuutDcN5NvtiZi4FRPzRYWSh.jpg",
+ "releaseDate": "2024-02-14",
+ "title": "Madame Web",
+ "type": "file",
+ "voteAverage": 5.601
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 586810,
+ "backdropPath": "https://image.tmdb.org/t/p/original/yIOw17XdfsoCaydtrkzlZBCcHk6.jpg",
+ "genres": [
+ "Animation",
+ "Science Fiction",
+ "Action",
+ "Mystery"
+ ],
+ "id": "1hF24bcqRsvp2t1-OJfVYm6VXazvr1-3k",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "Mars.Express.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In 2200, private detective Aline Ruby and her android partner Carlos Rivera are hired by a wealthy businessman to track down a notorious hacker. On Mars, they descend deep into the underbelly of the planet's capital city where they uncover a darker story of brain farms, corruption, and a missing girl who holds a secret about the robots that threatens to change the face of the universe.",
+ "parents": [
+ "1sBAhCoo8ZU6ZjXU9kB5ogRLyrYsUt4uA"
+ ],
+ "popularity": 45.212,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mpGbDJUsPdnoy4Xukz7S4tZRciN.jpg",
+ "releaseDate": "2023-11-22",
+ "title": "Mars Express",
+ "type": "file",
+ "voteAverage": 7.674
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 615656,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5mzr6JZbrqnqD8rCEvPhuCE5Fw2.jpg",
+ "genres": [
+ "Action",
+ "Science Fiction",
+ "Horror"
+ ],
+ "id": "15PtgV6vAen8YJ1AyjsjI8d9Tplp69fV4",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Meg.2.The.Trench.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "An exploratory dive into the deepest depths of the ocean of a daring research team spirals into chaos when a malevolent mining operation threatens their mission and forces them into a high-stakes battle for survival.",
+ "parents": [
+ "1m-JK8RJfSgrhGkz1Gd10pkGsWxVB7O5p"
+ ],
+ "popularity": 155.125,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4m1Au3YkjqsxF8iwQy0fPYSxE0h.jpg",
+ "releaseDate": "2023-08-02",
+ "title": "Meg 2: The Trench",
+ "type": "file",
+ "voteAverage": 6.561
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 575264,
+ "backdropPath": "https://image.tmdb.org/t/p/original/628Dep6AxEtDxjZoGP78TsOxYbK.jpg",
+ "genres": [
+ "Action",
+ "Thriller"
+ ],
+ "id": "1zPtf4BOpSGHkfSeImDa6q22LGl1ztCml",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Mission.Impossible.-.Dead.Reckoning.Part.One.2023.BLURAY.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Ethan Hunt and his IMF team embark on their most dangerous mission yet: To track down a terrifying new weapon that threatens all of humanity before it falls into the wrong hands. With control of the future and the world's fate at stake and dark forces from Ethan's past closing in, a deadly race around the globe begins. Confronted by a mysterious, all-powerful enemy, Ethan must consider that nothing can matter more than his mission\u2014not even the lives of those he cares about most.",
+ "parents": [
+ "19XzmB6y_2DjltPUlgjOj_ktiNuifyYJZ"
+ ],
+ "popularity": 143.671,
+ "posterPath": "https://image.tmdb.org/t/p/w342/NNxYkU70HPurnNCSiCjYAmacwm.jpg",
+ "releaseDate": "2023-07-08",
+ "title": "Mission: Impossible - Dead Reckoning Part One",
+ "type": "file",
+ "voteAverage": 7.544
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 406759,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8QpzqK3nPGxpqpKqhe6QasTGBWQ.jpg",
+ "genres": [
+ "Science Fiction",
+ "Adventure",
+ "Action"
+ ],
+ "id": "1a9bNQrSdSLNNX_3I7Q4n2rwT9rc2ZsQ0",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Moonfall.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A mysterious force knocks the moon from its orbit around Earth and sends it hurtling on a collision course with life as we know it.",
+ "parents": [
+ "14-3SSoSry7oJgs49OX0OMlQzUEwzU5XI"
+ ],
+ "popularity": 63.721,
+ "posterPath": "https://image.tmdb.org/t/p/w342/odVv1sqVs0KxBXiA8bhIBlPgalx.jpg",
+ "releaseDate": "2022-02-03",
+ "title": "Moonfall",
+ "type": "file",
+ "voteAverage": 6.33
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 526896,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gG9fTyDL03fiKnOpf2tr01sncnt.jpg",
+ "genres": [
+ "Action",
+ "Science Fiction",
+ "Fantasy"
+ ],
+ "id": "1gOUARGP51Ddc7UGE3OwWes1VQEjTwhPj",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Morbius.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Dangerously ill with a rare blood disorder, and determined to save others suffering his same fate, Dr. Michael Morbius attempts a desperate gamble. What at first appears to be a radical success soon reveals itself to be a remedy potentially worse than the disease.",
+ "parents": [
+ "1Ag5kWvxgbM31CtM_aMTTWz-J-JEFqtsU"
+ ],
+ "popularity": 328.775,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6JjfSchsU6daXk2AKX8EEBjO3Fm.jpg",
+ "releaseDate": "2022-03-30",
+ "title": "Morbius",
+ "type": "file",
+ "voteAverage": 6.038
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1093231,
+ "backdropPath": "https://image.tmdb.org/t/p/original/m0XCtFisSD0O6P55G1pUHdFccuL.jpg",
+ "genres": [
+ "Romance",
+ "Comedy"
+ ],
+ "id": "1ByROqlFSnur_TCWCeipr2Nbh4PFQZQUu",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Mother.Of.The.Bride.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A doting mom jets off to a tropical island resort for her daughter's wedding \u2014 only to discover the groom's father is the ex she hasn't seen in decades.",
+ "parents": [
+ "1LVOmxC3IgegfJ4xoDC79Gxv-FyENSnDw"
+ ],
+ "popularity": 129.687,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vdTvwykMWvVgdaViBVRh8IFTku5.jpg",
+ "releaseDate": "2024-05-08",
+ "title": "Mother of the Bride",
+ "type": "file",
+ "voteAverage": 5.949
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 753342,
+ "backdropPath": "https://image.tmdb.org/t/p/original/eHMh7kChaNeD4VTdMCXLJbRTzcI.jpg",
+ "genres": [
+ "History",
+ "War",
+ "Romance"
+ ],
+ "id": "19VG2EFAsU2ncduhmSDtoQTZadI_z6KR1",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Napoleon.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "An epic that details the checkered rise and fall of French Emperor Napoleon Bonaparte and his relentless journey to power through the prism of his addictive, volatile relationship with his wife, Josephine.",
+ "parents": [
+ "10GVZgoAedJKIb44OwIZqz4SzIlXR49qz"
+ ],
+ "popularity": 153.909,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vcZWJGvB5xydWuUO1vaTLI82tGi.jpg",
+ "releaseDate": "2023-11-22",
+ "title": "Napoleon",
+ "type": "file",
+ "voteAverage": 6.445
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 378227,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mUbq0l1nGHbyFyNncxvLJMKXMUw.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1unpBJIaClFiyY05GdPaf3iaoVWBGH8gw",
+ "language": "mr",
+ "mimeType": "video/mp4",
+ "name": "Natsamrat.2016.1080p.WEBRip.x264-[YTS.AM].mp4",
+ "overview": "Appa, a veteran theatre actor who has primarily worked in adaptations of Shakespeare's plays, falls upon hard times in his old age.",
+ "parents": [
+ "1ILozwJrZVS-wzu--CNZmZsV37hf9iBuR"
+ ],
+ "popularity": 9.331,
+ "posterPath": "https://image.tmdb.org/t/p/w342/idpdndC9eRM4CLH3rttMaMAeXv.jpg",
+ "releaseDate": "2016-01-01",
+ "title": "Natsamrat",
+ "type": "file",
+ "voteAverage": 8.1
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1015606,
+ "backdropPath": "https://image.tmdb.org/t/p/original/PSBUyz5jXYqKr2OvLhQWmTbmSx.jpg",
+ "genres": [
+ "Documentary"
+ ],
+ "id": "1q0S9oh4aBXGDY7dh7MPpB1vDUG9vw_yX",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Obi-Wan.Kenobi.2022.1080p.WEBRip.x264.AAC-[YTS.MX].mp4",
+ "overview": "A new documentary that showcases the making of the epic limited series. Features never-before-seen, behind-the-scenes footage, interviews and visits to the creature shop and props department.",
+ "parents": [
+ "1Fvkb0Y2jitq3OCY-naZ4AnobsERywFXj"
+ ],
+ "popularity": 16.603,
+ "posterPath": "https://image.tmdb.org/t/p/w342/wn6LkWQst96dPGEkn8Cl2TnNnLp.jpg",
+ "releaseDate": "2022-09-08",
+ "title": "Obi-Wan Kenobi: A Jedi's Return",
+ "type": "file",
+ "voteAverage": 6.8
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 739405,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7TdVWAO7vV9j1OLDq1hQJS3pb4U.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Comedy",
+ "Adventure"
+ ],
+ "id": "1jr-OX42gmDRTJPbs4QoH1Hy6eKhgFa5d",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Operation.Fortune.Ruse.De.Guerre.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Special agent Orson Fortune and his team of operatives recruit one of Hollywood's biggest movie stars to help them on an undercover mission when the sale of a deadly new weapons technology threatens to disrupt the world order.",
+ "parents": [
+ "1biEvN224WuEJKQoLL7DDOlGegi2PWN4d"
+ ],
+ "popularity": 68.775,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uo7vWfQUlVwueYTDRicXOJa8Oow.jpg",
+ "releaseDate": "2023-01-04",
+ "title": "Operation Fortune: Ruse de Guerre",
+ "type": "file",
+ "voteAverage": 6.511
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 872585,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nb3xI8XI3w4pMVZ38VijbsyBqP4.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1SIxoY-EAtL75SXKQnPK2ZcnEK-vtQV5r",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Oppenheimer.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The story of J. Robert Oppenheimer's role in the development of the atomic bomb during World War II.",
+ "parents": [
+ "10wlsrYvByDyU9HUK5CJN4Tlu0yAu-juM"
+ ],
+ "popularity": 528.011,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8Gxv8gSFCU0XGDykEGv7zR1n2ua.jpg",
+ "releaseDate": "2023-07-19",
+ "title": "Oppenheimer",
+ "type": "file",
+ "voteAverage": 8.096
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 792307,
+ "backdropPath": "https://image.tmdb.org/t/p/original/fS89P93Lq6pyT7d8ox8AMAEtXUs.jpg",
+ "genres": [
+ "Science Fiction",
+ "Romance",
+ "Comedy"
+ ],
+ "id": "1gF5mMMmOb3uPa6J7aFMFlGvWTjh2Tlfj",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Poor.Things.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Brought back to life by an unorthodox scientist, a young woman runs off with a lawyer on a whirlwind adventure across the continents. Free from the prejudices of her times, she grows steadfast in her purpose to stand for equality and liberation.",
+ "parents": [
+ "1UimfYvt5wpNA59QVwoVLn-B-sd21d-OH"
+ ],
+ "popularity": 188.68,
+ "posterPath": "https://image.tmdb.org/t/p/w342/kCGlIMHnOm8JPXq3rXM6c5wMxcT.jpg",
+ "releaseDate": "2023-12-07",
+ "title": "Poor Things",
+ "type": "file",
+ "voteAverage": 7.8
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 766507,
+ "backdropPath": "https://image.tmdb.org/t/p/original/udhU4oOPxAiNltoMVddSRq3lLAk.jpg",
+ "genres": [
+ "Thriller",
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "1REzKYlIXsLdhBpDhcghqh-8rtoX78X48",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Prey.2022.BLURAY.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "When danger threatens her camp, the fierce and highly skilled Comanche warrior Naru sets out to protect her people. But the prey she stalks turns out to be a highly evolved alien predator with a technically advanced arsenal.",
+ "parents": [
+ "1_ntW6-jt5tPOOXwRLT3Zlthw16JpIe6n"
+ ],
+ "popularity": 272.405,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ujr5pztc1oitbe7ViMUOilFaJ7s.jpg",
+ "releaseDate": "2022-08-02",
+ "title": "Prey",
+ "type": "file",
+ "voteAverage": 7.718
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 315162,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jr8tSoJGj33XLgFBy6lmZhpGQNu.jpg",
+ "genres": [
+ "Animation",
+ "Adventure",
+ "Fantasy",
+ "Comedy",
+ "Family"
+ ],
+ "id": "1K_azMPMiIgzOdl0Fw3jVfBhexZEbzYp6",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Puss.In.Boots.The.Last.Wish.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Puss in Boots discovers that his passion for adventure has taken its toll: He has burned through eight of his nine lives, leaving him with only one life left. Puss sets out on an epic journey to find the mythical Last Wish and restore his nine lives.",
+ "parents": [
+ "15sZMgJZsMgJqzrjVPfvluIr-Uk14gqoV"
+ ],
+ "popularity": 171.007,
+ "posterPath": "https://image.tmdb.org/t/p/w342/kuf6dutpsT0vSVehic3EZIqkOBt.jpg",
+ "releaseDate": "2022-12-07",
+ "title": "Puss in Boots: The Last Wish",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1034065,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gbcfYmjFUMbH3vZiA4Bdv7HwRWi.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1Au5wRwEHAD9xa1dY_fWa79muln1jebcv",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Rise.Of.The.Footsoldier.Vengeance.2023.BLURAY.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Pat Tate embarks on a rampage to avenge his loyal and trusted footsoldier's violent death, venturing beyond his comfort zone of Essex into the dark side of 90s Soho to track down the villain responsible. Set to execute his revenge, Tate will stop at nothing even as the world around him starts to explode.",
+ "parents": [
+ "1hKbF4-GuprIxkeeoinfz-ZSMxYQa6gwR"
+ ],
+ "popularity": 7.774,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ejQVG3vDAT1V2oCEpH6Ujz8uE8q.jpg",
+ "releaseDate": "2023-09-15",
+ "title": "Rise of the Footsoldier: Vengeance",
+ "type": "file",
+ "voteAverage": 5.778
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 607145,
+ "backdropPath": "https://image.tmdb.org/t/p/original/c3lLlZcs27jARdt6id9YM1PLN1Z.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1hkt9VJVXWZD0P-ut7kLoUQHHqIOek1Ph",
+ "language": "ta",
+ "mimeType": "video/mp4",
+ "name": "Rocketry.The.Nambi.Effect.2022.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The story of a great Indian rocket scientist, a true patriot, who was turned into a villain in the blink of an eye. Rocketry: The Nambi Effect is a retelling of Shri Nambi Narayanan\u02bcs life story as it unravels in an interview by superstar Shah Rukh Khan.",
+ "parents": [
+ "1GbTvJLZSMmZXqr3tv1tfYyv1JEqawg2F"
+ ],
+ "popularity": 6.206,
+ "posterPath": "https://image.tmdb.org/t/p/w342/o7A1agEoXvwyyOmIbHnUhfnC34j.jpg",
+ "releaseDate": "2022-07-01",
+ "title": "Rocketry: The Nambi Effect",
+ "type": "file",
+ "voteAverage": 7.4
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 579974,
+ "backdropPath": "https://image.tmdb.org/t/p/original/i0Y0wP8H6SRgjr6QmuwbtQbS24D.jpg",
+ "genres": [
+ "Action",
+ "Drama"
+ ],
+ "id": "1j0zdEyibcxzRSDo_-Hfxg6-k8WsfMNxQ",
+ "language": "te",
+ "mimeType": "video/mp4",
+ "name": "RRR.2022.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A fictional history of two legendary revolutionaries' journey away from home before they began fighting for their country in the 1920s.",
+ "parents": [
+ "1oQbJNYRb_N7mcM71tm7LDEQWfAjdWsF1"
+ ],
+ "popularity": 50.534,
+ "posterPath": "https://image.tmdb.org/t/p/w342/u0XUBNQWlOvrh0Gd97ARGpIkL0.jpg",
+ "releaseDate": "2022-03-24",
+ "title": "RRR",
+ "type": "file",
+ "voteAverage": 7.769
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 594767,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zRQITMLvVi8z2Xz12Bi6wvbZE82.jpg",
+ "genres": [
+ "Comedy",
+ "Action",
+ "Fantasy"
+ ],
+ "id": "14cERnxcblo-O6Y8vXyn85SqkqJWTnAvl",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Shazam.Fury.Of.The.Gods.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Billy Batson and his foster siblings, who transform into superheroes by saying \"Shazam!\", are forced to get back into action and fight the Daughters of Atlas, who they must stop from using a weapon that could destroy the world.",
+ "parents": [
+ "1gR9Aqhy61Rk0U0Fxjal-t41mLdirn3NQ"
+ ],
+ "popularity": 86.143,
+ "posterPath": "https://image.tmdb.org/t/p/w342/A3ZbZsmsvNGdprRi2lKgGEeVLEH.jpg",
+ "releaseDate": "2023-03-15",
+ "title": "Shazam! Fury of the Gods",
+ "type": "file",
+ "voteAverage": 6.556
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 840326,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pBdQ4iorzRV2G38mdS6rzrmUfMA.jpg",
+ "genres": [
+ "Action",
+ "War",
+ "Adventure"
+ ],
+ "id": "1CzcvLI-unXzjTkiyiX3zk9_LCaBcD7b0",
+ "language": "fi",
+ "mimeType": "video/mp4",
+ "name": "Sisu.2022.BLURAY.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "When an ex-soldier who discovers gold in the Lapland wilderness tries to take the loot into the city, German soldiers led by a brutal SS officer battle him.",
+ "parents": [
+ "1GzLzQW0WYDOVWb46hPwTRsQOzwqjyvPq"
+ ],
+ "popularity": 78.386,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ygO9lowFMXWymATCrhoQXd6gCEh.jpg",
+ "releaseDate": "2022-09-09",
+ "title": "Sisu",
+ "type": "file",
+ "voteAverage": 7.484
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 894803,
+ "backdropPath": "https://image.tmdb.org/t/p/original/k38sLjhQsdLRJZCu3hIL7RcGo3A.jpg",
+ "genres": [
+ "Romance",
+ "Drama"
+ ],
+ "id": "1YsCl_qPSuDQe3LDT5ToJbCjrTU101IWd",
+ "language": "te",
+ "mimeType": "video/mp4",
+ "name": "Sita.Ramam.2022.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Afreen, a rebellious Pakistani student sets ablaze the car of an Indian in London. Angered Afreen returns to Pakistan to ask for money from her grandfather that she has to pay in a month's time as damages. However, she gets to know that he is no more and the only thing he has left for her is a letter-delivering task, written by Ram to Sita. As Afreen sets out to find Ram, there begins her journey of discovering the secret behind the 20-year-old letter.",
+ "parents": [
+ "1ZDTuN3ShTL-7AX7kU6tVpZZnVIBoO-KO"
+ ],
+ "popularity": 12.105,
+ "posterPath": "https://image.tmdb.org/t/p/w342/g3hk2wEeIsTGhh7JvK8yWFVR7ue.jpg",
+ "releaseDate": "2022-08-05",
+ "title": "Sita Ramam",
+ "type": "file",
+ "voteAverage": 7.779
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 675353,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8wwXPG22aNMpPGuXnfm3galoxbI.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Family",
+ "Comedy"
+ ],
+ "id": "1QooRTQBblyAuSaqa4yhb2G-Vl2d1s3Df",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Sonic.The.Hedgehog.2.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After settling in Green Hills, Sonic is eager to prove he has what it takes to be a true hero. His test comes when Dr. Robotnik returns, this time with a new partner, Knuckles, in search for an emerald that has the power to destroy civilizations. Sonic teams up with his own sidekick, Tails, and together they embark on a globe-trotting journey to find the emerald before it falls into the wrong hands.",
+ "parents": [
+ "1w1CPmX9u258zrvYXhoIjUMRJnvUalCqJ"
+ ],
+ "popularity": 109.178,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6DrHO1jr3qVrViUO6s6kFiAGM7.jpg",
+ "releaseDate": "2022-03-30",
+ "title": "Sonic the Hedgehog 2",
+ "type": "file",
+ "voteAverage": 7.521
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 569094,
+ "backdropPath": "https://image.tmdb.org/t/p/original/4HodYYKEIsGOdinkGi2Ucz6X9i0.jpg",
+ "genres": [
+ "Animation",
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1QYim4DytL8Dzhp-cmG3uAWIVq3Rq5WFo",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Spider-Man.Across.The.Spider-Verse.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After reuniting with Gwen Stacy, Brooklyn\u2019s full-time, friendly neighborhood Spider-Man is catapulted across the Multiverse, where he encounters the Spider Society, a team of Spider-People charged with protecting the Multiverse\u2019s very existence. But when the heroes clash on how to handle a new threat, Miles finds himself pitted against the other Spiders and must set out on his own to save those he loves most.",
+ "parents": [
+ "16bT_-nGdckGcVZoyeEnK2X1BfMELVkzD"
+ ],
+ "popularity": 184.071,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8Vt6mWEReuy4Of61Lnj5Xj704m8.jpg",
+ "releaseDate": "2023-05-31",
+ "title": "Spider-Man: Across the Spider-Verse",
+ "type": "file",
+ "voteAverage": 8.363
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 719221,
+ "backdropPath": "https://image.tmdb.org/t/p/original/oavbmL3iddJUmC8nQjL6bLHwAP4.jpg",
+ "genres": [
+ "Horror",
+ "Thriller"
+ ],
+ "id": "1bRiw4JgG-9GK9Gan_QbHvUjFB1SvEPG7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Tarot.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "When a group of friends recklessly violate the sacred rule of Tarot readings, they unknowingly unleash an unspeakable evil trapped within the cursed cards. One by one, they come face to face with fate and end up in a race against death.",
+ "parents": [
+ "1evnEx0ZOYxtrNxS63JtgA3UB79E6NTKw"
+ ],
+ "popularity": 1540.535,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gAEUXC37vl1SnM7PXsHTF23I2vq.jpg",
+ "releaseDate": "2024-05-01",
+ "title": "Tarot",
+ "type": "file",
+ "voteAverage": 6.5
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 614930,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2Cpg8hUn60PK9CW9d5SWf605Ah8.jpg",
+ "genres": [
+ "Animation",
+ "Comedy",
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "1OHKzn9z6K0v6inKfpBBVvBQw92X8FmYP",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Teenage.Mutant.Ninja.Turtles.Mutant.Mayhem.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After years of being sheltered from the human world, the Turtle brothers set out to win the hearts of New Yorkers and be accepted as normal teenagers through heroic acts. Their new friend April O'Neil helps them take on a mysterious crime syndicate, but they soon get in over their heads when an army of mutants is unleashed upon them.",
+ "parents": [
+ "11TR0KsjtINfTw_sHrphkCYwCGAceD4hr"
+ ],
+ "popularity": 75.233,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ueO9MYIOHO7M1PiMUeX74uf8fB9.jpg",
+ "releaseDate": "2023-07-31",
+ "title": "Teenage Mutant Ninja Turtles: Mutant Mayhem",
+ "type": "file",
+ "voteAverage": 7.247
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 696806,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ewUqXnwiRLhgmGhuksOdLgh49Ch.jpg",
+ "genres": [
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1pgl1fNP4WZa5f897hLxmOvmC2rviZQs1",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Adam.Project.2022.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After accidentally crash-landing in 2022, time-traveling fighter pilot Adam Reed teams up with his 12-year-old self on a mission to save the future.",
+ "parents": [
+ "1b8QUWGLm7G32VREyuCRWgfN2vvfH3l98"
+ ],
+ "popularity": 40.903,
+ "posterPath": "https://image.tmdb.org/t/p/w342/wFjboE0aFZNbVOF05fzrka9Fqyx.jpg",
+ "releaseDate": "2022-03-11",
+ "title": "The Adam Project",
+ "type": "file",
+ "voteAverage": 7.046
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 153518,
+ "backdropPath": "https://image.tmdb.org/t/p/original/o4mhrLxv6I70kvYA42qANGUF7ya.jpg",
+ "genres": [
+ "Animation",
+ "Adventure",
+ "Comedy",
+ "Family"
+ ],
+ "id": "10x9KsKYYJdTGCM3YZachZuPktpR5uN8L",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The Angry Birds Movie (2016).mp4",
+ "overview": "An island populated entirely by happy, flightless birds or almost entirely. In this paradise, Red, a bird with a temper problem, speedy Chuck, and the volatile Bomb have always been outsiders. But when the island is visited by mysterious green piggies, it\u2019s up to these unlikely outcasts to figure out what the pigs are up to.",
+ "parents": [
+ "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB"
+ ],
+ "popularity": 52.621,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iOH0fEFtV9z9rZp9zmBFGGeWicv.jpg",
+ "releaseDate": "2016-05-11",
+ "title": "The Angry Birds Movie",
+ "type": "file",
+ "voteAverage": 6.219
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 414906,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tRS6jvPM9qPrrnx2KRp3ew96Yot.jpg",
+ "genres": [
+ "Crime",
+ "Mystery",
+ "Thriller"
+ ],
+ "id": "1e1-hQU9LFdZMc18m18tiZfXlhLg24-Cd",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Batman.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In his second year of fighting crime, Batman uncovers corruption in Gotham City that connects to his own family while facing a serial killer known as the Riddler.",
+ "parents": [
+ "1D5Z6auAUIKDVbp076CeU1UspZFyDLRLZ"
+ ],
+ "popularity": 450.321,
+ "posterPath": "https://image.tmdb.org/t/p/w342/74xTEgt7R36Fpooo50r9T25onhq.jpg",
+ "releaseDate": "2022-03-01",
+ "title": "The Batman",
+ "type": "file",
+ "voteAverage": 7.677
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 882569,
+ "backdropPath": "https://image.tmdb.org/t/p/original/eTvN54pd83TrSEOz6wbsXEJktCV.jpg",
+ "genres": [
+ "War",
+ "Action",
+ "Thriller"
+ ],
+ "id": "1VZf367QZusoMDpe_zRiNCD0fvYGGISRP",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Covenant.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "During the war in Afghanistan, a local interpreter risks his own life to carry an injured sergeant across miles of grueling terrain.",
+ "parents": [
+ "15nNtBSPdidQRwVJuQjxDu2O_twzES3vO"
+ ],
+ "popularity": 87.2,
+ "posterPath": "https://image.tmdb.org/t/p/w342/kVG8zFFYrpyYLoHChuEeOGAd6Ru.jpg",
+ "releaseDate": "2023-04-19",
+ "title": "Guy Ritchie's The Covenant",
+ "type": "file",
+ "voteAverage": 7.781
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 670292,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kjQBrc00fB2RjHZB3PGR4w9ibpz.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1npi_MG_FbsRkG4aN2xJ0I11An3lt-l0B",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Creator.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Amid a future war between the human race and the forces of artificial intelligence, a hardened ex-special forces agent grieving the disappearance of his wife, is recruited to hunt down and kill the Creator, the elusive architect of advanced AI who has developed a mysterious weapon with the power to end the war\u2014and mankind itself.",
+ "parents": [
+ "1Gg4yJ6QPSbYrsacT_mZ5INHGvP_Mg4Y3"
+ ],
+ "popularity": 207.585,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vBZ0qvaRxqEhZwl6LWmruJqWE8Z.jpg",
+ "releaseDate": "2023-09-27",
+ "title": "The Creator",
+ "type": "file",
+ "voteAverage": 7.102
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 926393,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tC78Pck2YCsUAtEdZwuHYUFYtOj.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1A_8NeGMr2xnThC0qG5epIYs9pAfE48kQ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Equalizer.3.2023.BLURAY.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Robert McCall finds himself at home in Southern Italy but he discovers his friends are under the control of local crime bosses. As events turn deadly, McCall knows what he has to do: become his friends' protector by taking on the mafia.",
+ "parents": [
+ "1rFJ6XMI2GSLSrzsoAm8O10vQpt6JnZk1"
+ ],
+ "popularity": 210.525,
+ "posterPath": "https://image.tmdb.org/t/p/w342/b0Ej6fnXAP8fK75hlyi2jKqdhHz.jpg",
+ "releaseDate": "2023-08-30",
+ "title": "The Equalizer 3",
+ "type": "file",
+ "voteAverage": 7.348
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 746036,
+ "backdropPath": "https://image.tmdb.org/t/p/original/H5HjE7Xb9N09rbWn1zBfxgI8uz.jpg",
+ "genres": [
+ "Action",
+ "Comedy"
+ ],
+ "id": "1MAww1KLPoLW6O8gWirUNfTaquCrKfRnq",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Fall.Guy.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Fresh off an almost career-ending accident, stuntman Colt Seavers has to track down a missing movie star, solve a conspiracy and try to win back the love of his life while still doing his day job.",
+ "parents": [
+ "1Nn_yp-WFV8-dfu-PFRfrAqT7YLtWcxmB"
+ ],
+ "popularity": 1045.932,
+ "posterPath": "https://image.tmdb.org/t/p/w342/tSz1qsmSJon0rqjHBxXZmrotuse.jpg",
+ "releaseDate": "2024-04-24",
+ "title": "The Fall Guy",
+ "type": "file",
+ "voteAverage": 7.286
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 9799,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jY9ef5nqY4xIIMu3yzW3qamUCoi.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Thriller"
+ ],
+ "id": "1Ije392VkIJiXsciCjW2nRvG2i3_G9KyY",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Fast.and.the.Furious.2001.1080p.BrRip.x264.YIFY+HI.mp4",
+ "overview": "Dominic Toretto is a Los Angeles street racer suspected of masterminding a series of big-rig hijackings. When undercover cop Brian O'Conner infiltrates Toretto's iconoclastic crew, he falls for Toretto's sister and must choose a side: the gang or the LAPD.",
+ "parents": [
+ "13QGKZj9zxYU-vN08IEfSyWlGWF_oBy9_"
+ ],
+ "popularity": 6.219,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gqY0ITBgT7A82poL9jv851qdnIb.jpg",
+ "releaseDate": "2001-06-22",
+ "title": "The Fast and the Furious",
+ "type": "file",
+ "voteAverage": 6.978
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1KIhYGqdfv6bE4rS7z1r3XIXvsrNSfp9-",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "The.Fast.and.the.Furious.Tokyo.Drift.2011.1080p.BrRip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1dHryBXi5V0dEW7MfK7pvhY8BCK8DjjxM"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "2011-01-01",
+ "title": "The Fast and the Furious Tokyo Drift",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 437342,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tkHQ7tnYYUEnqlrKuhufIsSVToU.jpg",
+ "genres": [
+ "Horror"
+ ],
+ "id": "1Mw9I8J74oepxzGteoZPRZBKGGyNigq0u",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.First.Omen.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "When a young American woman is sent to Rome to begin a life of service to the church, she encounters a darkness that causes her to question her own faith and uncovers a terrifying conspiracy that hopes to bring about the birth of evil incarnate.",
+ "parents": [
+ "1pcttsSUkz7vMgek-y61jgOsrl0TNyyJL"
+ ],
+ "popularity": 900.725,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uGyiewQnDHPuiHN9V4k2t9QBPnh.jpg",
+ "releaseDate": "2024-04-03",
+ "title": "The First Omen",
+ "type": "file",
+ "voteAverage": 6.8
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 298618,
+ "backdropPath": "https://image.tmdb.org/t/p/original/yF1eOkaYvwiORauRCPWznV9xVvi.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "11n3IapXV7-tcVS0Q26PuGcYHaQYkWaj6",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Flash.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "When his attempt to save his family inadvertently alters the future, Barry Allen becomes trapped in a reality in which General Zod has returned and there are no Super Heroes to turn to. In order to save the world that he is in and return to the future that he knows, Barry's only hope is to race for his life. But will making the ultimate sacrifice be enough to reset the universe?",
+ "parents": [
+ "1nyRx_rKWxrxNbdnL-dJFCRb66DEmg6b_"
+ ],
+ "popularity": 407.294,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rktDFPbfHfUbArZ6OOOKsXcv0Bm.jpg",
+ "releaseDate": "2023-06-13",
+ "title": "The Flash",
+ "type": "file",
+ "voteAverage": 6.733
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 725201,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2u1YBNBlSwvBReyvI7i5z5ykQXP.jpg",
+ "genres": [
+ "Action",
+ "Thriller"
+ ],
+ "id": "15SxpJdqYkvMc2n-gRH6Cek_Lf_TQAxEy",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Gray.Man.2022.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "When a shadowy CIA agent uncovers damning agency secrets, he's hunted across the globe by a sociopathic rogue operative who's put a bounty on his head.",
+ "parents": [
+ "1EEA7DrqSSpHeLIiWFJsFNI2IOfHLJh4U"
+ ],
+ "popularity": 48.055,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5Eom3JsXgQlCj6QIsGCwXkX7wyH.jpg",
+ "releaseDate": "2022-07-13",
+ "title": "The Gray Man",
+ "type": "file",
+ "voteAverage": 6.964
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 695721,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tfRyGlBlsfkCMXpRjMyxG53rbS9.jpg",
+ "genres": [
+ "Drama",
+ "Science Fiction",
+ "Action"
+ ],
+ "id": "1u4DZtk1CtOYUpxv7E8UUSb3NVWnqKSY2",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Hunger.Games.The.Ballad.Of.Songbirds.Snakes.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "64 years before he becomes the tyrannical president of Panem, Coriolanus Snow sees a chance for a change in fortunes when he mentors Lucy Gray Baird, the female tribute from District 12.",
+ "parents": [
+ "1rzCDtg8vyTRefA7vF2lCI2sa-ys1E4Dk"
+ ],
+ "popularity": 145.075,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mBaXZ95R2OxueZhvQbcEWy2DqyO.jpg",
+ "releaseDate": "2023-11-15",
+ "title": "The Hunger Games: The Ballad of Songbirds & Snakes",
+ "type": "file",
+ "voteAverage": 7.151
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 843527,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sI6uCeF8mUlZx22mFfHSi9W3XQ9.jpg",
+ "genres": [
+ "Romance",
+ "Comedy",
+ "Drama"
+ ],
+ "id": "12jgv3MFZNhRNi_GNCJ0wZGbPZrwFmFe_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Idea.Of.You.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Sol\u00e8ne, a 40-year-old single mom, begins an unexpected romance with 24-year-old Hayes Campbell, the lead singer of August Moon, the hottest boy band on the planet. When Sol\u00e8ne must step in to chaperone her teenage daughter's trip to the Coachella Music Festival after her ex bails at the last minute, she has a chance encounter with Hayes and there is an instant, undeniable spark. As they begin a whirlwind romance, it isn't long before Hayes' superstar status poses unavoidable challenges to their relationship, and Sol\u00e8ne soon discovers that life in the glare of his spotlight might be more than she bargained for.",
+ "parents": [
+ "1XUgKcALr7FlqvAsk42s5WQaVZfDnlyL6"
+ ],
+ "popularity": 336.86,
+ "posterPath": "https://image.tmdb.org/t/p/w342/zDi2U7WYkdIoGYHcYbM9X5yReVD.jpg",
+ "releaseDate": "2024-05-02",
+ "title": "The Idea of You",
+ "type": "file",
+ "voteAverage": 7.413
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 850165,
+ "backdropPath": "https://image.tmdb.org/t/p/original/s9uNBc8DTBydKoVa1OzJUjVgVek.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1rs8Q_TdZplf6jpCAwsEDstouiyAnaIjo",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Iron.Claw.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The true story of the inseparable Von Erich brothers, who made history in the intensely competitive world of professional wrestling in the early 1980s. Through tragedy and triumph, under the shadow of their domineering father and coach, the brothers seek larger-than-life immortality on the biggest stage in sports.",
+ "parents": [
+ "12V5KvpRTCwk9aa9_sDefX5dx30mpFJxE"
+ ],
+ "popularity": 74.811,
+ "posterPath": "https://image.tmdb.org/t/p/w342/nfs7DCYhgrEIgxKYbITHTzKsggf.jpg",
+ "releaseDate": "2023-12-21",
+ "title": "The Iron Claw",
+ "type": "file",
+ "voteAverage": 7.606
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 800158,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zEqfkiyWZILZKy2M1lgeGmIRzYR.jpg",
+ "genres": [
+ "Crime",
+ "Thriller"
+ ],
+ "id": "1iiomOY4Fz6rKIvZryHy6pyWWaeciM5S0",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Killer.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After a fateful near-miss, an assassin battles his employers, and himself, on an international manhunt he insists isn't personal.",
+ "parents": [
+ "1CpPl4by68RoKDuN1Qz7Booz_gdhg6skG"
+ ],
+ "popularity": 52.537,
+ "posterPath": "https://image.tmdb.org/t/p/w342/e7Jvsry47JJQruuezjU2X1Z6J77.jpg",
+ "releaseDate": "2023-10-25",
+ "title": "The Killer",
+ "type": "file",
+ "voteAverage": 6.578
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 752623,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1Ds7xy7ILo8u2WWxdnkJth1jQVT.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Comedy"
+ ],
+ "id": "1EzM-Fflma7EMwsQ94hDKZyJ0i75Qyzg2",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Lost.City.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Reclusive author Loretta Sage writes about exotic places in her popular adventure novels that feature a handsome cover model named Alan. While on tour promoting her new book with Alan, Loretta gets kidnapped by an eccentric billionaire who hopes she can lead him to the ancient city's lost treasure that featured in her latest story. Alan, determined to prove he can be a hero in real life and not just on the pages of her books, sets off to rescue her.",
+ "parents": [
+ "1ILti5XmZqltkZ7gTVOcbXuM9DfhX9lQN"
+ ],
+ "popularity": 50.694,
+ "posterPath": "https://image.tmdb.org/t/p/w342/neMZH82Stu91d3iqvLdNQfqPPyl.jpg",
+ "releaseDate": "2022-03-24",
+ "title": "The Lost City",
+ "type": "file",
+ "voteAverage": 6.523
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 609681,
+ "backdropPath": "https://image.tmdb.org/t/p/original/JdT3ywizJIICTZCb4dteyCspON.jpg",
+ "genres": [
+ "Science Fiction",
+ "Adventure",
+ "Action"
+ ],
+ "id": "10OZIBw6GH2Kj9hSacLWIOHf6BtT-WR7U",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Marvels.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Carol Danvers, aka Captain Marvel, has reclaimed her identity from the tyrannical Kree and taken revenge on the Supreme Intelligence. But unintended consequences see Carol shouldering the burden of a destabilized universe. When her duties send her to an anomalous wormhole linked to a Kree revolutionary, her powers become entangled with that of Jersey City super-fan Kamala Khan, aka Ms. Marvel, and Carol\u2019s estranged niece, now S.A.B.E.R. astronaut Captain Monica Rambeau. Together, this unlikely trio must team up and learn to work in concert to save the universe.",
+ "parents": [
+ "1QZLsaADF5R3KtyK0vOZcdRXmIfP-KPWT"
+ ],
+ "popularity": 319.145,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9GBhzXMFjgcZ3FdR9w3bUMMTps5.jpg",
+ "releaseDate": "2023-11-08",
+ "title": "The Marvels",
+ "type": "file",
+ "voteAverage": 6.125
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 799583,
+ "backdropPath": "https://image.tmdb.org/t/p/original/s5znBQmprDJJ553IMQfwEVlfroH.jpg",
+ "genres": [
+ "Action",
+ "War",
+ "Drama"
+ ],
+ "id": "1HQF7lZMoQGaLnnula-Qc91UMP4ic0PSc",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Ministry.Of.Ungentlemanly.Warfare.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "During World War II, the British Army assigns a group of competent soldiers to carry out a mission against the Nazi forces behind enemy lines... A true story about a secret British WWII organization \u2013 the Special Operations Executive. Founded by Winston Churchill, their irregular warfare against the Germans helped to change the course of the war, and gave birth to modern black operations.",
+ "parents": [
+ "1x5HXuNZtH--Jl-ngH4oCQA8_rUIfujU2"
+ ],
+ "popularity": 174.052,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8aF0iAKH9MJMYAZdi0Slg77RYa2.jpg",
+ "releaseDate": "2024-04-18",
+ "title": "The Ministry of Ungentlemanly Warfare",
+ "type": "file",
+ "voteAverage": 7.161
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 552688,
+ "backdropPath": "https://image.tmdb.org/t/p/original/n5NSF8wZeWQHHZtuWgbRAVpqXFR.jpg",
+ "genres": [
+ "Action",
+ "Thriller"
+ ],
+ "id": "1me5Ru6eMI1HbdPk7b-LcbzYeBlU8SI8t",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Mother.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A deadly female assassin comes out of hiding to protect the daughter that she gave up years before, while on the run from dangerous men.",
+ "parents": [
+ "16HA7zVcjTo4oJucn_E5R2ydc9Cv4bxV4"
+ ],
+ "popularity": 40.032,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vnRthEZz16Q9VWcP5homkHxyHoy.jpg",
+ "releaseDate": "2023-05-04",
+ "title": "The Mother",
+ "type": "file",
+ "voteAverage": 6.665
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 639933,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qZYvF1M7y8Gfp4S6OBHbYfB0Lgc.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Fantasy"
+ ],
+ "id": "1GpmwVagMVAlkLrtXr6guWVuDUspKlclQ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Northman.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Prince Amleth is on the verge of becoming a man when his father is brutally murdered by his uncle, who kidnaps the boy's mother. Two decades later, Amleth is now a Viking who's on a mission to save his mother, kill his uncle and avenge his father.",
+ "parents": [
+ "1VVfRp3zwBGqioiTm4tunUBDhHQYsj1PR"
+ ],
+ "popularity": 148.193,
+ "posterPath": "https://image.tmdb.org/t/p/w342/aSSJMnHknzKjlZ6zybwD7eyJ4Po.jpg",
+ "releaseDate": "2022-04-07",
+ "title": "The Northman",
+ "type": "file",
+ "voteAverage": 7.063
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 921636,
+ "backdropPath": "https://image.tmdb.org/t/p/original/fjWcAbHRxCSR4kLGvsPEhNjR2ts.jpg",
+ "genres": [
+ "Romance",
+ "Action",
+ "Comedy"
+ ],
+ "id": "1HCSxH0amgWfv5TMJ_iPpdVt-vspjNIFP",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Out-Laws.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A straight-laced bank manager is about to marry the love of his life. When his bank is held up by infamous Ghost Bandits during his wedding week, he believes his future in-laws who just arrived in town, are the infamous Out-Laws.",
+ "parents": [
+ "1IeiWBjG6JXgHiONabjpW982AdUF9dLU3"
+ ],
+ "popularity": 32.438,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5dliMQ2ODbGNoq0hlefdnuXQxMw.jpg",
+ "releaseDate": "2023-07-07",
+ "title": "The Out-Laws",
+ "type": "file",
+ "voteAverage": 6.036
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 980026,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pydQ0DDDIOwFZ9EucR0LoMLWTvO.jpg",
+ "genres": [
+ "History",
+ "Drama"
+ ],
+ "id": "1QS3qJOczOYQs5dXnyHUV9FhB-0BXFWkg",
+ "language": "da",
+ "mimeType": "video/mp4",
+ "name": "The.Promised.Land.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Denmark, 1755. Captain Ludvig Kahlen sets out to conquer a Danish heath reputed to be uncultivable, with an impossible goal: to establish a colony in the name of the king, in exchange for a royal title. A single-minded ambition that the ruthless lord of the region will relentlessly seek to put down. Kahlen's fate hangs in the balance: will his endevours bring him wealth and honour, or cost him his life...?",
+ "parents": [
+ "1EjEM2pEYc2bPE456epEavDvLCz4sWnM1"
+ ],
+ "popularity": 112.996,
+ "posterPath": "https://image.tmdb.org/t/p/w342/npQgoOWn4fnvOIIyTj4rIV80FXC.jpg",
+ "releaseDate": "2023-10-05",
+ "title": "The Promised Land",
+ "type": "file",
+ "voteAverage": 7.8
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 845111,
+ "backdropPath": "https://image.tmdb.org/t/p/original/91wcqNBLHhKWBIhMknG4qa6ejxE.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Drama"
+ ],
+ "id": "1HcEpBPRx4lyiCCmll9RGvg6pee3mMpXe",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "The.Three.Musketeers.-.Part.II.Milady.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "D'Artagnan, on a quest to rescue the abducted Constance, runs into the mysterious Milady de Winter again. The tension between the Catholics and the Protestants finally escalates, as the king declares war \u2014 forcing the now four musketeers into battle. But as the war goes on, they are tested physically, mentally and emotionally.",
+ "parents": [
+ "1svRkm-1U8FkPq6GCUYyt1H3-BXUhDCv4"
+ ],
+ "popularity": 236.123,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rtosxP5sXuoRFPH4sVbMccLIPiV.jpg",
+ "releaseDate": "2023-12-13",
+ "title": "The Three Musketeers: Milady",
+ "type": "file",
+ "voteAverage": 6.468
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 796185,
+ "backdropPath": "https://image.tmdb.org/t/p/original/f5pYm9znYtntwZYNoVG2tIfvpWq.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Drama",
+ "History"
+ ],
+ "id": "1b86AvAd-QN8fNUSnAs1TLc7lltlJEFBl",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "The.Three.Musketeers.DArtagnan.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "D'Artagnan, a spirited young Gascon, is left for dead after trying to save a noblewoman from being kidnapped. Once in Paris, he tries by all means to find his attackers, unaware that his quest will lead him to the very heart of a war where the future of France is at stake. Aided by King's Musketeers Athos, Porthos and Aramis, he faces the machinations of villainous Cardinal Richelieu and Milady de Winter, while falling in love with Constance, the Queen's confidante.",
+ "parents": [
+ "1TlIZSjPD9s7vmG2tDI-bW6GXuPQBJSoY"
+ ],
+ "popularity": 36.972,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hfExJPcbBtDeFDEb7I1By72Drlr.jpg",
+ "releaseDate": "2023-04-05",
+ "title": "The Three Musketeers: D'Artagnan",
+ "type": "file",
+ "voteAverage": 7.011
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 648579,
+ "backdropPath": "https://image.tmdb.org/t/p/original/M7Kiquud2bjrhQvZXeIrvW0J4a.jpg",
+ "genres": [
+ "Action",
+ "Comedy",
+ "Crime"
+ ],
+ "id": "19Yocw_dMgv_4G7QiSsMGGSl_1SIodij6",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Unbearable.Weight.Of.Massive.Talent.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Creatively unfulfilled and facing financial ruin, Nick Cage must accept a $1 million offer to attend the birthday of a dangerous superfan. Things take a wildly unexpected turn when Cage is recruited by a CIA operative and forced to live up to his own legend, channeling his most iconic and beloved on-screen characters in order to save himself and his loved ones.",
+ "parents": [
+ "13CteQ_KIAvLxJvFreQMT9RqJjK1zBzR1"
+ ],
+ "popularity": 27.531,
+ "posterPath": "https://image.tmdb.org/t/p/w342/aqhLeieyTpTUKPOfZ3jzo2La0Mq.jpg",
+ "releaseDate": "2022-04-20",
+ "title": "The Unbearable Weight of Massive Talent",
+ "type": "file",
+ "voteAverage": 6.772
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 76170,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tqPRfJsrCtX5BvtAP4Bahwhq2dU.jpg",
+ "genres": [
+ "Action",
+ "Science Fiction",
+ "Adventure"
+ ],
+ "id": "19NU-aSlbs_IYsotiXEsXO3bxhdgQxZ4S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The Wolverine (2013).mp4",
+ "overview": "Wolverine faces his ultimate nemesis - and tests of his physical, emotional, and mortal limits - in a life-changing voyage to modern-day Japan.",
+ "parents": [
+ "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB"
+ ],
+ "popularity": 13.579,
+ "posterPath": "https://image.tmdb.org/t/p/w342/xNi8daRmN4XY8rXHd4rwLbJf1cU.jpg",
+ "releaseDate": "2013-07-21",
+ "title": "The Wolverine",
+ "type": "file",
+ "voteAverage": 6.407
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 896,
+ "backdropPath": "https://image.tmdb.org/t/p/original/d3RW7jRsBCHfC9QZaUF9FpzJrh8.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1Jg3JNBI6vEjgRqzcFWhVCOh4fZJn0quq",
+ "language": "bn",
+ "mimeType": "video/mp4",
+ "name": "The.World.Of.Apu.1959.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "Apu is a jobless ex-student dreaming vaguely of a future as a writer. An old college friend talks him into a visit up-country to a village wedding. Preserved by the Academy Film Archive in 1996.",
+ "parents": [
+ "12rfMRYAWUlT_dX65FpeLBh6KgJEiVG0T"
+ ],
+ "popularity": 10.632,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6Tz1Q69o2n3Zwb0ZffzPL0nFt2T.jpg",
+ "releaseDate": "1959-05-01",
+ "title": "Apur Sansar",
+ "type": "file",
+ "voteAverage": 8.155
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 986070,
+ "backdropPath": "https://image.tmdb.org/t/p/original/osnvZffaZymubHiBkOsIFd8Y3Re.jpg",
+ "genres": [
+ "Action",
+ "Horror",
+ "Thriller"
+ ],
+ "id": "1KVvHNbs19mdgZBoHYH8qUY7XqzNhnjhH",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Wrath.Of.Becky.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Two years after she escaped a violent attack on her family, 16-year-old Becky attempts to rebuild her life in the care of an older woman -- a kindred spirit named Elena. However, when a violent group known as the Noble Men break into their home, attack them and take their beloved dog, Becky must return to her old ways to protect herself and her loved ones.",
+ "parents": [
+ "1eFaZg1MWWW29rjPV_1XgCsRZ-yHkCYDa"
+ ],
+ "popularity": 45.016,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uKNCPaxYZgpsLGSHiasA5IisR3e.jpg",
+ "releaseDate": "2023-05-26",
+ "title": "The Wrath of Becky",
+ "type": "file",
+ "voteAverage": 6.351
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 616037,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jsoz1HlxczSuTx0mDl2h0lxy36l.jpg",
+ "genres": [
+ "Fantasy",
+ "Action",
+ "Comedy"
+ ],
+ "id": "1etfphiYlOr4bZXxxDaTmSz8OqyEhXPhU",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Thor.Love.And.Thunder.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After his retirement is interrupted by Gorr the God Butcher, a galactic killer who seeks the extinction of the gods, Thor Odinson enlists the help of King Valkyrie, Korg, and ex-girlfriend Jane Foster, who now wields Mjolnir as the Mighty Thor. Together they embark upon a harrowing cosmic adventure to uncover the mystery of the God Butcher\u2019s vengeance and stop him before it\u2019s too late.",
+ "parents": [
+ "1jJOwdPJkR30Cst9pD8nJNbLxuQqfwVJD"
+ ],
+ "popularity": 171.915,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pIkRyD18kl4FhoCNQuWxWu5cBLM.jpg",
+ "releaseDate": "2022-07-06",
+ "title": "Thor: Love and Thunder",
+ "type": "file",
+ "voteAverage": 6.465
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 605886,
+ "backdropPath": "https://image.tmdb.org/t/p/original/T5xXoFqyc9jNXZIbH4Sw0jwWjw.jpg",
+ "genres": [
+ "Thriller"
+ ],
+ "id": "1xsIRst9HyiVIBXlNbhOJnTiJob-W_nc_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "To.Catch.A.Killer.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Baltimore. New Year's Eve. A talented but troubled police officer is recruited by the FBI's chief investigator to help profile and track down a mass murderer.",
+ "parents": [
+ "1k6147QdvfDzlBMwsLqf30YIG-T2EPCMx"
+ ],
+ "popularity": 41.379,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mFp3l4lZg1NSEsyxKrdi0rNK8r1.jpg",
+ "releaseDate": "2023-04-06",
+ "title": "To Catch a Killer",
+ "type": "file",
+ "voteAverage": 6.943
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 389,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qqHQsStV6exghCM7zbObuYBiYxw.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1lB1v6ZrCQmTYQ7QTKbX2_l_QTF6hCYGj",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "12.Angry.Men.1957.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "The defense and the prosecution have rested and the jury is filing into the jury room to decide if a young Spanish-American is guilty or innocent of murdering his father. What begins as an open and shut case soon becomes a mini-drama of each of the jurors' prejudices and preconceptions about the trial, the accused, and each other.",
+ "parents": [
+ "1_7iEpuCGPc_aeEXVDi8jq8nLwmxaje64"
+ ],
+ "popularity": 74.285,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ow3wq89wM8qd5X7hWKxiRfsFf9C.jpg",
+ "releaseDate": "1957-04-10",
+ "title": "12 Angry Men",
+ "type": "file",
+ "voteAverage": 8.543
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 76203,
+ "backdropPath": "https://image.tmdb.org/t/p/original/4Bb1kMIfrT2tYRZ9M6Jhqy6gkeF.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1lj1nxkkj_yEam1FiJtdpph7heagocAIK",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "12.Years.a.Slave.2013.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "In the pre-Civil War United States, Solomon Northup, a free black man from upstate New York, is abducted and sold into slavery. Facing cruelty as well as unexpected kindnesses Solomon struggles not only to stay alive, but to retain his dignity. In the twelfth year of his unforgettable odyssey, Solomon\u2019s chance meeting with a Canadian abolitionist will forever alter his life.",
+ "parents": [
+ "1wdS6lCq_JhwfZ5cpdGjsweGYKni6X3vM"
+ ],
+ "popularity": 32.045,
+ "posterPath": "https://image.tmdb.org/t/p/w342/xdANQijuNrJaw1HA61rDccME4Tm.jpg",
+ "releaseDate": "2013-10-18",
+ "title": "12 Years a Slave",
+ "type": "file",
+ "voteAverage": 7.942
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1163258,
+ "backdropPath": "https://image.tmdb.org/t/p/original/6RV2o8PBCEyw9ylOWViV1CtULIF.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1FK4QanxWzrx-Hb7RUw07lROrYbthKoql",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "12th.Fail.2023.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Based on the true story of IPS officer Manoj Kumar Sharma, 12th Fail sheds limelight on fearlessly embracing the idea of restarting the academic journey despite the setbacks and challenges and reclaiming one's destiny at a place where millions of students attempt the world's toughest competitive exam: UPSC.",
+ "parents": [
+ "1EYlG7TZDr4wTgv9O8tNjLZk3SL-YPg2-"
+ ],
+ "popularity": 34.923,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cDWW5l4NTWtQi9McwevrY3knsTd.jpg",
+ "releaseDate": "2023-10-27",
+ "title": "12th Fail",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 530915,
+ "backdropPath": "https://image.tmdb.org/t/p/original/76LpPdXtCf4WxWDagVT2YcF4e9g.jpg",
+ "genres": [
+ "War",
+ "Action",
+ "Drama",
+ "History"
+ ],
+ "id": "1Nk9qChovEyxdM7nA3wT-fZPZUAPNGNt2",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "1917.2019.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "At the height of the First World War, two young British soldiers must cross enemy territory and deliver a message that will stop a deadly attack on hundreds of soldiers.",
+ "parents": [
+ "1_3csiSyKaD4kmTQfFbnC_MZl7eoUm92c"
+ ],
+ "popularity": 47.374,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iZf0KyrE25z1sage4SYFLCCrMi9.jpg",
+ "releaseDate": "2019-12-25",
+ "title": "1917",
+ "type": "file",
+ "voteAverage": 7.993
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 62,
+ "backdropPath": "https://image.tmdb.org/t/p/original/w5IDXtifKntw0ajv2co7jFlTQDM.jpg",
+ "genres": [
+ "Science Fiction",
+ "Mystery",
+ "Adventure"
+ ],
+ "id": "1AacZnw1zW_C3OjwnE5-uzfoxfVoeCCHD",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "2001.A.Space.Odyssey.1968.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Humanity finds a mysterious object buried beneath the lunar surface and sets off to find its origins with the help of HAL 9000, the world's most advanced super computer.",
+ "parents": [
+ "1SJEr1QxSSnHqBe_d1SXMZTe7Rxb95zuh"
+ ],
+ "popularity": 358.718,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ve72VxNqjGM69Uky4WTo2bK6rfq.jpg",
+ "releaseDate": "1968-04-02",
+ "title": "2001: A Space Odyssey",
+ "type": "file",
+ "voteAverage": 8.078
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 14161,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pvxmYJcgrLiYC6G2IQTn1PPNems.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1J0Z_BDQooy6oPEdr-z_JrkyrXQyYwfij",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "2012.2009.BluRay.1080p.x264.YIFY.mp4",
+ "overview": "Dr. Adrian Helmsley, part of a worldwide geophysical team investigating the effect on the earth of radiation from unprecedented solar storms, learns that the earth's core is heating up. He warns U.S. President Thomas Wilson that the crust of the earth is becoming unstable and that without proper preparations for saving a fraction of the world's population, the entire race is doomed. Meanwhile, writer Jackson Curtis stumbles on the same information. While the world's leaders race to build \"arks\" to escape the impending cataclysm, Curtis struggles to find a way to save his family. Meanwhile, volcanic eruptions and earthquakes of unprecedented strength wreak havoc around the world.",
+ "parents": [
+ "18ts1ITcUA2NaWo4r1Fd7wA3Yb6Z7eKFP"
+ ],
+ "popularity": 81.737,
+ "posterPath": "https://image.tmdb.org/t/p/w342/zaqam2RNscH5ooYFWInV6hjx6y5.jpg",
+ "releaseDate": "2009-10-10",
+ "title": "2012",
+ "type": "file",
+ "voteAverage": 5.839
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 20453,
+ "backdropPath": "https://image.tmdb.org/t/p/original/u7kuUaySqXBVAtqEl9vkTkAzHV9.jpg",
+ "genres": [
+ "Drama",
+ "Comedy"
+ ],
+ "id": "1WSSPvAlFjTsAP_l1lP-wUau6fOIY09o9",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "3.Idiots.2009.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Rascal. Joker. Dreamer. Genius... You've never met a college student quite like \"Rancho.\" From the moment he arrives at India's most prestigious university, Rancho's outlandish schemes turn the campus upside down\u2014along with the lives of his two newfound best friends. Together, they make life miserable for \"Virus,\" the school\u2019s uptight and heartless dean. But when Rancho catches the eye of the dean's daughter, Virus sets his sights on flunking out the \"3 idiots\" once and for all.",
+ "parents": [
+ "1VZk6-teSd3d9RrnZrWGD7EtCcwMgZAqJ"
+ ],
+ "popularity": 32.012,
+ "posterPath": "https://image.tmdb.org/t/p/w342/66A9MqXOyVFCssoloscw79z8Tew.jpg",
+ "releaseDate": "2009-12-23",
+ "title": "3 Idiots",
+ "type": "file",
+ "voteAverage": 7.991
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 453,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zbpZOYrRCxEF8lFT5JC8XodEggC.jpg",
+ "genres": [
+ "Drama",
+ "Romance"
+ ],
+ "id": "1epDtunboVqc4VuwzfwddmWKOrDJ6cwMH",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "A.Beautiful.Mind.2001.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "In a decades-spanning biopic, brilliant mathematician John Forbes Nash Jr. makes history in his field as schizophrenia sets in.",
+ "parents": [
+ "18ElBNk0R5ppkSOpDP-r9LTYEFGGKDEL4"
+ ],
+ "popularity": 83.481,
+ "posterPath": "https://image.tmdb.org/t/p/w342/zwzWCmH72OSC9NA0ipoqw5Zjya8.jpg",
+ "releaseDate": "2001-12-14",
+ "title": "A Beautiful Mind",
+ "type": "file",
+ "voteAverage": 7.858
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 185,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nLFxvLokHe3bQmrmAfljIfax2jQ.jpg",
+ "genres": [
+ "Science Fiction",
+ "Crime"
+ ],
+ "id": "18Ya1hik445emZu_7xqB5gGbCHUAJc7gP",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "A.Clockwork.Orange.1971.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "In a near-future Britain, young Alexander DeLarge and his pals get their kicks beating and raping anyone they please. When not destroying the lives of others, Alex swoons to the music of Beethoven. The state, eager to crack down on juvenile crime, gives an incarcerated Alex the option to undergo an invasive procedure that'll rob him of all personal agency. In a time when conscience is a commodity, can Alex change his tune?",
+ "parents": [
+ "1nPrRT4tiEmWv5_5hKmFx5LWem4712_nh"
+ ],
+ "popularity": 44.464,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4sHeTAp65WrSSuc05nRBKddhBxO.jpg",
+ "releaseDate": "1971-12-19",
+ "title": "A Clockwork Orange",
+ "type": "file",
+ "voteAverage": 8.204
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 60243,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kcXBa2ru0PXcGI8U3JiInsG6FRR.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "13DVG0M_m6ZluwMJU2vnevkrwZ_AReCFV",
+ "language": "fa",
+ "mimeType": "video/mp4",
+ "name": "A.Separation.2011.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A married couple are faced with a difficult decision - to improve the life of their child by moving to another country or to stay in Iran and look after a deteriorating parent who has Alzheimer's disease.",
+ "parents": [
+ "1-Cbf5imsVH7MF239__PiAjfSa-04wvnN"
+ ],
+ "popularity": 13.969,
+ "posterPath": "https://image.tmdb.org/t/p/w342/xQadpnoLokxzN3hRpCPbBGpxsiz.jpg",
+ "releaseDate": "2011-02-15",
+ "title": "A Separation",
+ "type": "file",
+ "voteAverage": 7.892
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 812,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nenJjvfe2Eq8uBMXFJnWj5mw4bi.jpg",
+ "genres": [
+ "Animation",
+ "Family",
+ "Adventure",
+ "Fantasy",
+ "Romance"
+ ],
+ "id": "1weyg5EIVTMx9WSjsSugxggvQEhguDUCb",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Aladdin.1992.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Princess Jasmine grows tired of being forced to remain in the palace, so she sneaks out into the marketplace, in disguise, where she meets street urchin Aladdin. The couple falls in love, although Jasmine may only marry a prince. After being thrown in jail, Aladdin becomes embroiled in a plot to find a mysterious lamp, with which the evil Jafar hopes to rule the land.",
+ "parents": [
+ "1069z2LyO00O7W5uBNPhR-JJFoY-tb12S"
+ ],
+ "popularity": 98.081,
+ "posterPath": "https://image.tmdb.org/t/p/w342/oakAd8syy7jNQ4ZoaAGCQkTqcOV.jpg",
+ "releaseDate": "1992-11-25",
+ "title": "Aladdin",
+ "type": "file",
+ "voteAverage": 7.651
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 348,
+ "backdropPath": "https://image.tmdb.org/t/p/original/AmR3JG1VQVxU8TfAvljUhfSFUOx.jpg",
+ "genres": [
+ "Horror",
+ "Science Fiction"
+ ],
+ "id": "1q4fZD5OutvQJlSLMR2kg-v67Q8T0l5hc",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Alien.Directors.Cut.1979.1080p.BRrip.x264.GAZ.YIFY.mp4",
+ "overview": "During its return to the earth, commercial spaceship Nostromo intercepts a distress signal from a distant planet. When a three-member team of the crew discovers a chamber containing thousands of eggs on the planet, a creature inside one of the eggs attacks an explorer. The entire crew is unaware of the impending nightmare set to descend upon them when the alien parasite planted inside its unfortunate host is birthed.",
+ "parents": [
+ "1Fx70IhV-1cXgtEbH7gIyHDO2tCSDCyrK"
+ ],
+ "popularity": 398.243,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vfrQk5IPloGg1v9Rzbh2Eg3VGyM.jpg",
+ "releaseDate": "1979-05-25",
+ "title": "Alien",
+ "type": "file",
+ "voteAverage": 8.154
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 679,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jMBpJFRtrtIXymer93XLavPwI3P.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Science Fiction"
+ ],
+ "id": "17J2e9DsiV_EyJ2-cstsScfS0DcCIxXDx",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Aliens.Directors.Cut.1986.1080p.BRrip.x264.GAZ.YIFY.mp4",
+ "overview": "Ripley, the sole survivor of the Nostromo's deadly encounter with the monstrous Alien, returns to Earth after drifting through space in hypersleep for 57 years. Although her story is initially met with skepticism, she agrees to accompany a team of Colonial Marines back to LV-426.",
+ "parents": [
+ "1NCx6wo0YrctKP8XPqH22HdwwaUabToIf"
+ ],
+ "popularity": 94.192,
+ "posterPath": "https://image.tmdb.org/t/p/w342/r1x5JGpyqZU8PYhbs4UcrO1Xb6x.jpg",
+ "releaseDate": "1986-07-18",
+ "title": "Aliens",
+ "type": "file",
+ "voteAverage": 7.939
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 705,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zbi0Ib6FSUHlUu3nC0t3Mzkm5D4.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "17qWM5e4lFud2ScSTRzQ_rOq51elgEAnY",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "All.About.Eve.1950.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "From the moment she glimpses her idol at the stage door, Eve Harrington is determined to take the reins of power away from the great actress Margo Channing. Eve maneuvers her way into Margo's Broadway role, becomes a sensation and even causes turmoil in the lives of Margo's director boyfriend, her playwright and his wife. Only the cynical drama critic sees through Eve, admiring her audacity and perfect pattern of deceit.",
+ "parents": [
+ "1rDBYPAfzFfoYZjZXv83QOMSofhe_tScY"
+ ],
+ "popularity": 19.471,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6numIZH6uR3NlJgY9m7nGH0jhs.jpg",
+ "releaseDate": "1950-11-09",
+ "title": "All About Eve",
+ "type": "file",
+ "voteAverage": 8.102
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 279,
+ "backdropPath": "https://image.tmdb.org/t/p/original/iV69FowcM3aO0JWAmd6owwSMU0Z.jpg",
+ "genres": [
+ "History",
+ "Music",
+ "Drama"
+ ],
+ "id": "1PoYUOfsEde_ApiiSJ582Bc5BN56vAVO3",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Amadeus.1984.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Wolfgang Amadeus Mozart is a remarkably talented young Viennese composer who unwittingly finds a fierce rival in the disciplined and determined Antonio Salieri. Resenting Mozart for both his hedonistic lifestyle and his undeniable talent, the highly religious Salieri is gradually consumed by his jealousy and becomes obsessed with Mozart's downfall, leading to a devious scheme that has dire consequences for both men.",
+ "parents": [
+ "1AJxVAs69iVuGXXIIjK1Hhk18BLrmLHy_"
+ ],
+ "popularity": 41.397,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1n5VUlCqgmVax1adxGZm8oCFaKc.jpg",
+ "releaseDate": "1984-09-19",
+ "title": "Amadeus",
+ "type": "file",
+ "voteAverage": 8.035
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 14,
+ "backdropPath": "https://image.tmdb.org/t/p/original/DztBnZaqmla2sGUW9s8AyOmskT.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1pOoBh6ysFl9e8bTJkz6IHGv_dTsIkb2Q",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "American.Beauty.1999.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Lester Burnham, a depressed suburban father in a mid-life crisis, decides to turn his hectic life around after developing an infatuation with his daughter's attractive friend.",
+ "parents": [
+ "1ek68CSJVz_Z4XgZQawMbZ7fFnjYhnzHY"
+ ],
+ "popularity": 186.97,
+ "posterPath": "https://image.tmdb.org/t/p/w342/wby9315QzVKdW9BonAefg8jGTTb.jpg",
+ "releaseDate": "1999-09-15",
+ "title": "American Beauty",
+ "type": "file",
+ "voteAverage": 8.019
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 73,
+ "backdropPath": "https://image.tmdb.org/t/p/original/6qHI1IYj7QlLSCwHRzkL62X175s.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1EhEYKCefAHIaERMvkJUZmQeYAf79eK1B",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "American.History.X.1998.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Derek Vineyard is paroled after serving 3 years in prison for killing two African-American men. Through his brother, Danny Vineyard's narration, we learn that before going to prison, Derek was a skinhead and the leader of a violent white supremacist gang that committed acts of racial crime throughout L.A. and his actions greatly influenced Danny. Reformed and fresh out of prison, Derek severs contact with the gang and becomes determined to keep Danny from going down the same violent path as he did.",
+ "parents": [
+ "10PTY2LWJYirC2MEiRXAv_PA_8umFAQvG"
+ ],
+ "popularity": 67.863,
+ "posterPath": "https://image.tmdb.org/t/p/w342/euypWkaYFOLW3e5rLIcTAjWnhhT.jpg",
+ "releaseDate": "1998-07-01",
+ "title": "American History X",
+ "type": "file",
+ "voteAverage": 8.346
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 55,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qNQOEzm6xJ2hgWDImzkIox27aiV.jpg",
+ "genres": [
+ "Drama",
+ "Thriller"
+ ],
+ "id": "14tODj-juzAcEQC8zeouHENfdwEWYNE_F",
+ "language": "es",
+ "mimeType": "video/mp4",
+ "name": "Amores.Perros.2000.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A fatalistic car crash in Mexico city sets off a chain of events in the lives of three people: a supermodel, a young man wanting to run off with his sister-in-law, and a homeless man. Their lives are catapulted into unforeseen situations instigated by the seemingly inconsequential destiny of a dog.",
+ "parents": [
+ "1Ok1CiCF5BjUBmO7dBfVBixORZLkY8Hk1"
+ ],
+ "popularity": 31.969,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mXc2QcFXUTQz2wU7S0zgeG5C3Bg.jpg",
+ "releaseDate": "2000-06-16",
+ "title": "Amores Perros",
+ "type": "file",
+ "voteAverage": 7.636
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 194,
+ "backdropPath": "https://image.tmdb.org/t/p/original/6n53UI4mX9QMfe2S0Pgt8mGebY1.jpg",
+ "genres": [
+ "Comedy",
+ "Romance"
+ ],
+ "id": "1AkSKYpQbRpZVEaigNPv6cVgAXeq0B3Yj",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "Am\u00e9lie.2001.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "At a tiny Parisian caf\u00e9, the adorable yet painfully shy Am\u00e9lie accidentally discovers a gift for helping others. Soon Amelie is spending her days as a matchmaker, guardian angel, and all-around do-gooder. But when she bumps into a handsome stranger, will she find the courage to become the star of her very own love story?",
+ "parents": [
+ "1LqQiWTT0d5ZD290HBeW9zM3oY9p4CsbL"
+ ],
+ "popularity": 33.599,
+ "posterPath": "https://image.tmdb.org/t/p/w342/nSxDa3M9aMvGVLoItzWTepQ5h5d.jpg",
+ "releaseDate": "2001-04-25",
+ "title": "Am\u00e9lie",
+ "type": "file",
+ "voteAverage": 7.909
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 28,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1oWqzZft4AfDvtu48Z1J8t93DDM.jpg",
+ "genres": [
+ "Drama",
+ "War"
+ ],
+ "id": "1FlK31JfYKcvDU0ADphthqEqFUoHR0MSN",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Apocalypse.Now.1979.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "At the height of the Vietnam war, Captain Benjamin Willard is sent on a dangerous mission that, officially, \"does not exist, nor will it ever exist.\" His goal is to locate - and eliminate - a mysterious Green Beret Colonel named Walter Kurtz, who has been leading his personal army on illegal guerrilla missions into enemy territory.",
+ "parents": [
+ "17z5ZsMbJlvtPVnAjFb-gxmBtLt6B5ach"
+ ],
+ "popularity": 63.115,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gQB8Y5RCMkv2zwzFHbUJX3kAhvA.jpg",
+ "releaseDate": "1979-08-15",
+ "title": "Apocalypse Now",
+ "type": "file",
+ "voteAverage": 8.284
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 299534,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7RyHsO4yDXtBv1zUU3mTpHeQ0d5.jpg",
+ "genres": [
+ "Adventure",
+ "Science Fiction",
+ "Action"
+ ],
+ "id": "1gsx7o21HS6u6wnzE2N2ndpA_qhwk1Tp-",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Avengers.Endgame.2019.1080p.BluRay.x264-[YTS.LT].mp4",
+ "overview": "After the devastating events of Avengers: Infinity War, the universe is in ruins due to the efforts of the Mad Titan, Thanos. With the help of remaining allies, the Avengers must assemble once more in order to undo Thanos' actions and restore order to the universe once and for all, no matter what consequences may be in store.",
+ "parents": [
+ "1P0_N2hgploBJEtxAc3kRhamyj6vYV440"
+ ],
+ "popularity": 226.834,
+ "posterPath": "https://image.tmdb.org/t/p/w342/or06FN3Dka5tukK1e9sl16pB3iy.jpg",
+ "releaseDate": "2019-04-24",
+ "title": "Avengers: Endgame",
+ "type": "file",
+ "voteAverage": 8.253
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 105,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hxSB02ksqnkXY4hPGAXqgO2fL01.jpg",
+ "genres": [
+ "Adventure",
+ "Comedy",
+ "Science Fiction"
+ ],
+ "id": "1-h03nAkaS4yaXFaZGmUpF7Qcs5Uaw1EG",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Back.to.the.Future.1985.1080p.Brrip.x264.Deceit.YIFY.mp4",
+ "overview": "Eighties teenager Marty McFly is accidentally sent back in time to 1955, inadvertently disrupting his parents' first meeting and attracting his mother's romantic interest. Marty must repair the damage to history by rekindling his parents' romance and - with the help of his eccentric inventor friend Doc Brown - return to 1985.",
+ "parents": [
+ "17NTiBKzgumd3mQEhZodL6OiQM0T8Kths"
+ ],
+ "popularity": 93.151,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fNOH9f1aA7XRTzl1sAOx9iF553Q.jpg",
+ "releaseDate": "1985-07-03",
+ "title": "Back to the Future",
+ "type": "file",
+ "voteAverage": 8.317
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3175,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ef6SvWbSfCFlKodJZqpIaTvsRRP.jpg",
+ "genres": [
+ "Drama",
+ "Romance",
+ "War"
+ ],
+ "id": "167rUpTA2KNXJZF0jb01V8OaBSs76rVne",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Barry.Lyndon.1975.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "An Irish rogue uses his cunning and wit to work his way up the social classes of 18th century England, transforming himself from the humble Redmond Barry into the noble Barry Lyndon.",
+ "parents": [
+ "1AMMIR3QBxT3qY50VFAbdQOjYnfs3BreH"
+ ],
+ "popularity": 45.758,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dOJtBSyI30wWc08UmyEKLsu4Rfk.jpg",
+ "releaseDate": "1975-12-18",
+ "title": "Barry Lyndon",
+ "type": "file",
+ "voteAverage": 8.004
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 272,
+ "backdropPath": "https://image.tmdb.org/t/p/original/lh5lbisD4oDbEKgUxoRaZU8HVrk.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Drama"
+ ],
+ "id": "1t-WKBKAGpjkbNKppFhnms6Upvgy3dPYY",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Batman.Begins.2005.REMASTERED.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Driven by tragedy, billionaire Bruce Wayne dedicates his life to uncovering and defeating the corruption that plagues his home, Gotham City. Unable to work within the system, he instead creates a new identity, a symbol of fear for the criminal underworld - The Batman.",
+ "parents": [
+ "1iuQ9Q5k1Q-oxxlL8bJIWf4kEMwF4Q87z"
+ ],
+ "popularity": 162.368,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4MpN4kIEqUjW8OPtOQJXlTdHiJV.jpg",
+ "releaseDate": "2005-06-10",
+ "title": "Batman Begins",
+ "type": "file",
+ "voteAverage": 7.706
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 29751,
+ "backdropPath": "https://image.tmdb.org/t/p/original/9PnKdVpdC7HaNjQLKPygHMT637e.jpg",
+ "genres": [
+ "Documentary"
+ ],
+ "id": "1Te7KpkSpx__SLJ8Nyd-w2ZhaBV5SnAkm",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Batman.The.Dark.Knight.2008.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Delve into the world of Batman and the vigilante justice that he brought to the city of Gotham. Batman is a man who, after experiencing great tragedy, devotes his life to an ideal--but what happens when one man takes on the evil underworld alone? Examine why Batman is who he is--and explore how a boy scarred by tragedy becomes a symbol of hope to everyone else.",
+ "parents": [
+ "1YSoIzBRdsBlLTOFHulI2zSEXNSGWe-Rq"
+ ],
+ "popularity": 4.713,
+ "posterPath": "https://image.tmdb.org/t/p/w342/e15wNHmLX7PJUo8lqzQRhwbX7PL.jpg",
+ "releaseDate": "2008-07-15",
+ "title": "Batman Unmasked: The Psychology of 'The Dark Knight'",
+ "type": "file",
+ "voteAverage": 7.446
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 76,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qA2TyqPldTtoTVY3LKrNIG5g6bH.jpg",
+ "genres": [
+ "Drama",
+ "Romance"
+ ],
+ "id": "1evtt9RgkLYIAbtc4NCPVlgK1vigqxLjZ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Before.Sunrise.1995.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A young man and woman meet on a train in Europe, and wind up spending one evening together in Vienna. Unfortunately, both know that this will probably be their only night together.",
+ "parents": [
+ "1yh-w7y_aLRH2sUwgW_y-Rn4J_OM2K6iC"
+ ],
+ "popularity": 45.629,
+ "posterPath": "https://image.tmdb.org/t/p/w342/kf1Jb1c2JAOqjuzA3H4oDM263uB.jpg",
+ "releaseDate": "1995-01-27",
+ "title": "Before Sunrise",
+ "type": "file",
+ "voteAverage": 7.972
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 80,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zwgDZw9dyrgkYz2RCOb2HvUDlt2.jpg",
+ "genres": [
+ "Drama",
+ "Romance"
+ ],
+ "id": "1jXd002bRJo14HLgFdD03FKcZZnZJ0-O5",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Before.Sunset.2004.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Nine years later, Jesse travels across Europe giving readings from a book he wrote about the night he spent in Vienna with Celine. After his reading in Paris, Celine finds him, and they spend part of the day together before Jesse has to again leave for a flight. They are both in relationships now, and Jesse has a son, but as their strong feelings for each other start to return, both confess a longing for more.",
+ "parents": [
+ "1z2RG14GgEG_RElaYnBMChtzSBCt-IZUK"
+ ],
+ "popularity": 43.495,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gycdE1ARByGQcK4fYR2mgpU6OO.jpg",
+ "releaseDate": "2004-06-16",
+ "title": "Before Sunset",
+ "type": "file",
+ "voteAverage": 7.82
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 665,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sU3gFo7Gn67zjtKXIvzJ4omcUbH.jpg",
+ "genres": [
+ "History",
+ "Drama",
+ "Adventure",
+ "Action"
+ ],
+ "id": "1qxvvvQeaEiYY-TZ1Bo6HYVlwDyJJX48S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Ben-Hur.1959.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "In 25 AD, Judah Ben-Hur, a Jew in ancient Judea, opposes the occupying Roman empire. Falsely accused by a Roman childhood friend-turned-overlord of trying to kill the Roman governor, he is put into slavery and his mother and sister are taken away as prisoners.",
+ "parents": [
+ "18w_tHQxK_8xa8VSYg95cZ_1xhu662JUv"
+ ],
+ "popularity": 61.061,
+ "posterPath": "https://image.tmdb.org/t/p/w342/m4WQ1dBIrEIHZNCoAjdpxwSKWyH.jpg",
+ "releaseDate": "1959-11-18",
+ "title": "Ben-Hur",
+ "type": "file",
+ "voteAverage": 7.89
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 5156,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kTUUiKGKrdRhJsCcYT3Ivtfuuzh.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1uqvv3j3SQJuT762tId87evmZmlcSrWzU",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "Bicycle.Thieves.1948.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Unemployed Antonio is elated when he finally finds work hanging posters around war-torn Rome. However on his first day, his bicycle\u2014essential to his work\u2014gets stolen. His job is doomed unless he can find the thief. With the help of his son, Antonio combs the city, becoming desperate for justice.",
+ "parents": [
+ "14wWwzxK67MAy6f8nPhdhAkhRd6MIjq1_"
+ ],
+ "popularity": 31.154,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rLpveWO1hTNYF9LUZJZgTdq5nyf.jpg",
+ "releaseDate": "1948-11-24",
+ "title": "Bicycle Thieves",
+ "type": "file",
+ "voteAverage": 8.197
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 78,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qr7dUqleMRd0VgollazbmyP9XjI.jpg",
+ "genres": [
+ "Science Fiction",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1HQQq9YldEkSEUhc7UzcAi4ZJCvQtNlMS",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Blade.Runner.1982.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In the smog-choked dystopian Los Angeles of 2019, blade runner Rick Deckard is called out of retirement to terminate a quartet of replicants who have escaped to Earth seeking their creator for a way to extend their short life spans.",
+ "parents": [
+ "1sGBQIt44cwy0kZdYI87_xVJZSI2z6Ia4"
+ ],
+ "popularity": 72.461,
+ "posterPath": "https://image.tmdb.org/t/p/w342/63N9uy8nd9j7Eog2axPQ8lbr3Wj.jpg",
+ "releaseDate": "1982-06-25",
+ "title": "Blade Runner",
+ "type": "file",
+ "voteAverage": 7.936
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 197,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8lBcqakI3F19NWkXdqE0M8W76b9.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1hZilEksEmDE99BnqH5r5chJxC_RGVvp_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Braveheart.1995.1080p.BrRip.x264.YIFY+HI.mp4",
+ "overview": "Enraged at the slaughter of Murron, his new bride and childhood love, Scottish warrior William Wallace slays a platoon of the local English lord's soldiers. This leads the village to revolt and, eventually, the entire country to rise up against English rule.",
+ "parents": [
+ "1ErMTOVi9HBaCZk0DXRDGy4U-gu8T-N5u"
+ ],
+ "popularity": 64.361,
+ "posterPath": "https://image.tmdb.org/t/p/w342/or1gBugydmjToAEq7OZY0owwFk.jpg",
+ "releaseDate": "1995-05-24",
+ "title": "Braveheart",
+ "type": "file",
+ "voteAverage": 7.939
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 517814,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sEW8q9al73rtow257dXAusD9yS7.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1kNnPXbLcbiTv4LT2a7v9kWUnk8L3mabZ",
+ "language": "ar",
+ "mimeType": "video/mp4",
+ "name": "Capernaum.2018.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "After running away from his negligent parents, committing a violent crime and being sentenced to five years in jail, a hardened, streetwise 12-year-old Lebanese boy sues his parents in protest of the life they have given him.",
+ "parents": [
+ "14JfRRF4JoLsma8cNNkMR13Mm1tRke3HL"
+ ],
+ "popularity": 23.744,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mFnfTVADj8yOxwzprYOmTPselk8.jpg",
+ "releaseDate": "2018-09-20",
+ "title": "Capernaum",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1p1GrDUfaDF_51N6r7Rt5Z4gPgYzjwjGI",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Casablanca.1942.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": null,
+ "parents": [
+ "1n3z2MBKdHFVWNM_EQ3BiauKuiz950P-x"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "1942-01-01",
+ "title": "Casablanca",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 524,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2W9HjAYWNug5RwyrEtrneXeL94Z.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "History"
+ ],
+ "id": "1ewa2U4lKtTE7GMjM0xPR2qXMsmtkRBf_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Casino.1995.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In early-1970s Las Vegas, Sam \"Ace\" Rothstein gets tapped by his bosses to head the Tangiers Casino. At first, he's a great success in the job, but over the years, problems with his loose-cannon enforcer Nicky Santoro, his ex-hustler wife Ginger, her con-artist ex Lester Diamond and a handful of corrupt politicians put Sam in ever-increasing danger.",
+ "parents": [
+ "10iO2Etc7hTZhCuSTJQuZ5FAeqod3qMWi"
+ ],
+ "popularity": 41.83,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4TS5O1IP42bY2BvgMxL156EENy.jpg",
+ "releaseDate": "1995-11-22",
+ "title": "Casino",
+ "type": "file",
+ "voteAverage": 8.013
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 640,
+ "backdropPath": "https://image.tmdb.org/t/p/original/Ag6qhzsJd3k1NKuNrG9RmhZDMh7.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1TKumS0qUKU3JqFEsvG_XMglSBETP4ihF",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Catch.Me.If.You.Can.2002.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "A true story about Frank Abagnale Jr. who, before his 19th birthday, successfully conned millions of dollars worth of checks as a Pan Am pilot, doctor, and legal prosecutor. An FBI agent makes it his mission to put him behind bars. But Frank not only eludes capture, he revels in the pursuit.",
+ "parents": [
+ "1faC4rBI-9X-IE_U0Na1SdcBpVK9Xf5rc"
+ ],
+ "popularity": 72.158,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ctjEj2xM32OvBXCq8zAdK3ZrsAj.jpg",
+ "releaseDate": "2002-12-16",
+ "title": "Catch Me If You Can",
+ "type": "file",
+ "voteAverage": 7.976
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 21334,
+ "backdropPath": "https://image.tmdb.org/t/p/original/9W250lyDDC3P9AgW5ZKGRj7R2Pv.jpg",
+ "genres": [
+ "Drama",
+ "Family"
+ ],
+ "id": "1WrmrSGVnxUPu8OG5w4t1eii5eCJV7jt8",
+ "language": "fa",
+ "mimeType": "video/mp4",
+ "name": "Children.Of.Heaven.1997.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Zohre's shoes are gone; her older brother Ali lost them. They are poor, there are no shoes for Zohre until they come up with an idea: they will share one pair of shoes. School awaits.",
+ "parents": [
+ "1MvGbbrtU17Q220lGzbgmOC43KWxBJqIp"
+ ],
+ "popularity": 20.373,
+ "posterPath": "https://image.tmdb.org/t/p/w342/h3PdFeciIlykn9kkONn9cwmr80h.jpg",
+ "releaseDate": "1997-08-01",
+ "title": "Children of Heaven",
+ "type": "file",
+ "voteAverage": 7.925
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 829,
+ "backdropPath": "https://image.tmdb.org/t/p/original/bsoAg22remHKL5O0xJH0m9DX6Pu.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Mystery",
+ "Thriller"
+ ],
+ "id": "1tw2tmNPYlTigqe1BYOYlnC4d-1TnhQzZ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Chinatown.1974.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Private eye Jake Gittes lives off of the murky moral climate of sunbaked, pre-World War II Southern California. Hired by a beautiful socialite to investigate her husband's extra-marital affair, Gittes is swept into a maelstrom of double dealings and deadly deceits, uncovering a web of personal and political scandals that come crashing together.",
+ "parents": [
+ "1R4OCXNzzzZxAJaWWMHBwcYKeBEbXoFaI"
+ ],
+ "popularity": 268.096,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mQJz8J4naOA7RmCtypTPjgXZIMY.jpg",
+ "releaseDate": "1974-06-20",
+ "title": "Chinatown",
+ "type": "file",
+ "voteAverage": 7.916
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11216,
+ "backdropPath": "https://image.tmdb.org/t/p/original/k3SBILYxHRgjORb5tbvA5dm2N4h.jpg",
+ "genres": [
+ "Drama",
+ "Romance"
+ ],
+ "id": "1muVt5BIZcvtCtOCAqLN_nlw1NN0FC971",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "Cinema.Paradiso.1988.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A filmmaker recalls his childhood, when he fell in love with the movies at his village's theater and formed a deep friendship with the theater's projectionist.",
+ "parents": [
+ "1-T4TmnH8O5dQs3VKcZ4t4V9nyp8a0N0E"
+ ],
+ "popularity": 35.685,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9JhfVOveaY00o8njQu2Xrp4YWud.jpg",
+ "releaseDate": "1988-11-17",
+ "title": "Cinema Paradiso",
+ "type": "file",
+ "voteAverage": 8.454
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 15,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ruF3Lmd4A8MHbnEBE6lxPMbsHGL.jpg",
+ "genres": [
+ "Mystery",
+ "Drama"
+ ],
+ "id": "1FmWs2NCQDz0rFU4XzC9B3foJ4u7ZWS9l",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Citizen.Kane.1941.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Newspaper magnate Charles Foster Kane is taken from his mother as a boy and made the ward of a rich industrialist. As a result, every well-meaning, tyrannical or self-destructive move he makes for the rest of his life appears in some way to be a reaction to that deeply wounding event.",
+ "parents": [
+ "1vCRONx9iv0qFW_JiAEMJUsZDAyU7EEAc"
+ ],
+ "popularity": 315.922,
+ "posterPath": "https://image.tmdb.org/t/p/w342/sav0jxhqiH0bPr2vZFU0Kjt2nZL.jpg",
+ "releaseDate": "1941-04-17",
+ "title": "Citizen Kane",
+ "type": "file",
+ "voteAverage": 8.009
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 901,
+ "backdropPath": "https://image.tmdb.org/t/p/original/n0Cju2Eu3VyrUFl32thblHFWznA.jpg",
+ "genres": [
+ "Comedy",
+ "Romance",
+ "Drama"
+ ],
+ "id": "1IqNgMbLdjx_zULJxkjgv3Z1OMHVYlsuI",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "City.Lights.1931.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A tramp falls in love with a beautiful blind flower girl. His on-and-off friendship with a wealthy man allows him to be the girl's benefactor and suitor.",
+ "parents": [
+ "13T0ewyhg_zDx5DE9ksvFYQ5Cu0P__Wor"
+ ],
+ "popularity": 30.041,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bXNvzjULc9jrOVhGfjcc64uKZmZ.jpg",
+ "releaseDate": "1931-02-01",
+ "title": "City Lights",
+ "type": "file",
+ "voteAverage": 8.283
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 598,
+ "backdropPath": "https://image.tmdb.org/t/p/original/uvitbjFU4JqvMwIkMWHp69bmUzG.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1yaDHlXuXi33ce1RtbKvfrfTnzlt5vbQa",
+ "language": "pt",
+ "mimeType": "video/mp4",
+ "name": "City.Of.God.2002.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In the slums of Rio, two kids' paths diverge as one struggles to become a photographer and the other a kingpin.",
+ "parents": [
+ "1IrsmoEYCrnLaS3AtMEIVX-DEZoxW55ml"
+ ],
+ "popularity": 101.209,
+ "posterPath": "https://image.tmdb.org/t/p/w342/k7eYdWvhYQyRQoU2TB2A2Xu2TfD.jpg",
+ "releaseDate": "2002-08-30",
+ "title": "City of God",
+ "type": "file",
+ "voteAverage": 8.429
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 354912,
+ "backdropPath": "https://image.tmdb.org/t/p/original/askg3SMvhqEl4OL52YuvdtY40Yb.jpg",
+ "genres": [
+ "Family",
+ "Animation",
+ "Music",
+ "Adventure"
+ ],
+ "id": "1R_fyL9GDWXf45sXfpyMse__ZOiotFFER",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Coco.2017.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Despite his family\u2019s baffling generations-old ban on music, Miguel dreams of becoming an accomplished musician like his idol, Ernesto de la Cruz. Desperate to prove his talent, Miguel finds himself in the stunning and colorful Land of the Dead following a mysterious chain of events. Along the way, he meets charming trickster Hector, and together, they set off on an extraordinary journey to unlock the real story behind Miguel's family history.",
+ "parents": [
+ "1dpv-zaNjNX99BaUqv-0FyLlYwMMRMip0"
+ ],
+ "popularity": 143.72,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gGEsBPAijhVUFoiNpgZXqRVWJt2.jpg",
+ "releaseDate": "2017-10-27",
+ "title": "Coco",
+ "type": "file",
+ "voteAverage": 8.213
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 25237,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xGzcusHWxLPvRYSBMeOJOVkdJbj.jpg",
+ "genres": [
+ "Drama",
+ "War"
+ ],
+ "id": "1j1Fqc9c0BVcoIGmm21ybxIxkaj3GNLx3",
+ "language": "ru",
+ "mimeType": "video/mp4",
+ "name": "Come.And.See.1985.RUSSIAN.REPACK.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "The invasion of a village in Byelorussia by German forces sends young Florya into the forest to join the weary Resistance fighters, against his family's wishes. There he meets a girl, Glasha, who accompanies him back to his village. On returning home, Florya finds his family and fellow peasants massacred. His continued survival amidst the brutal debris of war becomes increasingly nightmarish, a battle between despair and hope.",
+ "parents": [
+ "1GcdBHdsDvmeA0fgapzIIVdvFvGzmQPh1"
+ ],
+ "popularity": 25.901,
+ "posterPath": "https://image.tmdb.org/t/p/w342/qNbMsKVzigERgJUbwf8pKyZogpb.jpg",
+ "releaseDate": "1985-10-17",
+ "title": "Come and See",
+ "type": "file",
+ "voteAverage": 8.258
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 903,
+ "backdropPath": "https://image.tmdb.org/t/p/original/yW9mPUhrsIzKvogNJKQKuWO8fJO.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "Crime"
+ ],
+ "id": "1cmHjaLenwGNiPEx7FnZNznj5ZfPy5uQU",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Cool.Hand.Luke.1967.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "When petty criminal Luke Jackson is sentenced to two years in a Florida prison farm, he doesn't play by the rules of either the sadistic warden or the yard's resident heavy, Dragline, who ends up admiring the new guy's unbreakable will. Luke's bravado, even in the face of repeated stints in the prison's dreaded solitary confinement cell, \"the box,\" make him a rebel hero to his fellow convicts and a thorn in the side of the prison officers.",
+ "parents": [
+ "1WVyzv6sbiCjJ5cyEb_3XDuUjWynLepkx"
+ ],
+ "popularity": 27.086,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4ykzTiHKLamh3eZJ8orVICtU2Jp.jpg",
+ "releaseDate": "1967-11-01",
+ "title": "Cool Hand Luke",
+ "type": "file",
+ "voteAverage": 7.728
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1aVhV8Y9QsorOq3ty5keFIfwlLPeMKmIv",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Dances.with.Wolves.DC.1990.1080p.x264.BrRip.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1w-BOxFtZIJeozNLGSCcDwrECzhIYDEGZ"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "1990-01-01",
+ "title": "Dances with Wolves DC",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 360814,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5qjbu7po6eqLNd4kUPAyIpFRwQK.jpg",
+ "genres": [
+ "Drama",
+ "Family",
+ "Comedy",
+ "Action"
+ ],
+ "id": "1KTs5885kQaf6tpKIxej-W2NEiiN9Oa2v",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Dangal.2016.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Dangal is an extraordinary true story based on the life of Mahavir Singh and his two daughters, Geeta and Babita Phogat. The film traces the inspirational journey of a father who trains his daughters to become world class wrestlers.",
+ "parents": [
+ "1q29ULnCI5u_7l--LxnKYLlY4h3jgjmpH"
+ ],
+ "popularity": 19.391,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cJRPOLEexI7qp2DKtFfCh7YaaUG.jpg",
+ "releaseDate": "2016-12-21",
+ "title": "Dangal",
+ "type": "file",
+ "voteAverage": 7.913
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 387,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tRI6Csmw4rKzMYDrfUx5xtyBSVE.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1dZh6LIwWsTF1Df8QgasQiFhUbPekedER",
+ "language": "de",
+ "mimeType": "video/mp4",
+ "name": "Das.Boot.1981.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "A German submarine hunts allied ships during the Second World War, but it soon becomes the hunted. The crew tries to survive below the surface, while stretching both the boat and themselves to their limits.",
+ "parents": [
+ "10ZF8jmfMBblBcQzupp8bBUsbQ5D8CKuq"
+ ],
+ "popularity": 48.834,
+ "posterPath": "https://image.tmdb.org/t/p/w342/spE9nbdqhoKoTaCNp4H9Tj6Xcrm.jpg",
+ "releaseDate": "1981-09-17",
+ "title": "Das Boot",
+ "type": "file",
+ "voteAverage": 8.088
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 207,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tJRToZBfb52NhF6SMGAe0bWQc6z.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1yhb0RWBH_ndGXndkmbO_c3hHoK5AoXw9",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Dead.Poets.Society.1989.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "At an elite, old-fashioned boarding school in New England, a passionate English teacher inspires his students to rebel against convention and seize the potential of every day, courting the disdain of the stern headmaster.",
+ "parents": [
+ "1EyX-5h87U1T8A5SHsLLKTQrH22F4FEh0"
+ ],
+ "popularity": 52.445,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hmGAF5NDoYB6S39UONevjHCESOI.jpg",
+ "releaseDate": "1989-06-02",
+ "title": "Dead Poets Society",
+ "type": "file",
+ "voteAverage": 8.315
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 521,
+ "backdropPath": "https://image.tmdb.org/t/p/original/uvd1KXopHKelymR2JbSumRupRJo.jpg",
+ "genres": [
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1kRiT65hY79Qc0w93vlldl-Wgur41Bzf_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Dial.M.For.Murder.1954.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "An ex-tennis pro carries out a plot to have his wealthy wife murdered after discovering she is having an affair, and assumes she will soon leave him for the other man anyway.",
+ "parents": [
+ "1aAZmtoaMMSuj3YDLnSetRzp6M9DGwqIy"
+ ],
+ "popularity": 19.273,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2gDCAgl2iBQNuJuk6p2xtuS1ewg.jpg",
+ "releaseDate": "1954-05-29",
+ "title": "Dial M for Murder",
+ "type": "file",
+ "voteAverage": 8.021
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 562,
+ "backdropPath": "https://image.tmdb.org/t/p/original/rahJyvdMruvqUmSLWRQKYS57mx8.jpg",
+ "genres": [
+ "Action",
+ "Thriller"
+ ],
+ "id": "1bqwek_E2XHtYtOiXBY9zVrRzFBDMcUiC",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Die.Hard.1988.1080p.BrRip.x264.bitloks.YIFY.mp4",
+ "overview": "NYPD cop John McClane's plan to reconcile with his estranged wife is thrown for a serious loop when, minutes after he arrives at her office, the entire building is overtaken by a group of terrorists. With little help from the LAPD, wisecracking McClane sets out to single-handedly rescue the hostages and bring the bad guys down.",
+ "parents": [
+ "1mjWiZnnxeoGJxPrDv-aubYmTd7D-lfdg"
+ ],
+ "popularity": 63.247,
+ "posterPath": "https://image.tmdb.org/t/p/w342/yFihWxQcmqcaBR31QM6Y8gT6aYV.jpg",
+ "releaseDate": "1988-07-15",
+ "title": "Die Hard",
+ "type": "file",
+ "voteAverage": 7.788
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 68718,
+ "backdropPath": "https://image.tmdb.org/t/p/original/w6Fs4bIje1naeILo9KwAc1Y6bvP.jpg",
+ "genres": [
+ "Drama",
+ "Western"
+ ],
+ "id": "165SYXWha75o12eWmvP97wN61fti9edVp",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Django.Unchained.2012.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "With the help of a German bounty hunter, a freed slave sets out to rescue his wife from a brutal Mississippi plantation owner.",
+ "parents": [
+ "1fQ-KMq9w9U9i1ZtK88SrGUxei3khX5KP"
+ ],
+ "popularity": 136.047,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7oWY8VDWW7thTzWh3OKYRkWUlD5.jpg",
+ "releaseDate": "2012-12-25",
+ "title": "Django Unchained",
+ "type": "file",
+ "voteAverage": 8.18
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 996,
+ "backdropPath": "https://image.tmdb.org/t/p/original/u546kDNwrZ1ii6q8NqqQgHwRvoW.jpg",
+ "genres": [
+ "Crime",
+ "Thriller"
+ ],
+ "id": "19mbrAjAkWO5rvQcncBnT5EJCkgZlNm5m",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Double.Indemnity.1944.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A rich woman and a calculating insurance agent plot to kill her unsuspecting husband after he signs a double indemnity policy. Against a backdrop of distinctly Californian settings, the partners in crime plan the perfect murder to collect the insurance, which pays double if the death is accidental.",
+ "parents": [
+ "1fJJJ9Sis2MoYG1us3ahtiFM1mBnaE84G"
+ ],
+ "popularity": 52.146,
+ "posterPath": "https://image.tmdb.org/t/p/w342/n8Mfx7JNbj6lo24laFL1sZYEKHs.jpg",
+ "releaseDate": "1944-07-06",
+ "title": "Double Indemnity",
+ "type": "file",
+ "voteAverage": 8.122
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 613,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xgAEfHByamMdRCA31oERQrsiutF.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1K8CxQQGbNXMGHnlUF7JgwLVfIy7UHorf",
+ "language": "de",
+ "mimeType": "video/mp4",
+ "name": "Downfall.2004.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In April of 1945, Germany stands at the brink of defeat with the Russian Army closing in from the east and the Allied Expeditionary Force attacking from the west. In Berlin, capital of the Third Reich, Adolf Hitler proclaims that Germany will still achieve victory and orders his generals and advisers to fight to the last man. When the end finally does come, and Hitler lies dead by his own hand, what is left of his military must find a way to end the killing that is the Battle of Berlin, and lay down their arms in surrender.",
+ "parents": [
+ "1TxrvZHPmYptLHsCtJJW4hxjOtfqtNejW"
+ ],
+ "popularity": 33.362,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cP1ElGjBhbZAAqmueXjHDKlSwiP.jpg",
+ "releaseDate": "2004-09-16",
+ "title": "Downfall",
+ "type": "file",
+ "voteAverage": 7.861
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 935,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sTp8K0SfcC2RQef1Tu160z3niHO.jpg",
+ "genres": [
+ "Comedy",
+ "War"
+ ],
+ "id": "1lkz-Z2OJb61bYbfxLqNb-vdIa5nEXLMA",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Dr..Strangelove.Or.How.I.Learned.To.Stop.Worrying.And.Love.The.Bomb.1964.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "After the insane General Jack D. Ripper initiates a nuclear strike on the Soviet Union, a war room full of politicians, generals and a Russian diplomat all frantically try to stop the nuclear strike.",
+ "parents": [
+ "16KN73eV3mOoasZ687al89ccXfCwDygi7"
+ ],
+ "popularity": 40.642,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7SixLzxcqezkZEYU8pcHZgbkmjp.jpg",
+ "releaseDate": "1964-01-29",
+ "title": "Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb",
+ "type": "file",
+ "voteAverage": 8.122
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 352173,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8xnjsw3Oh3zrT6Pu1WVp8dQYatT.jpg",
+ "genres": [
+ "Crime",
+ "Mystery",
+ "Thriller"
+ ],
+ "id": "1fvd2CYP5NG1Vx_dCeNo0eDXVghingQQ7",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Drishyam.2015.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A simple, street-smart man tries to protect his family from a cop looking for her missing son.",
+ "parents": [
+ "1aaBRP1LeRt4volb9K3O9N8Qc-h4Ji6N4"
+ ],
+ "popularity": 12.2,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gIClWRv5OSe8rl5Koi0AeUcCZ9Z.jpg",
+ "releaseDate": "2015-07-30",
+ "title": "Drishyam",
+ "type": "file",
+ "voteAverage": 7.682
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 693134,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xOMo8BRK7PfcJv9JCnx7s5hj0PX.jpg",
+ "genres": [
+ "Science Fiction",
+ "Adventure"
+ ],
+ "id": "16p2_OukS9Ff8xIlSvx-ILzl_qR9AYEJu",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Dune.Part.Two.2024.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Follow the mythic journey of Paul Atreides as he unites with Chani and the Fremen while on a path of revenge against the conspirators who destroyed his family. Facing a choice between the love of his life and the fate of the known universe, Paul endeavors to prevent a terrible future only he can foresee.",
+ "parents": [
+ "1ZHRXCOJBVbGkcLGza64aw9c7aWaDGPAe"
+ ],
+ "popularity": 787.686,
+ "posterPath": "https://image.tmdb.org/t/p/w342/czembW0Rk1Ke7lCJGahbOhdCuhV.jpg",
+ "releaseDate": "2024-02-27",
+ "title": "Dune: Part Two",
+ "type": "file",
+ "voteAverage": 8.169
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 38,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jz9Kep0xWjiA6QDHSsd43ASxNfj.jpg",
+ "genres": [
+ "Science Fiction",
+ "Drama",
+ "Romance"
+ ],
+ "id": "11e0wEIbv5PqxIv9XWFa8lyapSFvFE5SX",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Eternal.Sunshine.of.the.Spotless.Mind.2004.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Joel Barish, heartbroken that his girlfriend underwent a procedure to erase him from her memory, decides to do the same. However, as he watches his memories of her fade away, he realises that he still loves her, and may be too late to correct his mistake.",
+ "parents": [
+ "1vpBazHWYnYozEsOdqpkaygqw1igTbyHK"
+ ],
+ "popularity": 73.066,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5MwkWH9tYHv3mV9OdYTMR5qreIz.jpg",
+ "releaseDate": "2004-03-19",
+ "title": "Eternal Sunshine of the Spotless Mind",
+ "type": "file",
+ "voteAverage": 8.097
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 275,
+ "backdropPath": "https://image.tmdb.org/t/p/original/747dgDfL5d8esobk7h4odaOFhUq.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "11OCtAYo-BnuP0MqBJl7t0f74FID2f18P",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Fargo.1996.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Jerry, a small-town Minnesota car salesman is bursting at the seams with debt... but he's got a plan. He's going to hire two thugs to kidnap his wife in a scheme to collect a hefty ransom from his wealthy father-in-law. It's going to be a snap and nobody's going to get hurt... until people start dying. Enter Police Chief Marge, a coffee-drinking, parka-wearing - and extremely pregnant - investigator who'll stop at nothing to get her man. And if you think her small-time investigative skills will give the crooks a run for their ransom... you betcha!",
+ "parents": [
+ "1exVS7E_OVjdVz6ACUev9ZSnom0BA0fRw"
+ ],
+ "popularity": 195.16,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rt7cpEr1uP6RTZykBFhBTcRaKvG.jpg",
+ "releaseDate": "1996-03-08",
+ "title": "Fargo",
+ "type": "file",
+ "voteAverage": 7.862
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 550,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hZkgoQYus5vegHoetLkCJzb17zJ.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1CoHzbIQ1yYeIsmJfxDql8yTThPTGLVyS",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Fight.Club.1999.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking new form of therapy. Their concept catches on, with underground \"fight clubs\" forming in every town, until an eccentric gets in the way and ignites an out-of-control spiral toward oblivion.",
+ "parents": [
+ "1N3zITsS4TIFdyDacz4V4MamsKAVx4NYh"
+ ],
+ "popularity": 216.13,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pB8BM7pdSp6B6Ih7QZ4DrQ3PmJK.jpg",
+ "releaseDate": "1999-10-15",
+ "title": "Fight Club",
+ "type": "file",
+ "voteAverage": 8.4
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 12,
+ "backdropPath": "https://image.tmdb.org/t/p/original/eCynaAOgYYiw5yN5lBwz3IxqvaW.jpg",
+ "genres": [
+ "Animation",
+ "Family"
+ ],
+ "id": "1G4bH1TfTb3diFVhvrvLKLqYd4Us6ddFi",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Finding.Nemo.2003.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Nemo, an adventurous young clownfish, is unexpectedly taken from his Great Barrier Reef home to a dentist's office aquarium. It's up to his worrisome father Marlin and a friendly but forgetful fish Dory to bring Nemo home -- meeting vegetarian sharks, surfer dude turtles, hypnotic jellyfish, hungry seagulls, and more along the way.",
+ "parents": [
+ "1LCAzRvGWNAmQIFs38CaR9IwInkshu6gh"
+ ],
+ "popularity": 117.245,
+ "posterPath": "https://image.tmdb.org/t/p/w342/eHuGQ10FUzK1mdOY69wF5pGgEf5.jpg",
+ "releaseDate": "2003-05-30",
+ "title": "Finding Nemo",
+ "type": "file",
+ "voteAverage": 7.82
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 938,
+ "backdropPath": "https://image.tmdb.org/t/p/original/x0bQvdpr88xVhMrVM93tEIKSM2q.jpg",
+ "genres": [
+ "Western"
+ ],
+ "id": "1luVvhsfcum935HS_wcLRYHDHqj2zpTa-",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "For.A.Few.Dollars.More.1965.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Two bounty hunters are in pursuit of \"El Indio,\" one of the most wanted fugitives in the western territories, and his gang.",
+ "parents": [
+ "1SPI_bfDZEtKb2CIlaPU64Cuc9F5uUQsc"
+ ],
+ "popularity": 32.44,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ooqASvA7qxlTVKL3KwOzBwy57Dh.jpg",
+ "releaseDate": "1965-12-18",
+ "title": "For a Few Dollars More",
+ "type": "file",
+ "voteAverage": 8.021
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 359724,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2vq5GTJOahE03mNYZGxIynlHcWr.jpg",
+ "genres": [
+ "Drama",
+ "Action",
+ "History"
+ ],
+ "id": "1mF_lHvqv9nVWAzLUiu6B4PFPhTZaLwtf",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Ford.V.Ferrari.2019.1080p.BluRay.x264.AAC5.1-[YTS.LT].mp4",
+ "overview": "American car designer Carroll Shelby and the British-born driver Ken Miles work together to battle corporate interference, the laws of physics, and their own personal demons to build a revolutionary race car for Ford Motor Company and take on the dominating race cars of Enzo Ferrari at the 24 Hours of Le Mans in France in 1966.",
+ "parents": [
+ "10ODu36CZ-wwMp7fPwI6_5AlTWj5dwXMa"
+ ],
+ "popularity": 99.12,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dR1Ju50iudrOh3YgfwkAU1g2HZe.jpg",
+ "releaseDate": "2019-11-13",
+ "title": "Ford v Ferrari",
+ "type": "file",
+ "voteAverage": 8.005
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 13,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qdIMHd4sEfJSckfVJfKQvisL02a.jpg",
+ "genres": [
+ "Comedy",
+ "Drama",
+ "Romance"
+ ],
+ "id": "1oq4gIfnBLf8YLGhbjNWQryVN_obgvO65",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Forrest.Gump.1994.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "A man with a low IQ has accomplished great things in his life and been present during significant historic events\u2014in each case, far exceeding what anyone imagined he could do. But despite all he has achieved, his one true love eludes him.",
+ "parents": [
+ "1Q27zMgPz8P4JTJxy2JuQMBcBrOL_S_yM"
+ ],
+ "popularity": 158.506,
+ "posterPath": "https://image.tmdb.org/t/p/w342/arw2vcBveWOVZr6pxd9XTd1TdQa.jpg",
+ "releaseDate": "1994-06-23",
+ "title": "Forrest Gump",
+ "type": "file",
+ "voteAverage": 8.475
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 600,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mKEmuB7diOa7Ef0tJSGQ3fYJnNe.jpg",
+ "genres": [
+ "Drama",
+ "War"
+ ],
+ "id": "1BNrbBzxYNBifWNlNpiChJX1qcHzkstt0",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Full.Metal.Jacket.1987.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A pragmatic U.S. Marine observes the dehumanizing effects the U.S.-Vietnam War has on his fellow recruits from their brutal boot camp training to the bloody street fighting in Hue.",
+ "parents": [
+ "1XgRTNIs85yUJUpzNYXy-UR8-xCWQWo2q"
+ ],
+ "popularity": 39.728,
+ "posterPath": "https://image.tmdb.org/t/p/w342/kMKyx1k8hWWscYFnPbnxxN4Eqo4.jpg",
+ "releaseDate": "1987-06-26",
+ "title": "Full Metal Jacket",
+ "type": "file",
+ "voteAverage": 8.133
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 117691,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zPsubje2FyqfIm6Ox9kSNqFYV61.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1tB6JTDI55bdDJTfg1iGyf-LLjVH-t2ZC",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Gangs.Of.Wasseypur.2012.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In 1970s India, Sardar Khan vows to take revenge on the man who killed his father decades earlier.",
+ "parents": [
+ "1WoOwm_g2z4zk1VIHUS3_8LnGG3FPVIXc"
+ ],
+ "popularity": 17.818,
+ "posterPath": "https://image.tmdb.org/t/p/w342/yd7ltAY4j2tRrLAFpVVqh9EhahC.jpg",
+ "releaseDate": "2012-06-22",
+ "title": "Gangs of Wasseypur - Part 1",
+ "type": "file",
+ "voteAverage": 7.117
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 98,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3ZVEtQxVPpEp5LNpAULDcxadTU3.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "Adventure"
+ ],
+ "id": "1r41SNs-o9R3dh_Wo1lV_kL6LU4jLGT27",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Gladiator.EXTENDED.2000.1080.BrRip.264.YIFY.mp4",
+ "overview": "In the year 180, the death of emperor Marcus Aurelius throws the Roman Empire into chaos. Maximus is one of the Roman army's most capable and trusted generals and a key advisor to the emperor. As Marcus' devious son Commodus ascends to the throne, Maximus is set to be executed. He escapes, but is captured by slave traders. Renamed Spaniard and forced to become a gladiator, Maximus must battle to the death with other men for the amusement of paying audiences.",
+ "parents": [
+ "1QD-q9LcN_VOQbcCpiUNEtEABZ98HwP2y"
+ ],
+ "popularity": 60.081,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ty8TGRuvJLPUmAR1H1nRIsgwvim.jpg",
+ "releaseDate": "2000-05-04",
+ "title": "Gladiator",
+ "type": "file",
+ "voteAverage": 8.216
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 210577,
+ "backdropPath": "https://image.tmdb.org/t/p/original/h2JaQWLKhapm7AuSViJwGiv8ngC.jpg",
+ "genres": [
+ "Mystery",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1TNNESHDUlZ8JxZ9fwsIUnqz59hXkrgTt",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Gone.Girl.2014.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "With his wife's disappearance having become the focus of an intense media circus, a man sees the spotlight turned on him when it's suspected that he may not be innocent.",
+ "parents": [
+ "1Ih-d91kyOAdbH_cZELQf86AK0bXPlUD2"
+ ],
+ "popularity": 102.78,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lv5xShBIDPe7m4ufdlV0IAc7Avk.jpg",
+ "releaseDate": "2014-10-01",
+ "title": "Gone Girl",
+ "type": "file",
+ "voteAverage": 7.892
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 770,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ft8WRF2xqEwwGWa59naDUybKTAx.jpg",
+ "genres": [
+ "Drama",
+ "War",
+ "Romance"
+ ],
+ "id": "1uYS6ICgMeDYi0hjTB9NXxqJ8EWmhiOhy",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Gone.With.The.Wind.1939.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The spoiled daughter of a Georgia plantation owner conducts a tumultuous romance with a cynical profiteer during the American Civil War and Reconstruction Era.",
+ "parents": [
+ "1Z8D-4AjkCJR7czrQG1YPqBWvbslUOOoT"
+ ],
+ "popularity": 39.837,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lNz2Ow0wGCAvzckW7EOjE03KcYv.jpg",
+ "releaseDate": "1939-12-15",
+ "title": "Gone with the Wind",
+ "type": "file",
+ "voteAverage": 7.954
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 489,
+ "backdropPath": "https://image.tmdb.org/t/p/original/bpV8wn48s82au37QyUJ51S7X2Vf.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1fBVQvMCvDtfX6AMKlpgoi4s1QoGfeWfI",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Good.Will.Hunting.1997.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "When professors discover that an aimless janitor is also a math genius, a therapist helps the young man confront the demons that are holding him back.",
+ "parents": [
+ "1yiLK9-8rfH7Z2Es7MQ7apQ9TF2Gvnsbd"
+ ],
+ "popularity": 240.718,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bABCBKYBK7A5G1x0FzoeoNfuj2.jpg",
+ "releaseDate": "1997-12-05",
+ "title": "Good Will Hunting",
+ "type": "file",
+ "voteAverage": 8.154
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 769,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sw7mordbZxgITU877yTpZCud90M.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1mHLFaV7V5JIzWt_Ud1uvPLYQzVFRCGpC",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Goodfellas.1990.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "The true story of Henry Hill, a half-Irish, half-Sicilian Brooklyn kid who is adopted by neighbourhood gangsters at an early age and climbs the ranks of a Mafia family under the guidance of Jimmy Conway.",
+ "parents": [
+ "18SHKi2kcG_jqYq1iYU4zMdgHlahOXNCj"
+ ],
+ "popularity": 200.535,
+ "posterPath": "https://image.tmdb.org/t/p/w342/aKuFiU82s5ISJpGZp7YkIr3kCUd.jpg",
+ "releaseDate": "1990-09-12",
+ "title": "GoodFellas",
+ "type": "file",
+ "voteAverage": 8.464
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 13223,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wmsePXV2z1b6ecXuKKrFbG0Q92P.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1bNlIVq0439EPstEbTd39uhEva_PwtIR7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Gran.Torino.2008.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Disgruntled Korean War veteran Walt Kowalski sets out to reform his neighbor, Thao Lor, a Hmong teenager who tried to steal Kowalski's prized possession: a 1972 Gran Torino.",
+ "parents": [
+ "14k_LCpw9IyXt1mkpp7TPXjY1owe9k2kB"
+ ],
+ "popularity": 38.941,
+ "posterPath": "https://image.tmdb.org/t/p/w342/zUybYvxWdAJy5hhYovsXtHSWI1l.jpg",
+ "releaseDate": "2008-12-12",
+ "title": "Gran Torino",
+ "type": "file",
+ "voteAverage": 7.993
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 12477,
+ "backdropPath": "https://image.tmdb.org/t/p/original/dlC0ed9Ugh3FzydnkBtV5lRXUu4.jpg",
+ "genres": [
+ "Animation",
+ "Drama",
+ "War"
+ ],
+ "id": "15G9VLn8z__JcuJ37C1Rh4b6Bw2wQ8ebS",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Grave.Of.The.Fireflies.1988.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In the final months of World War II, 14-year-old Seita and his sister Setsuko are orphaned when their mother is killed during an air raid in Kobe, Japan. After a falling out with their aunt, they move into an abandoned bomb shelter. With no surviving relatives and their emergency rations depleted, Seita and Setsuko struggle to survive.",
+ "parents": [
+ "1cMxuy3NjT7qZa4Zh2ZdObFc5uU5LwMjf"
+ ],
+ "popularity": 0.047,
+ "posterPath": "https://image.tmdb.org/t/p/w342/k9tv1rXZbOhH7eiCk378x61kNQ1.jpg",
+ "releaseDate": "1988-04-16",
+ "title": "Grave of the Fireflies",
+ "type": "file",
+ "voteAverage": 8.5
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 490132,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2Xe9lISpwXKhvKiHttbFfVRERQX.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1l_F8a09pdoFBS2adjS5beM2Uc7hECthN",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Green.Book.2018.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Tony Lip, a bouncer in 1962, is hired to drive pianist Don Shirley on a tour through the Deep South in the days when African Americans, forced to find alternate accommodations and services due to segregation laws below the Mason-Dixon Line, relied on a guide called The Negro Motorist Green Book.",
+ "parents": [
+ "1xgk7GicqonoRv8atCyHDH8hFuCG5kjuw"
+ ],
+ "popularity": 348.859,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7BsvSuDQuoqhWmU2fL7W2GOcZHU.jpg",
+ "releaseDate": "2018-11-16",
+ "title": "Green Book",
+ "type": "file",
+ "voteAverage": 8.243
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 137,
+ "backdropPath": "https://image.tmdb.org/t/p/original/4zaTJfrbQCdhUirzfcWWVH97h25.jpg",
+ "genres": [
+ "Romance",
+ "Fantasy",
+ "Drama",
+ "Comedy"
+ ],
+ "id": "1a2rxusvkdK_maVOx98IQC9xukQ9AxkSm",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Groundhog.Day.1993.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A narcissistic TV weatherman, along with his attractive-but-distant producer, and his mawkish cameraman, is sent to report on Groundhog Day in the small town of Punxsutawney, where he finds himself repeating the same day over and over.",
+ "parents": [
+ "1IVPhvZv2SDZSfHFrG2CPszpkwICGj3mZ"
+ ],
+ "popularity": 42.072,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gCgt1WARPZaXnq523ySQEUKinCs.jpg",
+ "releaseDate": "1993-02-11",
+ "title": "Groundhog Day",
+ "type": "file",
+ "voteAverage": 7.609
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 28178,
+ "backdropPath": "https://image.tmdb.org/t/p/original/y6JA85N8DvoonwqDGWlgkr1jnU.jpg",
+ "genres": [
+ "Drama",
+ "Family"
+ ],
+ "id": "1MUiJ0OvkLxqJwr7qPcsojG8PIswPjp-M",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Hachi.A.Dogs.Tale.2009.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A drama based on the true story of a college professor's bond with the abandoned dog he takes into his home.",
+ "parents": [
+ "1X_89yALMwgmb0YPeEa3F2JCG3kPDmkES"
+ ],
+ "popularity": 86.272,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lsy3aEsEfYIHdLRk4dontZ4s85h.jpg",
+ "releaseDate": "2009-06-08",
+ "title": "Hachi: A Dog's Tale",
+ "type": "file",
+ "voteAverage": 8.005
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 324786,
+ "backdropPath": "https://image.tmdb.org/t/p/original/yQIBS8B9l2qXoPoPtxSXvH7CfoT.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1NxyV_Wh175qWj-QzemhcQnpbSRjiKQpm",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Hacksaw.Ridge.2016.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "WWII American Army Medic Desmond T. Doss, who served during the Battle of Okinawa, refuses to kill people and becomes the first Conscientious Objector in American history to receive the Congressional Medal of Honor.",
+ "parents": [
+ "1vw1TP46JKx3-BI55pOaMaPFNOStquQLl"
+ ],
+ "popularity": 170.798,
+ "posterPath": "https://image.tmdb.org/t/p/w342/wuz8TjCIWR2EVVMuEfBnQ1vuGS3.jpg",
+ "releaseDate": "2016-10-07",
+ "title": "Hacksaw Ridge",
+ "type": "file",
+ "voteAverage": 8.194
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 556574,
+ "backdropPath": "https://image.tmdb.org/t/p/original/uWVkEo9PWHu9algZsiLPi6sRU64.jpg",
+ "genres": [
+ "History",
+ "Drama"
+ ],
+ "id": "1qaNRnESxIda-VwVqkavpKuHlBVz0gQ4v",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Hamilton.2020.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Presenting the tale of American founding father Alexander Hamilton, this filmed version of the original Broadway smash hit is the story of America then, told by America now.",
+ "parents": [
+ "1dwhIYQiKdslSHFmnSOcSDfcy3N4CSDYl"
+ ],
+ "popularity": 25.591,
+ "posterPath": "https://image.tmdb.org/t/p/w342/h1B7tW0t399VDjAcWJh8m87469b.jpg",
+ "releaseDate": "2020-07-03",
+ "title": "Hamilton",
+ "type": "file",
+ "voteAverage": 8.194
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 14537,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nC3IjYhUgZWgfKfFX0ygMigFwgc.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "History"
+ ],
+ "id": "1WLiulUku6dOi-Cs20uhroD07HfmQTDZc",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Harakiri.1962.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "Down-on-his-luck veteran Tsugumo Hanshir\u014d enters the courtyard of the prosperous House of Iyi. Unemployed, and with no family, he hopes to find a place to commit seppuku\u2014and a worthy second to deliver the coup de gr\u00e2ce in his suicide ritual. The senior counselor for the Iyi clan questions the ronin\u2019s resolve and integrity, suspecting Hanshir\u014d of seeking charity rather than an honorable end. What follows is a pair of interlocking stories which lay bare the difference between honor and respect, and promises to examine the legendary foundations of the Samurai code.",
+ "parents": [
+ "1RM1P3ujN2Z_9ns4zqkMRAiOcR_YflSMP"
+ ],
+ "popularity": 20.225,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5konZnIbcAxZjP616Cz5o9bKEfW.jpg",
+ "releaseDate": "1962-09-15",
+ "title": "Harakiri",
+ "type": "file",
+ "voteAverage": 8.387
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 12445,
+ "backdropPath": "https://image.tmdb.org/t/p/original/n5A7brJCjejceZmHyujwUTVgQNC.jpg",
+ "genres": [
+ "Fantasy",
+ "Adventure"
+ ],
+ "id": "1q9AJ8O25ZafoelNlt-w5kYuU6rIzXMGy",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Harry.Potter.And.The.Deathly.Hallows.Part.2.2011.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Harry, Ron and Hermione continue their quest to vanquish the evil Voldemort once and for all. Just as things begin to look hopeless for the young wizards, Harry discovers a trio of magical objects that endow him with powers to rival Voldemort's formidable skills.",
+ "parents": [
+ "1_j7bZN352lg_ThdMEouVnveaj4mG-wkJ"
+ ],
+ "popularity": 103.063,
+ "posterPath": "https://image.tmdb.org/t/p/w342/c54HpQmuwXjHq2C9wmoACjxoom3.jpg",
+ "releaseDate": "2011-07-12",
+ "title": "Harry Potter and the Deathly Hallows: Part 2",
+ "type": "file",
+ "voteAverage": 8.098
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 949,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xKsnZDERG1dk95wuZ5q9iks3OL3.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Drama"
+ ],
+ "id": "1SFCjDfwBCY5DLKAXx-QmIyPw5q7DNjuM",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Heat.1995.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "Obsessive master thief Neil McCauley leads a top-notch crew on various daring heists throughout Los Angeles while determined detective Vincent Hanna pursues him without rest. Each man recognizes and respects the ability and the dedication of the other even though they are aware their cat-and-mouse game may end in violence.",
+ "parents": [
+ "1uJxEylMHevsTeUzLrYnPpUiWjgI1KviP"
+ ],
+ "popularity": 184.588,
+ "posterPath": "https://image.tmdb.org/t/p/w342/umSVjVdbVwtx5ryCA2QXL44Durm.jpg",
+ "releaseDate": "1995-12-15",
+ "title": "Heat",
+ "type": "file",
+ "voteAverage": 7.919
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 12493,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gSCT6oP2Sbm71naW28Lh7afcMgY.jpg",
+ "genres": [
+ "Drama",
+ "Crime",
+ "Thriller"
+ ],
+ "id": "1TeQxdeaiVcmwo9gg3UQRIQM8xBnIzciP",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "High.And.Low.1963.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A shoe company executive who has mortgaged everything he has becomes a victim of extortion when his chauffeur's son is kidnapped and is conflicted over whether he should pay the ransom.",
+ "parents": [
+ "1k9gLcY9XRQxoi5fxuwv3nrIco8Rhdp8J"
+ ],
+ "popularity": 17.986,
+ "posterPath": "https://image.tmdb.org/t/p/w342/tgNjemQPG96uIezpiUiXFcer5ga.jpg",
+ "releaseDate": "1963-03-01",
+ "title": "High and Low",
+ "type": "file",
+ "voteAverage": 8.3
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1fF6oMe6QXJQRTg3S2T_ABbPnMH0HOk_u",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Hotel.Rawanda.2008.1080p.BrRip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "134HdI0RiRCetL8KBJGhmb5OGyHonNPNl"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "2008-01-01",
+ "title": "Hotel Rawanda",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 10191,
+ "backdropPath": "https://image.tmdb.org/t/p/original/59vDC1BuEQvti24OMr0ZvtAK6R1.jpg",
+ "genres": [
+ "Fantasy",
+ "Adventure",
+ "Animation",
+ "Family"
+ ],
+ "id": "1yIb3hk7glkGmc5BIfWho0l2ehd4o6yS6",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "How.To.Train.Your.Dragon.2010.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "As the son of a Viking leader on the cusp of manhood, shy Hiccup Horrendous Haddock III faces a rite of passage: he must kill a dragon to prove his warrior mettle. But after downing a feared dragon, he realizes that he no longer wants to destroy it, and instead befriends the beast \u2013 which he names Toothless \u2013 much to the chagrin of his warrior father.",
+ "parents": [
+ "1NZlgQg2r6L7qoijVbEs-TFfOXA2m897q"
+ ],
+ "popularity": 82.814,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ygGmAO60t8GyqUo9xYeYxSZAR3b.jpg",
+ "releaseDate": "2010-03-18",
+ "title": "How to Train Your Dragon",
+ "type": "file",
+ "voteAverage": 7.825
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 4935,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xqaN2WYQclQlqvKvsOcNgOx2vRn.jpg",
+ "genres": [
+ "Fantasy",
+ "Animation",
+ "Adventure"
+ ],
+ "id": "1MaMWqvMy1fu2ZQ9ZJf5-8vUp-7JtEeZp",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Howl's.Moving.Castle.2004.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Sophie, a young milliner, is turned into an elderly woman by a witch who enters her shop and curses her. She encounters a wizard named Howl and gets caught up in his resistance to fighting for the king.",
+ "parents": [
+ "1W0zl97YpQFG55V2eTFnvEGmsKpKIxqdW"
+ ],
+ "popularity": 94.774,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6pZgH10jhpToPcf0uvyTCPFhWpI.jpg",
+ "releaseDate": "2004-09-09",
+ "title": "Howl's Moving Castle",
+ "type": "file",
+ "voteAverage": 8.407
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3782,
+ "backdropPath": "https://image.tmdb.org/t/p/original/yn6DvHSEXE8Ao3QaNlELpqeSOqx.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1lvL-4wi4aYV_3Qgh9xo6p6jDReUZGabJ",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Ikiru.1952.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Kanji Watanabe is a middle-aged man who has worked in the same monotonous bureaucratic position for decades. Learning he has cancer, he starts to look for the meaning of his life.",
+ "parents": [
+ "1TJkpaH88aOenDK6zCrf1L6bNhk5IcNCE"
+ ],
+ "popularity": 21.495,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dgNTS4EQDDVfkzJI5msKuHu2Ei3.jpg",
+ "releaseDate": "1952-10-09",
+ "title": "Ikiru",
+ "type": "file",
+ "voteAverage": 8.307
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 7984,
+ "backdropPath": "https://image.tmdb.org/t/p/original/rJlQaeACIyLywrpd6S72Hd1OTZJ.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1MN6lLOYaezdgKtlYLUMPzp_JBpwe8YJU",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "In.The.Name.Of.The.Father.1993.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A small time thief from Belfast, Gerry Conlon, is falsely implicated in the IRA bombing of a pub that kills several people while he is in London. He and his four friends are coerced by British police into confessing their guilt. Gerry's father and other relatives in London are also implicated in the crime. He spends fifteen years in prison with his father trying to prove his innocence.",
+ "parents": [
+ "1Hj9pfCmZvAaLagBd5I77AUxZnd34FBJJ"
+ ],
+ "popularity": 16.616,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5HaQacOMOjA2wX1XnwnDd2VaXCf.jpg",
+ "releaseDate": "1993-12-12",
+ "title": "In the Name of the Father",
+ "type": "file",
+ "voteAverage": 7.9
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 46738,
+ "backdropPath": "https://image.tmdb.org/t/p/original/aFmoJntgDPR0Jd8XD1ZfFSmcqMg.jpg",
+ "genres": [
+ "Drama",
+ "War",
+ "Mystery"
+ ],
+ "id": "1CC5xsFgjdpXW2gcfX9NLaPHswmkuueG_",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "Incendies.2010.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A mother's last wishes send twins Jeanne and Simon on a journey to Middle East in search of their tangled roots. Adapted from Wajdi Mouawad's acclaimed play, Incendies tells the powerful and moving tale of two young adults' voyage to the core of deep-rooted hatred, never-ending wars and enduring love.",
+ "parents": [
+ "1MG-8VWaxzzxYOocRsQ2HeCzreV4OK2Ar"
+ ],
+ "popularity": 38.581,
+ "posterPath": "https://image.tmdb.org/t/p/w342/i5GsLIII66LubmOai65cWiB4kZq.jpg",
+ "releaseDate": "2010-09-17",
+ "title": "Incendies",
+ "type": "file",
+ "voteAverage": 8.103
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 27205,
+ "backdropPath": "https://image.tmdb.org/t/p/original/28kKbSUvUz6P5RE1AuMJMO7IMfK.jpg",
+ "genres": [
+ "Action",
+ "Science Fiction",
+ "Adventure"
+ ],
+ "id": "14ajI_iQnBkEfzhPJQ6rlVGnQRA7bQ8NU",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Inception.2010.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Cobb, a skilled thief who commits corporate espionage by infiltrating the subconscious of his targets is offered a chance to regain his old life as payment for a task considered to be impossible: \"inception\", the implantation of another person's idea into a target's subconscious.",
+ "parents": [
+ "1vdHhNwmKLh-REjgij5U0btC5DmN56tIE"
+ ],
+ "popularity": 355.797,
+ "posterPath": "https://image.tmdb.org/t/p/w342/oYuLEt3zVCKq57qu2F8dT7NIa6f.jpg",
+ "releaseDate": "2010-07-15",
+ "title": "Inception",
+ "type": "file",
+ "voteAverage": 8.368
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 89,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7KGdTzKux4fp5sW7hUM33NWqBU1.jpg",
+ "genres": [
+ "Adventure",
+ "Action"
+ ],
+ "id": "13jO31unQ_XhF4p21FAbQsUPB4vn71piZ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Indiana.Jones.And.The.Last.Crusade.1989.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "In 1938, an art collector appeals to eminent archaeologist Dr. Indiana Jones to embark on a search for the Holy Grail. Indy learns that a medieval historian has vanished while searching for it, and the missing man is his own father, Dr. Henry Jones Sr.. He sets out to rescue his father by following clues in the old man's notebook, which his father had mailed to him before he went missing. Indy arrives in Venice, where he enlists the help of a beautiful academic, Dr. Elsa Schneider, along with Marcus Brody and Sallah. Together they must stop the Nazis from recovering the power of eternal life and taking over the world!",
+ "parents": [
+ "1GYk4EULDVNodLb9G37I5wgq-BM7o4YiC"
+ ],
+ "popularity": 62.16,
+ "posterPath": "https://image.tmdb.org/t/p/w342/npUCnxl1fqgt3aQiMQq0iJdZMZp.jpg",
+ "releaseDate": "1989-05-24",
+ "title": "Indiana Jones and the Last Crusade",
+ "type": "file",
+ "voteAverage": 7.848
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 85,
+ "backdropPath": "https://image.tmdb.org/t/p/original/c7Mjuip0jfHLY7x8ZSEriRj45cu.jpg",
+ "genres": [
+ "Adventure",
+ "Action"
+ ],
+ "id": "18h_NYycI1zqbR8BHaM3ZZ4U8yIPOlD5E",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Indiana.Jones.And.The.Raiders.Of.The.Lost.Ark.1981.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "When Dr. Indiana Jones \u2013 the tweed-suited professor who just happens to be a celebrated archaeologist \u2013 is hired by the government to locate the legendary Ark of the Covenant, he finds himself up against the entire Nazi regime.",
+ "parents": [
+ "1WSHP9JlruZJvSjn3E-jA7PzUA1j1EHQT"
+ ],
+ "popularity": 70.856,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ceG9VzoRAVGwivFU403Wc3AHRys.jpg",
+ "releaseDate": "1981-06-12",
+ "title": "Raiders of the Lost Ark",
+ "type": "file",
+ "voteAverage": 7.926
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 16869,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1Jpkm9qZcsT0mSyVXgs4VlGjPNI.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "War"
+ ],
+ "id": "1Uk7WQ2Rysaq0WEUY5Uvx7PyWaDvqqyF_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Inglourious Bastards.2009.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "In Nazi-occupied France during World War II, a group of Jewish-American soldiers known as \"The Basterds\" are chosen specifically to spread fear throughout the Third Reich by scalping and brutally killing Nazis. The Basterds, lead by Lt. Aldo Raine soon cross paths with a French-Jewish teenage girl who runs a movie theater in Paris which is targeted by the soldiers.",
+ "parents": [
+ "11HmBD5mNDyb2gp6r6vlHX3OjA_WMQric"
+ ],
+ "popularity": 104.595,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7sfbEnaARXDDhKm0CZ7D7uc2sbo.jpg",
+ "releaseDate": "2009-08-02",
+ "title": "Inglourious Basterds",
+ "type": "file",
+ "voteAverage": 8.219
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 150540,
+ "backdropPath": "https://image.tmdb.org/t/p/original/j29ekbcLpBvxnGk6LjdTc2EI5SA.jpg",
+ "genres": [
+ "Animation",
+ "Family",
+ "Adventure",
+ "Drama",
+ "Comedy"
+ ],
+ "id": "117gEC1F6zdEIaDmeohOYfmyHFctaZCo-",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Inside.Out.2015.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "From an adventurous balloon ride above the clouds to a monster-filled metropolis, Academy Award\u00ae-winning director Pete Docter (\u201cMonsters, Inc.,\u201d \u201cUp\u201d) has taken audiences to unique and imaginative places. In Disney and Pixar\u2019s original movie \u201c Inside Out,\u201d he will take us to the most extraordinary location of all\u2014inside the mind.",
+ "parents": [
+ "1PciFhqRMetWEeL9j-7pBzCk9oJFY0yha"
+ ],
+ "popularity": 415.909,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2H1TmgdfNtsKlU9jKdeNyYL5y8T.jpg",
+ "releaseDate": "2015-06-09",
+ "title": "Inside Out",
+ "type": "file",
+ "voteAverage": 7.914
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 157336,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xJHokMbljvjADYdit5fK5VQsXEG.jpg",
+ "genres": [
+ "Adventure",
+ "Drama",
+ "Science Fiction"
+ ],
+ "id": "1qiqox0okc4vb_kYVYzKE0iXk_9UQg2XZ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Interstellar.2014.2014.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "The adventures of a group of explorers who make use of a newly discovered wormhole to surpass the limitations on human space travel and conquer the vast distances involved in an interstellar voyage.",
+ "parents": [
+ "19p6oKvBPddLRBmzPlQvyx3KcVezpiQZm"
+ ],
+ "popularity": 325.093,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gEU2QniE6E77NI6lCU6MxlNBvIx.jpg",
+ "releaseDate": "2014-11-05",
+ "title": "Interstellar",
+ "type": "file",
+ "voteAverage": 8.435
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 5915,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mvyERNa0oNsBjbHqn5qSGMHk2FM.jpg",
+ "genres": [
+ "Adventure",
+ "Drama"
+ ],
+ "id": "145BKefNXiMnJ-KYADOQXEhNaTQPMRA3p",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Into.the.Wild.2007.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "After graduating from Emory University in 1992, top student and athlete Christopher McCandless abandons his possessions, gives his entire $24,000 savings account to charity, and hitchhikes to Alaska to live in the wilderness.",
+ "parents": [
+ "1OW5ZAfXameZpuc0_Vclhu2fOT_IL2gbu"
+ ],
+ "popularity": 39.994,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2MSGZEE6XZd2r4ODNziwAw7Hpw0.jpg",
+ "releaseDate": "2007-09-21",
+ "title": "Into the Wild",
+ "type": "file",
+ "voteAverage": 7.805
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3078,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hmiC0MsI0PDd1TJXC62xyw0tX0s.jpg",
+ "genres": [
+ "Comedy",
+ "Romance"
+ ],
+ "id": "1ezEcQIfa3cWpbfqSHnHKyykFJLFpXvLl",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "It.Happened.One.Night.1934.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "A rogue reporter trailing a runaway heiress for a big story joins her on a bus heading from Florida to New York and they end up stuck with each other when the bus leaves them behind at one of the stops along the way.",
+ "parents": [
+ "1HTW_G263A2Av7werFQxw9emDA3Cyy3vw"
+ ],
+ "popularity": 17.39,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2PNUGWAflH6UUumas0POMmokHlc.jpg",
+ "releaseDate": "1934-02-22",
+ "title": "It Happened One Night",
+ "type": "file",
+ "voteAverage": 7.828
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1585,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ch3lDc4xQ9MpsNEpnRhvR8PIxxK.jpg",
+ "genres": [
+ "Drama",
+ "Family",
+ "Fantasy"
+ ],
+ "id": "1Q30MxLwix8Iag6w0Ju2snpejuWcXaOmc",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Its.A.Wonderful.Life.1946.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "A holiday favourite for generations... George Bailey has spent his entire life giving to the people of Bedford Falls. All that prevents rich skinflint Mr. Potter from taking over the entire town is George's modest building and loan company. But on Christmas Eve the business's $8,000 is lost and George's troubles begin.",
+ "parents": [
+ "1McqEQrDYP-bt9IZH91fQJel-QxEhJvSB"
+ ],
+ "popularity": 44.791,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bSqt9rhDZx1Q7UZ86dBPKdNomp2.jpg",
+ "releaseDate": "1946-12-20",
+ "title": "It's a Wonderful Life",
+ "type": "file",
+ "voteAverage": 8.269
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 855400,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zdoxq5iQ2Wlg7VQRG67bAmXOWqZ.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Mystery"
+ ],
+ "id": "153g84nNveQm95kmD2p8m2eqHiH_PVryX",
+ "language": "ta",
+ "mimeType": "video/mp4",
+ "name": "Jai.Bhim.2021.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A pregnant woman from a primitive tribal community, searches desperately for her husband, who is missing from police custody. So as to find her husband and seek justice for them, as their voice, a High Court advocate rises in support. Will their battle for justice succeed?",
+ "parents": [
+ "1N_TSI1Sdl5kyeZa7Ki7hK9YroCKQdT4O"
+ ],
+ "popularity": 9.086,
+ "posterPath": "https://image.tmdb.org/t/p/w342/zb9QBUn5AZzoKCS2jsnhp6ySSGp.jpg",
+ "releaseDate": "2021-11-02",
+ "title": "Jai Bhim",
+ "type": "file",
+ "voteAverage": 7.492
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 578,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3nYlM34QhzdtAvWRV5bN4nLtnTc.jpg",
+ "genres": [
+ "Horror",
+ "Thriller",
+ "Adventure"
+ ],
+ "id": "1V4YJ1q8NMkl2ToJ2h8tyzZw7Bx0PATMS",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Jaws.1975.1080p.BrRip.x264.bitloks.YIFY.mp4",
+ "overview": "When the seaside community of Amity finds itself under attack by a dangerous great white shark, the town's chief of police, a young marine biologist, and a grizzled hunter embark on a desperate quest to destroy the beast before it strikes again.",
+ "parents": [
+ "1_dxMy5qfTT80e_7FGOXAJAkWuctyKotE"
+ ],
+ "popularity": 292.271,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lxM6kqilAdpdhqUl2biYp5frUxE.jpg",
+ "releaseDate": "1975-06-20",
+ "title": "Jaws",
+ "type": "file",
+ "voteAverage": 7.662
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 475557,
+ "backdropPath": "https://image.tmdb.org/t/p/original/n6bUvigpRFqSwmPp1m2YADdbRBc.jpg",
+ "genres": [
+ "Crime",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1K2Y0SxoelfJ76v_lEmccgfe6Qvqi_on6",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Joker.2019.1080p.BluRay.x264-[YTS.LT].mp4",
+ "overview": "During the 1980s, a failed stand-up comedian is driven insane and turns to a life of crime and chaos in Gotham City while becoming an infamous psychopathic crime figure.",
+ "parents": [
+ "1z_Ifndh2otzMVAAxSQXZIJfFdEP57okx"
+ ],
+ "popularity": 383.395,
+ "posterPath": "https://image.tmdb.org/t/p/w342/udDclJoHjfjb8Ekgsd4FDteOkCU.jpg",
+ "releaseDate": "2019-10-01",
+ "title": "Joker",
+ "type": "file",
+ "voteAverage": 8.161
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 821,
+ "backdropPath": "https://image.tmdb.org/t/p/original/37lz7mPo3AWV2BiaF7TA6ZWqL5u.jpg",
+ "genres": [
+ "Drama",
+ "War",
+ "History"
+ ],
+ "id": "1S56Y7Mg0ZYNPNB0US6rQycS-wQ9PJ_xk",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Judgment.at.Nuremberg.1961.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "In 1947, four German judges who served on the bench during the Nazi regime face a military tribunal to answer charges of crimes against humanity. Chief Justice Haywood hears evidence and testimony not only from lead defendant Ernst Janning and his defense attorney Hans Rolfe, but also from the widow of a Nazi general, an idealistic U.S. Army captain and reluctant witness Irene Wallner.",
+ "parents": [
+ "1V9hjYtzsBpov4kTuY6ZOc4Eqpdy6zCdL"
+ ],
+ "popularity": 15.877,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cqumfgd74ftVzOKJpFGOG64WlXL.jpg",
+ "releaseDate": "1961-12-18",
+ "title": "Judgment at Nuremberg",
+ "type": "file",
+ "voteAverage": 8.04
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 329,
+ "backdropPath": "https://image.tmdb.org/t/p/original/79bJL9ydAMYVltuNTt4VhxORqIz.jpg",
+ "genres": [
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "11TdiHzD2DlWRlIC3_ElUjcOek9M3T6Li",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Jurassic.Park.1993.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "A wealthy entrepreneur secretly creates a theme park featuring living dinosaurs drawn from prehistoric DNA. Before opening day, he invites a team of experts and his two eager grandchildren to experience the park and help calm anxious investors. However, the park is anything but amusing as the security systems go off-line and the dinosaurs escape.",
+ "parents": [
+ "1_HGuGJDJ7oTd5hye5d8qbY26wBvmfWts"
+ ],
+ "popularity": 37.255,
+ "posterPath": "https://image.tmdb.org/t/p/w342/b1xCNnyrPebIc7EWNZIa6jhb1Ww.jpg",
+ "releaseDate": "1993-06-11",
+ "title": "Jurassic Park",
+ "type": "file",
+ "voteAverage": 7.946
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 24,
+ "backdropPath": "https://image.tmdb.org/t/p/original/lVy5Zqcty2NfemqKYbVJfdg44rK.jpg",
+ "genres": [
+ "Action",
+ "Crime"
+ ],
+ "id": "1qaOpw69SSGFOHSS5pnLSPT7jLsKK-Z10",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Kill.Bill.Vol.1.2003.1080p.BrRIp.x264.YIFY.mp4",
+ "overview": "An assassin is shot by her ruthless employer, Bill, and other members of their assassination circle \u2013 but she lives to plot her vengeance.",
+ "parents": [
+ "1TKpcbZh4wZ15W6u1Zjps6bhAv9s15EPU"
+ ],
+ "popularity": 56.322,
+ "posterPath": "https://image.tmdb.org/t/p/w342/v7TaX8kXMXs5yFFGR41guUDNcnB.jpg",
+ "releaseDate": "2003-10-10",
+ "title": "Kill Bill: Vol. 1",
+ "type": "file",
+ "voteAverage": 7.971
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 508965,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mlxKite1x1PgmIhJgAxNS9eHmH8.jpg",
+ "genres": [
+ "Animation",
+ "Family",
+ "Adventure",
+ "Comedy",
+ "Fantasy"
+ ],
+ "id": "1Z0ZnhYYzZgEBJ7Sl7_wQXKIo7VXUe2Cu",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Klaus.2019.1080p.WEBRip.x264-[YTS.LT].mp4",
+ "overview": "When Jesper distinguishes himself as the Postal Academy's worst student, he is sent to Smeerensburg, a small village located on an icy island above the Arctic Circle, where grumpy inhabitants barely exchange words, let alone letters. Jesper is about to give up and abandon his duty as a postman when he meets local teacher Alva and Klaus, a mysterious carpenter who lives alone in a cabin full of handmade toys.",
+ "parents": [
+ "1-Dds8-UmfC0zrYB3w-0_WX8rXYGyb9mT"
+ ],
+ "popularity": 28.714,
+ "posterPath": "https://image.tmdb.org/t/p/w342/q125RHUDgR4gjwh1QkfYuJLYkL.jpg",
+ "releaseDate": "2019-11-08",
+ "title": "Klaus",
+ "type": "file",
+ "voteAverage": 8.249
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 2118,
+ "backdropPath": "https://image.tmdb.org/t/p/original/fGbM2cqPauRu7ALFPSTDBH9FgpU.jpg",
+ "genres": [
+ "Crime",
+ "Mystery",
+ "Thriller"
+ ],
+ "id": "1iWmTIkBPXVypB40XHsJjbbLDTeTGZVMH",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "L.A..Confidential.1997.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Three detectives in the corrupt and brutal L.A. police force of the 1950s use differing methods to uncover a conspiracy behind the shotgun slayings of the patrons at an all-night diner.",
+ "parents": [
+ "11sPcoT7N9m_yXq7_dfLSCOKJLWSVCBee"
+ ],
+ "popularity": 24.752,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lWCgf5sD5FpMljjpkRhcC8pXcch.jpg",
+ "releaseDate": "1997-09-19",
+ "title": "L.A. Confidential",
+ "type": "file",
+ "voteAverage": 7.792
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 406,
+ "backdropPath": "https://image.tmdb.org/t/p/original/viGCwLxupyoaLsa6hrnu1gYrB0B.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1q4JFY3YA1wbDu4LRupvJY6VfQSx87fr3",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "La.Haine.1995.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After a chaotic night of rioting in a marginal suburb of Paris, three young friends, Vinz, Hubert and Sa\u00efd, wander around unoccupied waiting for news about the state of health of a mutual friend who has been seriously injured when confronting the police.",
+ "parents": [
+ "1zvOAySRZSvWDz3jXb7Z4WLyjh15seClY"
+ ],
+ "popularity": 27.884,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8rgPyWjYZhsphSSxbXguMnhN7H0.jpg",
+ "releaseDate": "1995-05-31",
+ "title": "La Haine",
+ "type": "file",
+ "voteAverage": 8.096
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 947,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mx2jS5Kaa5rmaldEFzKeKpDN9Q2.jpg",
+ "genres": [
+ "Adventure",
+ "History",
+ "War"
+ ],
+ "id": "1GWALf52AReeq1s_bUM2_pLHZAa8w8omv",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Lawrence.Of.Arabia.1962.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "The story of British officer T.E. Lawrence's mission to aid the Arab tribes in their revolt against the Ottoman Empire during the First World War. Lawrence becomes a flamboyant, messianic figure in the cause of Arab unity but his psychological instability threatens to undermine his achievements.",
+ "parents": [
+ "1a_IbVNK1rXFlBgKXNxRHeG3s-txVoe-Q"
+ ],
+ "popularity": 90.948,
+ "posterPath": "https://image.tmdb.org/t/p/w342/AiAm0EtDvyGqNpVoieRw4u65vD1.jpg",
+ "releaseDate": "1962-12-11",
+ "title": "Lawrence of Arabia",
+ "type": "file",
+ "voteAverage": 8.001
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1l3V1xDHFt7GvK1z3rK8PvonF8AhPSvWE",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Leon.the.Professional.Extended.1994.BrRip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1tsZRLY-E04JuImyyYIv7LR2Wtk-Y4qw4"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "1994-01-01",
+ "title": "Leon the Professional Extended",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 637,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gavyCu1UaTaTNPsVaGXT6pe5u24.jpg",
+ "genres": [
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1pXN36pmlNe5SCxd8RGzpRyiMx8K9kASJ",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "Life.Is.Beautiful.1997.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A touching story of an Italian book seller of Jewish ancestry who lives in his own little fairy tale. His creative and happy life would come to an abrupt halt when his entire family is deported to a concentration camp during World War II. While locked up he tries to convince his son that the whole thing is just a game.",
+ "parents": [
+ "1_io86tTytSQFdoNj0Ls25uGyPr1m7_Hs"
+ ],
+ "popularity": 53.139,
+ "posterPath": "https://image.tmdb.org/t/p/w342/74hLDKjD5aGYOotO6esUVaeISa2.jpg",
+ "releaseDate": "1997-12-20",
+ "title": "Life Is Beautiful",
+ "type": "file",
+ "voteAverage": 8.452
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 7508,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5dF4FNwM2qZIuF0WCUs5zvDGU2H.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1iHlpwh5BUmWfdefNi8A69WkAcPp_3UYk",
+ "language": "hi",
+ "mimeType": "video/mp4",
+ "name": "Like.Stars.On.Earth.2007.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Ishaan Awasthi is an eight-year-old whose world is filled with wonders that no one else seems to appreciate. Colours, fish, dogs, and kites don't seem important to the adults, who are much more interested in things like homework, marks, and neatness. Ishaan cannot seem to get anything right in class; he is then sent to boarding school, where his life changes forever.",
+ "parents": [
+ "1tlht9fizJiI9B4-VeUOM9RFeivSYR01M"
+ ],
+ "popularity": 22.126,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fwXhw9bERqKrJfJK6WGakPIh3FS.jpg",
+ "releaseDate": "2007-12-21",
+ "title": "Like Stars on Earth",
+ "type": "file",
+ "voteAverage": 7.994
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 100,
+ "backdropPath": "https://image.tmdb.org/t/p/original/cXQH2u7wUIX1eoIdEj51kHXoWhX.jpg",
+ "genres": [
+ "Comedy",
+ "Crime"
+ ],
+ "id": "1tVwn9RNd5baGtWohHMps2x2s35sS5ZBu",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Lock,.Stock.and.Two.Smoking.Barrels.1998.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "A card shark and his unwillingly-enlisted friends need to make a lot of cash quick after losing a sketchy poker match. To do this they decide to pull a heist on a small-time gang who happen to be operating out of the flat next door.",
+ "parents": [
+ "10pous4gA_sv9JdaYmnHTgcIsXqbhjkMr"
+ ],
+ "popularity": 13.397,
+ "posterPath": "https://image.tmdb.org/t/p/w342/wt2TRBmFmBn5M5MBcPTwovlREaB.jpg",
+ "releaseDate": "1998-08-28",
+ "title": "Lock, Stock and Two Smoking Barrels",
+ "type": "file",
+ "voteAverage": 8.123
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 263115,
+ "backdropPath": "https://image.tmdb.org/t/p/original/9X7YweCJw3q8Mcf6GadxReFEksM.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "Science Fiction"
+ ],
+ "id": "1esTMmy_W0Pjq-AmFJpPby35JSYozIpsk",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Logan.2017.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "In the near future, a weary Logan cares for an ailing Professor X in a hideout on the Mexican border. But Logan's attempts to hide from the world and his legacy are upended when a young mutant arrives, pursued by dark forces.",
+ "parents": [
+ "16-9zO9o1gS0OIiy3o65oPjNzVNoc93Bb"
+ ],
+ "popularity": 382.987,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fnbjcRDYn6YviCcePDnGdyAkYsB.jpg",
+ "releaseDate": "2017-02-28",
+ "title": "Logan",
+ "type": "file",
+ "voteAverage": 7.818
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 832,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mQUOFbRoRG9t8oS0SOk955flHJq.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1e06Rj4-QMLu_MK15BCV5gtxknOlAqg-h",
+ "language": "de",
+ "mimeType": "video/mp4",
+ "name": "M.1931.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In this classic German thriller, Hans Beckert, a serial killer who preys on children, becomes the focus of a massive Berlin police manhunt. Beckert's heinous crimes are so repellant and disruptive to city life that he is even targeted by others in the seedy underworld network. With both cops and criminals in pursuit, the murderer soon realizes that people are on his trail, sending him into a tense, panicked attempt to escape justice.",
+ "parents": [
+ "1PwFtKO1LiMET2KMKCISIaRcjgWJXwFEC"
+ ],
+ "popularity": 18.531,
+ "posterPath": "https://image.tmdb.org/t/p/w342/slsS6jT6SXjcTPOrsFcLIrHboXA.jpg",
+ "releaseDate": "1931-05-11",
+ "title": "M",
+ "type": "file",
+ "voteAverage": 8.089
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 76341,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8yACFuo4OaIiKr9hHFlmPcGalKx.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1kx_8nYPm0Kk_cSM5EKpcLeSgiej7fvoH",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Mad.Max.Fury.Road.2015.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "An apocalyptic story set in the furthest reaches of our planet, in a stark desert landscape where humanity is broken, and most everyone is crazed fighting for the necessities of life. Within this world exist two rebels on the run who just might be able to restore order.",
+ "parents": [
+ "1jzneo-I2hKRbMcJFrMy3IbabmvNzplZT"
+ ],
+ "popularity": 316.372,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hA2ple9q4qnwxp3hKVNhroipsir.jpg",
+ "releaseDate": "2015-05-13",
+ "title": "Mad Max: Fury Road",
+ "type": "file",
+ "voteAverage": 7.599
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 24238,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pW1sEV4R2GL99OoUq73Pvf7r7Ce.jpg",
+ "genres": [
+ "Animation",
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1wIXhsxego4qy1SzZv5YbiLNulQwBPPBO",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Mary.and.Max.2009.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "A tale of friendship between two unlikely pen pals: Mary, a lonely, eight-year-old girl living in the suburbs of Melbourne, and Max, a forty-four-year old, severely obese man living in New York.",
+ "parents": [
+ "1eemPYx24vGE0XwTI4d-PB2Pu2vD5GqbS"
+ ],
+ "popularity": 70.5,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ebmsM382m9IClLUzKYY2U5biFwM.jpg",
+ "releaseDate": "2009-02-09",
+ "title": "Mary and Max",
+ "type": "file",
+ "voteAverage": 7.851
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 77,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7Wev9JMo6R5XAfz2KDvXb7oPMmy.jpg",
+ "genres": [
+ "Mystery",
+ "Thriller"
+ ],
+ "id": "1MZKIMVaoXA4Iu7r9llqvd9zigau5Aq-a",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Memento.2000.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Leonard Shelby is tracking down the man who raped and murdered his wife. The difficulty of locating his wife's killer, however, is compounded by the fact that he suffers from a rare, untreatable form of short-term memory loss. Although he can recall details of life before his accident, Leonard cannot remember what happened fifteen minutes ago, where he's going, or why.",
+ "parents": [
+ "1A4ndS19ufCZc2OXEMfhRNz4mFVAE0TUs"
+ ],
+ "popularity": 45.162,
+ "posterPath": "https://image.tmdb.org/t/p/w342/nWtySDlffTfwAa0rSfq61o33ZXV.jpg",
+ "releaseDate": "2000-10-11",
+ "title": "Memento",
+ "type": "file",
+ "voteAverage": 8.183
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11423,
+ "backdropPath": "https://image.tmdb.org/t/p/original/njaw7QZy5ni8ZDydx3b1EDpEfwk.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1n4YRIUo9Kv6yM03UYaaxgZ5j4quiDwFb",
+ "language": "ko",
+ "mimeType": "video/mp4",
+ "name": "Memories.Of.Murder.2003.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "During the late 1980s, two detectives in a South Korean province attempt to solve the nation's first series of rape-and-murder cases.",
+ "parents": [
+ "1so6crHVXcKDfHpWZJqnjP8iX_rhPGv8M"
+ ],
+ "popularity": 30.865,
+ "posterPath": "https://image.tmdb.org/t/p/w342/jcgUjx1QcupGzjntTVlnQ15lHqy.jpg",
+ "releaseDate": "2003-05-02",
+ "title": "Memories of Murder",
+ "type": "file",
+ "voteAverage": 8.062
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 19,
+ "backdropPath": "https://image.tmdb.org/t/p/original/rnN9yJfwso6JA64wIPqK1m6K6e1.jpg",
+ "genres": [
+ "Drama",
+ "Science Fiction"
+ ],
+ "id": "1V4lENVk5XdhKCXnsvbmyE_dU0hUoqtY2",
+ "language": "de",
+ "mimeType": "video/mp4",
+ "name": "Metropolis.1927.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In a futuristic city sharply divided between the rich and the poor, the son of the city's mastermind meets a prophet who predicts the coming of a savior to mediate their differences.",
+ "parents": [
+ "1uooEwfFX0LvCbv0jhJC7F8wT05yQ1jU1"
+ ],
+ "popularity": 205.622,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pxbGZewX327IbTvrCVRJgcLJTSQ.jpg",
+ "releaseDate": "1927-02-06",
+ "title": "Metropolis",
+ "type": "file",
+ "voteAverage": 8.138
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 70,
+ "backdropPath": "https://image.tmdb.org/t/p/original/oGMomeS7bE43eN8SGJUaKvQnmud.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1R_jVCGJkNEz2yDtd0kVpMf0Dzt_b-CUf",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Million.Dollar.Baby.2004.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Despondent over a painful estrangement from his daughter, trainer Frankie Dunn isn't prepared for boxer Maggie Fitzgerald to enter his life. But Maggie's determined to go pro and to convince Dunn and his cohort to help her.",
+ "parents": [
+ "18f2XTqYLXwlaYkd2yyxiTF0lO76Lfh00"
+ ],
+ "popularity": 58.892,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2ti3l1OeB8G94yyqfAI7nmMZUbA.jpg",
+ "releaseDate": "2004-12-15",
+ "title": "Million Dollar Baby",
+ "type": "file",
+ "voteAverage": 7.956
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3082,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kSlO1pHpwQfPQdgVPr7dJiJNtJ8.jpg",
+ "genres": [
+ "Comedy",
+ "Drama",
+ "Romance"
+ ],
+ "id": "1w0pW7gwxIn-wAbn6VQNSf8Glgdd__g4M",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Modern.Times.1936.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A bumbling tramp desires to build a home with a young woman, yet is thwarted time and time again by his lack of experience and habit of being in the wrong place at the wrong time..",
+ "parents": [
+ "1kDxyS5MK1f8QPZ6ihLzkXmQw6hJk_Y6G"
+ ],
+ "popularity": 28.924,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uEMekS25hwXrCJOZZ3NKMGcAFJo.jpg",
+ "releaseDate": "1936-02-05",
+ "title": "Modern Times",
+ "type": "file",
+ "voteAverage": 8.293
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 585,
+ "backdropPath": "https://image.tmdb.org/t/p/original/puo6orN2BjQt1g4K0umVlooVff9.jpg",
+ "genres": [
+ "Animation",
+ "Comedy",
+ "Family"
+ ],
+ "id": "12DMwfhn0ZoKF4C87qnRVd5jAGdTgwYvS",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Monsters.Inc.2001.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Lovable Sulley and his wisecracking sidekick Mike Wazowski are the top scare team at Monsters, Inc., the scream-processing factory in Monstropolis. When a little girl named Boo wanders into their world, it's the monsters who are scared silly, and it's up to Sulley and Mike to keep her out of sight and get her back home.",
+ "parents": [
+ "1kWUVIcRs5H-XQFcn3ga8toEqCo8LtvUC"
+ ],
+ "popularity": 135.046,
+ "posterPath": "https://image.tmdb.org/t/p/w342/wFSpyMsp7H0ttERbxY7Trlv8xry.jpg",
+ "releaseDate": "2001-11-01",
+ "title": "Monsters, Inc.",
+ "type": "file",
+ "voteAverage": 7.843
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 762,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1KgXxv6tHXOnakqYvMPvFwYKWiw.jpg",
+ "genres": [
+ "Adventure",
+ "Comedy",
+ "Fantasy"
+ ],
+ "id": "1Q7GveL4zJczRfby75trtbbL6ZRb5YuBT",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Monty.Python.And.The.Holy.Grail.1975.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "King Arthur, accompanied by his squire, recruits his Knights of the Round Table, including Sir Bedevere the Wise, Sir Lancelot the Brave, Sir Robin the Not-Quite-So-Brave-As-Sir-Lancelot and Sir Galahad the Pure. On the way, Arthur battles the Black Knight who, despite having had all his limbs chopped off, insists he can still fight. They reach Camelot, but Arthur decides not to enter, as \"it is a silly place\".",
+ "parents": [
+ "1OVyjX-Xlh1C82ZM47YUkKF8rIFeXGz0d"
+ ],
+ "popularity": 32.913,
+ "posterPath": "https://image.tmdb.org/t/p/w342/xZ0rC0kuIsjk6RncpNK73kwstEP.jpg",
+ "releaseDate": "1975-03-14",
+ "title": "Monty Python and the Holy Grail",
+ "type": "file",
+ "voteAverage": 7.805
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3083,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ymgCnPxic0dFagzsK4RX1tIPjE5.jpg",
+ "genres": [
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1zUHmRd6oHvimpjSBmWxRykWIvNyVOD6S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Mr..Smith.Goes.To.Washington.1939.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Naive and idealistic Jefferson Smith, leader of the Boy Rangers, is appointed to the United States Senate by the puppet governor of his state. He soon discovers, upon going to Washington, many shortcomings of the political process as his earnest goal of a national boys' camp leads to a conflict with the state political boss.",
+ "parents": [
+ "1fZtp7ix9w6ZqSFkP7_gqcqTLVxhG1gwW"
+ ],
+ "popularity": 13.09,
+ "posterPath": "https://image.tmdb.org/t/p/w342/nDjg1fbNyq15excNDl3acd2IqAk.jpg",
+ "releaseDate": "1939-10-19",
+ "title": "Mr. Smith Goes to Washington",
+ "type": "file",
+ "voteAverage": 7.9
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 13393,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ci8NMpK3HvuySQRGPMAPyBSlL7f.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1Pr1HKY0AtHXtQkyngCmO9oP9LHs3eT82",
+ "language": "tr",
+ "mimeType": "video/mp4",
+ "name": "My.Father.And.My.Son.2005.1080p.WEBRip.x264-[YTS.AM].mp4",
+ "overview": "A left-wing journalist whose wife died while giving birth to his son during a military coup returns to his family's farm. Estranged from his father for turning his back on the family and wasting his life with political activism instead, he tries to reconnect with him so that his son will have a place to live as his health is deteriorating due to the extensive torture he had to endure.",
+ "parents": [
+ "1rt2sU0jp2zy0JbQ33Ofv8zva3NxoJFFa"
+ ],
+ "popularity": 10.045,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dcKY23xowYTU9B1cagUdHQwsxOB.jpg",
+ "releaseDate": "2005-11-18",
+ "title": "My Father and My Son",
+ "type": "file",
+ "voteAverage": 7.6
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 8392,
+ "backdropPath": "https://image.tmdb.org/t/p/original/fxYazFVeOCHpHwuqGuiqcCTw162.jpg",
+ "genres": [
+ "Fantasy",
+ "Animation",
+ "Family"
+ ],
+ "id": "1O0aKaZR6ImYDCwYIrB8-XngS-JyGIBQL",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "My.Neighbor.Totoro.1988.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "Two sisters move to the country with their father in order to be closer to their hospitalized mother, and discover the surrounding trees are inhabited by Totoros, magical spirits of the forest. When the youngest runs away from home, the older sister seeks help from the spirits to find her.",
+ "parents": [
+ "1sg1npRg9UVgOu-BovY3zcwwtALNOBiiw"
+ ],
+ "popularity": 70.176,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rtGDOeG9LzoerkDGZF9dnVeLppL.jpg",
+ "releaseDate": "1988-04-16",
+ "title": "My Neighbor Totoro",
+ "type": "file",
+ "voteAverage": 8.1
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 10774,
+ "backdropPath": "https://image.tmdb.org/t/p/original/bODIl4B857k20AhrHylKzpLprk4.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1F3e9Ai7u1hhQKe9mXGSWBQLnlsIv8-Xo",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Network.1976.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "When veteran anchorman Howard Beale is forced to retire his 25-year post because of his age, he announces to viewers that he will kill himself during his farewell broadcast. Network executives rethink their decision when his fanatical tirade results in a spike in ratings.",
+ "parents": [
+ "1IzPu9LAFLP4TiN8gCRTb4X7j9el3GRWz"
+ ],
+ "popularity": 25.775,
+ "posterPath": "https://image.tmdb.org/t/p/w342/qZomlHsaALUtkFeMDwdYmwS2Pbo.jpg",
+ "releaseDate": "1976-11-14",
+ "title": "Network",
+ "type": "file",
+ "voteAverage": 7.818
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 6977,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kd9jFTTabg4xJpHDgxY0h8F9BzG.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "18JrDhWD-DPeJz3qYM718hKQpXcL_4xHS",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "No.Country.For.Old.Men.2007.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Llewelyn Moss stumbles upon dead bodies, $2 million and a hoard of heroin in a Texas desert, but methodical killer Anton Chigurh comes looking for it, with local sheriff Ed Tom Bell hot on his trail. The roles of prey and predator blur as the violent pursuit of money and justice collide.",
+ "parents": [
+ "1zLkHM-gN9EQiweCPimts8aRKj3ctYHSL"
+ ],
+ "popularity": 58.631,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bj1v6YKF8yHqA489VFfnQvOJpnc.jpg",
+ "releaseDate": "2007-06-13",
+ "title": "No Country for Old Men",
+ "type": "file",
+ "voteAverage": 7.938
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 213,
+ "backdropPath": "https://image.tmdb.org/t/p/original/OR8oloCZ3klJtB7Y0i8pSqWw5a.jpg",
+ "genres": [
+ "Mystery",
+ "Thriller",
+ "Adventure"
+ ],
+ "id": "1TyQXIH3-31fLep2Nyx5O0Mr6jscBsn3c",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "North.By.Northwest.1959.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Advertising man Roger Thornhill is mistaken for a spy, triggering a deadly cross-country chase.",
+ "parents": [
+ "1E7P67V_G_rrcIJNHwGbWERuuTtX92xML"
+ ],
+ "popularity": 131.992,
+ "posterPath": "https://image.tmdb.org/t/p/w342/lStZVLHQmn7MSWx0OcI0tfaGwsI.jpg",
+ "releaseDate": "1959-07-08",
+ "title": "North by Northwest",
+ "type": "file",
+ "voteAverage": 7.985
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 670,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sdwjQEM869JFwMytTmvr6ggvaUl.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Mystery",
+ "Action"
+ ],
+ "id": "15p8t5NyPZAddRdZnYpSma5Z3Z4wnRmfO",
+ "language": "ko",
+ "mimeType": "video/mp4",
+ "name": "Oldboy.2003.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "With no clue how he came to be imprisoned, drugged and tortured for 15 years, a desperate man seeks revenge on his captors.",
+ "parents": [
+ "1_YGPefURT5QZpYHzSTAgGKzhohD8Fd20"
+ ],
+ "popularity": 51.139,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pWDtjs568ZfOTMbURQBYuT4Qxka.jpg",
+ "releaseDate": "2003-11-21",
+ "title": "Oldboy",
+ "type": "file",
+ "voteAverage": 8.256
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 654,
+ "backdropPath": "https://image.tmdb.org/t/p/original/pxkQAIhC7LXN5s5B23lnvCMgva5.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Romance"
+ ],
+ "id": "1QSahWtqU2JFFWfi_KK9UBkOmmnYvkbf2",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "On.The.Waterfront.1954.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A dim-witted yet kind-hearted boxer, Terry Malloy, who failed to succeed unintentionally lures a man to his death after being tricked by a criminal called Johnny Friendly whose men pick of every man who has the courage to speak up to their crimes. As he works on the waterfronts that Friendly owns, he is sent to a church meeting run by a good preacher about how to deal with the problem and runs into the dead man\u2019s sister. Slowly, he falls in love with her and begins to feel guilt about his crime.",
+ "parents": [
+ "1b904h4ba-O_6mmmuyXHnA5tRTzu4gVPb"
+ ],
+ "popularity": 18.914,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fKjLZy9W8VxMOp5OoyWojmLVCQw.jpg",
+ "releaseDate": "1954-06-22",
+ "title": "On the Waterfront",
+ "type": "file",
+ "voteAverage": 7.929
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 311,
+ "backdropPath": "https://image.tmdb.org/t/p/original/uPYa165sraN2c8gZBM9C47g3JoU.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1jxIDYCn876Ap7fgWyhNP9RkoWUYdBp0n",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Once.Upon.A.Time.In.America.1984.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A former Prohibition-era Jewish gangster returns to the Lower East Side of Manhattan over thirty years later, where he once again must confront the ghosts and regrets of his old life.",
+ "parents": [
+ "1H1dVoylmjjPhlT19fg4GDIOIk6Gzl4YT"
+ ],
+ "popularity": 47.756,
+ "posterPath": "https://image.tmdb.org/t/p/w342/i0enkzsL5dPeneWnjl1fCWm6L7k.jpg",
+ "releaseDate": "1984-05-23",
+ "title": "Once Upon a Time in America",
+ "type": "file",
+ "voteAverage": 8.423
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 335,
+ "backdropPath": "https://image.tmdb.org/t/p/original/26SUDI2iKhZTIKcU4ZzezTH1G15.jpg",
+ "genres": [
+ "Drama",
+ "Western"
+ ],
+ "id": "1CmRClD8njG3vt9Tb45q-TcfGT95FbNb8",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "Once.Upon.a.Time.in.the.West.1968.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "As the railroad builders advance unstoppably through the Arizona desert on their way to the sea, Jill arrives in the small town of Flagstone with the intention of starting a new life.",
+ "parents": [
+ "1WamfvE9NiZkRO8PSQn_oOwtfuw3hztvL"
+ ],
+ "popularity": 57.845,
+ "posterPath": "https://image.tmdb.org/t/p/w342/qbYgqOczabWNn2XKwgMtVrntD6P.jpg",
+ "releaseDate": "1968-12-21",
+ "title": "Once Upon a Time in the West",
+ "type": "file",
+ "voteAverage": 8.288
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1fOJUIqH9svsqo9QEOCUkoCvS5VFq6bi-",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "One.Flew.Over.The.Cuckoo's.Nest.1080p.BrRip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1D_HhZg5DjcfRKCQbh9RqTmAbXTilFHga"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "1080-01-01",
+ "title": "One Flew Over The Cuckoo's Nest",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 872585,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nb3xI8XI3w4pMVZ38VijbsyBqP4.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1oZrSxKlGwVBOlgQnBaVvNL91BzGiHsLi",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Oppenheimer.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The story of J. Robert Oppenheimer's role in the development of the atomic bomb during World War II.",
+ "parents": [
+ "1gOYEyFojH54KvY8ANp6e8F3fjnpA1Zs1"
+ ],
+ "popularity": 528.011,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8Gxv8gSFCU0XGDykEGv7zR1n2ua.jpg",
+ "releaseDate": "2023-07-19",
+ "title": "Oppenheimer",
+ "type": "file",
+ "voteAverage": 8.096
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1417,
+ "backdropPath": "https://image.tmdb.org/t/p/original/o0IWa75BXyXryNDVqw0xoXZzy1J.jpg",
+ "genres": [
+ "Fantasy",
+ "Drama",
+ "War"
+ ],
+ "id": "1AAbKlfHJmFabuZRGHjxd9JAIbpSOohXM",
+ "language": "es",
+ "mimeType": "video/mp4",
+ "name": "Pan's.Labyrinth.2006.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Living with her tyrannical stepfather in a new home with her pregnant mother, 10-year-old Ofelia feels alone until she explores a decaying labyrinth guarded by a mysterious faun who claims to know her destiny. If she wishes to return to her real father, Ofelia must complete three terrifying tasks.",
+ "parents": [
+ "1RKF7-672kPwpL0lNI6k3YKPUcdDhMbCJ"
+ ],
+ "popularity": 134.333,
+ "posterPath": "https://image.tmdb.org/t/p/w342/s8C4whhKtDaJvMDcyiMvx3BIF5F.jpg",
+ "releaseDate": "2006-10-10",
+ "title": "Pan's Labyrinth",
+ "type": "file",
+ "voteAverage": 7.757
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 496243,
+ "backdropPath": "https://image.tmdb.org/t/p/original/TU9NIjwzjoKPwQHoHshkFcQUCG.jpg",
+ "genres": [
+ "Comedy",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1GDVL3FbRgdPBSsvdOgP9f1jhWDFrniVg",
+ "language": "ko",
+ "mimeType": "video/mp4",
+ "name": "Parasite.2019.1080p.BluRay.x264-[YTS.LT].mp4",
+ "overview": "All unemployed, Ki-taek's family takes peculiar interest in the wealthy and glamorous Parks for their livelihood until they get entangled in an unexpected incident.",
+ "parents": [
+ "1DhuuAfyCK0Ws4ArvhIb_aM9MgwvTPsqw"
+ ],
+ "popularity": 75.004,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7IiTTgloJzvGI1TAYymCfbfl3vT.jpg",
+ "releaseDate": "2019-05-30",
+ "title": "Parasite",
+ "type": "file",
+ "voteAverage": 8.51
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 975,
+ "backdropPath": "https://image.tmdb.org/t/p/original/354kfjVb96mtFALMhBE6jzHGiA2.jpg",
+ "genres": [
+ "War",
+ "Drama",
+ "History"
+ ],
+ "id": "1ZAGuPqG120QbuwjFHTpig5SnRJOUneFV",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Paths.Of.Glory.1957.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A commanding officer defends three scapegoats on trial for a failed offensive that occurred within the French Army in 1916.",
+ "parents": [
+ "1lfHB3HlmaKggOfaDOzCDi9JxlNzuX67g"
+ ],
+ "popularity": 21.674,
+ "posterPath": "https://image.tmdb.org/t/p/w342/3O10X1bVSasrS2NQ186s2tlKvqN.jpg",
+ "releaseDate": "1957-10-25",
+ "title": "Paths of Glory",
+ "type": "file",
+ "voteAverage": 8.27
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 22,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wW7Wt5bXzPy4VOEE4LTIUDyDgBo.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Action"
+ ],
+ "id": "1Yj-3xl1zQq0vROj_s8fZuwiTVV-Zt26i",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Pirates.of.the.Caribbean.Curse.of.the.Black.Pearl.2003.1080p.BrRip.x264.Deceit.YIFY.mp4",
+ "overview": "Jack Sparrow, a freewheeling 18th-century pirate, quarrels with a rival pirate bent on pillaging Port Royal. When the governor's daughter is kidnapped, Sparrow decides to help the girl's love save her.",
+ "parents": [
+ "1NQ8saqTIRpVW9LvXCUwNm_ukjsfgd9LY"
+ ],
+ "popularity": 120.695,
+ "posterPath": "https://image.tmdb.org/t/p/w342/poHwCZeWzJCShH7tOjg8RIoyjcw.jpg",
+ "releaseDate": "2003-07-09",
+ "title": "Pirates of the Caribbean: The Curse of the Black Pearl",
+ "type": "file",
+ "voteAverage": 7.801
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 792,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wjt1dwtabVm9vujAteDTnXnpHfZ.jpg",
+ "genres": [
+ "Drama",
+ "War",
+ "Action"
+ ],
+ "id": "1mdrduYL1skcUJ0nQb8tcPdtM8Hw55-EP",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Platoon.1986.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "As a young and naive recruit in Vietnam, Chris Taylor faces a moral crisis when confronted with the horrors of war and the duality of man.",
+ "parents": [
+ "1mppmbBawszKk7BedW0CG7HDrJmtVkpVd"
+ ],
+ "popularity": 174.012,
+ "posterPath": "https://image.tmdb.org/t/p/w342/m3mmFkPQKvPZq5exmh0bDuXlD9T.jpg",
+ "releaseDate": "1986-12-19",
+ "title": "Platoon",
+ "type": "file",
+ "voteAverage": 7.746
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 128,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gl0jzn4BupSbL2qMVeqrjKkF9Js.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Animation"
+ ],
+ "id": "1KTDRBN7m_pXlCrgqFxTcHL4sJKAzGuNN",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Princess.Mononoke.1997.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Ashitaka, a prince of the disappearing Emishi people, is cursed by a demonized boar god and must journey to the west to find a cure. Along the way, he encounters San, a young human woman fighting to protect the forest, and Lady Eboshi, who is trying to destroy it. Ashitaka must find a way to bring balance to this conflict.",
+ "parents": [
+ "1r044VgiksP5VyS-ESYcu0KOpEHu7HwfK"
+ ],
+ "popularity": 46.505,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cMYCDADoLKLbB83g4WnJegaZimC.jpg",
+ "releaseDate": "1997-07-12",
+ "title": "Princess Mononoke",
+ "type": "file",
+ "voteAverage": 8.339
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 146233,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3RFmTz5h2UuFWEV4oH00XICBR9y.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1x-X-4z7qBx69NDbcbQGv9ew0PydNpcIH",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Prisoners.2013.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Keller Dover is facing a parent\u2019s worst nightmare: his young daughter and her friend have gone missing. Heading the investigation, Detective Loki arrests the only suspect \u2013 the driver of an RV on which the girls had been playing \u2013 but a lack of evidence forces his release. As pressure mounts, Loki\u2019s team pursues multiple leads while a frantic Dover decides he has no choice but to take matters into his own hands.",
+ "parents": [
+ "19byQc7IKPjmZzsKarK3cOTgzBM0Iw1j8"
+ ],
+ "popularity": 70.424,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uhviyknTT5cEQXbn6vWIqfM4vGm.jpg",
+ "releaseDate": "2013-09-19",
+ "title": "Prisoners",
+ "type": "file",
+ "voteAverage": 8.096
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 539,
+ "backdropPath": "https://image.tmdb.org/t/p/original/uif5fUshJrXyyDzfpzp1DLw3N0S.jpg",
+ "genres": [
+ "Horror",
+ "Thriller",
+ "Mystery"
+ ],
+ "id": "1FMEH8Xd2r1ruKIZ4wWecEvfQnNsAOBmC",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Psycho.1960.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "When larcenous real estate clerk Marion Crane goes on the lam with a wad of cash and hopes of starting a new life, she ends up at the notorious Bates Motel, where manager Norman Bates cares for his housebound mother.",
+ "parents": [
+ "1yHZcS7M9TywVuYDJsO_fHJ_j_slEsH7_"
+ ],
+ "popularity": 151.577,
+ "posterPath": "https://image.tmdb.org/t/p/w342/yz4QVqPx3h1hD1DfqqQkCq3rmxW.jpg",
+ "releaseDate": "1960-06-22",
+ "title": "Psycho",
+ "type": "file",
+ "voteAverage": 8.434
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 680,
+ "backdropPath": "https://image.tmdb.org/t/p/original/suaEOtk1N1sgg2MTM7oZd2cfVp3.jpg",
+ "genres": [
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1uICTYI8BUN5BcCh-UE1shmJ35F6BGNED",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Pulp.Fiction.1994.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "A burger-loving hit man, his philosophical partner, a drug-addled gangster's moll and a washed-up boxer converge in this sprawling, comedic crime caper. Their adventures unfurl in three stories that ingeniously trip back and forth in time.",
+ "parents": [
+ "1DxgixjnM1rQXMevHWrTygd1vFS_kKxCu"
+ ],
+ "popularity": 354.718,
+ "posterPath": "https://image.tmdb.org/t/p/w342/d5iIlFn5s0ImszYzBPb8JPIfbXD.jpg",
+ "releaseDate": "1994-09-10",
+ "title": "Pulp Fiction",
+ "type": "file",
+ "voteAverage": 8.489
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1578,
+ "backdropPath": "https://image.tmdb.org/t/p/original/aAStHDJgD97k4g4Zf0NLqbAmrvZ.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1_zf-mK2H12sfLr-zg2yroG4plAMowjvQ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Raging.Bull.1980.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "The life of boxer Jake LaMotta, whose violence and temper that led him to the top in the ring destroyed his life outside of it.",
+ "parents": [
+ "18Ea7OUsU6dAAzI3ialVT5t8cNKZgvulO"
+ ],
+ "popularity": 54.814,
+ "posterPath": "https://image.tmdb.org/t/p/w342/d7Okds2lx0MwwwDdtEAjFdrnJZS.jpg",
+ "releaseDate": "1980-11-14",
+ "title": "Raging Bull",
+ "type": "file",
+ "voteAverage": 7.938
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11645,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8wdxa4JgiAXvITgqkra1W0Dpii5.jpg",
+ "genres": [
+ "Action",
+ "Drama",
+ "History"
+ ],
+ "id": "1XKzfrdhZRy9VoLJgoTu62wpkk5fiwW9A",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Ran.1985.REMASTERED.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "With Ran, legendary director Akira Kurosawa reimagines Shakespeare's King Lear as a singular historical epic set in sixteenth-century Japan. Majestic in scope, the film is Kurosawa's late-life masterpiece, a profound examination of the folly of war and the crumbling of one family under the weight of betrayal, greed, and the insatiable thirst for power.",
+ "parents": [
+ "1wDGVmnt20pB_UXMkw649BgKLXOTRIBX2"
+ ],
+ "popularity": 20.349,
+ "posterPath": "https://image.tmdb.org/t/p/w342/jQnUtWaHYfqnXPOIf77K7Ycqk4M.jpg",
+ "releaseDate": "1985-06-01",
+ "title": "Ran",
+ "type": "file",
+ "voteAverage": 8.074
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 548,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zyO6j74DKMWfp5snWg6Hwo0T3Mz.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Mystery"
+ ],
+ "id": "1SwC12GcMEEu9OIC79aBSxUuC47PX5KF0",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Rashomon.1950.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Brimming with action while incisively examining the nature of truth, \"Rashomon\" is perhaps the finest film ever to investigate the philosophy of justice. Through an ingenious use of camera and flashbacks, Kurosawa reveals the complexities of human nature as four people recount different versions of the story of a man's murder and the rape of his wife.",
+ "parents": [
+ "1sVkhkkoS9DM_l9lpK8_o_dR5gCBpM4C5"
+ ],
+ "popularity": 17.2,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vL7Xw04nFMHwnvXRFCmYYAzMUvY.jpg",
+ "releaseDate": "1950-08-26",
+ "title": "Rashomon",
+ "type": "file",
+ "voteAverage": 8.1
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 2062,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xgDj56UWyeWQcxQ44f5A3RTWuSs.jpg",
+ "genres": [
+ "Animation",
+ "Comedy",
+ "Family",
+ "Fantasy"
+ ],
+ "id": "1Q5iRP01wKGv2VgK9XFdMU7tdqNwBXEzb",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Ratatouille.2007.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Remy, a resident of Paris, appreciates good food and has quite a sophisticated palate. He would love to become a chef so he can create and enjoy culinary masterpieces to his heart's delight. The only problem is, Remy is a rat. When he winds up in the sewer beneath one of Paris' finest restaurants, the rodent gourmet finds himself ideally placed to realize his dream.",
+ "parents": [
+ "182deg8KYu07q0uWfBa39HdcgEeQgHP1B"
+ ],
+ "popularity": 96.432,
+ "posterPath": "https://image.tmdb.org/t/p/w342/t3vaWRPSf6WjDSamIkKDs1iQWna.jpg",
+ "releaseDate": "2007-06-21",
+ "title": "Ratatouille",
+ "type": "file",
+ "voteAverage": 7.82
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 567,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8aEe01VfGtYG2dFy9V5MqyyNPlh.jpg",
+ "genres": [
+ "Thriller",
+ "Mystery"
+ ],
+ "id": "1Vo1kOCfKiiOrCSmjJedI7YsIFD8FAIXf",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Rear.Window.1954.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A wheelchair-bound photographer spies on his neighbors from his apartment window and becomes convinced one of them has committed murder.",
+ "parents": [
+ "13UuglOBTn0o1DYJhhpbI-YjrI6frUv3x"
+ ],
+ "popularity": 50.086,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ILVF0eJxHMddjxeQhswFtpMtqx.jpg",
+ "releaseDate": "1954-08-01",
+ "title": "Rear Window",
+ "type": "file",
+ "voteAverage": 8.351
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 223,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jKgLVAhoq4fXBs1C9Gjvap93fxd.jpg",
+ "genres": [
+ "Mystery",
+ "Romance",
+ "Thriller"
+ ],
+ "id": "1205cp2YMZFz29eTnC956GawJAb9HYO4S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Rebecca.1940.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Story of a young woman who marries a fascinating widower only to find out that she must live in the shadow of his former wife, Rebecca, who died mysteriously several years earlier. The young wife must come to grips with the terrible secret of her handsome, cold husband, Max De Winter. She must also deal with the jealous, obsessed Mrs. Danvers, the housekeeper, who will not accept her as the mistress of the house.",
+ "parents": [
+ "1UepoVcTkNuDkp7Nr1rPX-F4ZIob9_TGN"
+ ],
+ "popularity": 27.624,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1qz3qUOHnVy7dL7M7G8jSErxE4b.jpg",
+ "releaseDate": "1940-03-23",
+ "title": "Rebecca",
+ "type": "file",
+ "voteAverage": 7.92
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1-qmbMqVQeUNQbUOolZBbUr-DOm98iNFL",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Requiem.For.A.Dream.DIRECTORS.CUT.2000.1080p.BrRip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1Dre_T4SLjxvHXtkgplV-G361XGwCXFv2"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "2000-01-01",
+ "title": "Requiem For A Dream DIRECTORS CUT",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 500,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jqFjgNnxpXIXWuPsyfqmcLXRo9p.jpg",
+ "genres": [
+ "Crime",
+ "Thriller"
+ ],
+ "id": "1DgUKDzYJpOFUm8v2yTMGsOT8CgOMx67l",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Reservoir Dogs.1992.BluRay.1080p.x264.YIFY.mp4",
+ "overview": "A botched robbery indicates a police informant, and the pressure mounts in the aftermath at a warehouse. Crime begets violence as the survivors -- veteran Mr. White, newcomer Mr. Orange, psychopathic parolee Mr. Blonde, bickering weasel Mr. Pink and Nice Guy Eddie -- unravel.",
+ "parents": [
+ "15mLam_wQkStJUjzYO1SkFAfBQvDZO9sb"
+ ],
+ "popularity": 72.398,
+ "posterPath": "https://image.tmdb.org/t/p/w342/xi8Iu6qyTfyZVDVy60raIOYJJmk.jpg",
+ "releaseDate": "1992-09-02",
+ "title": "Reservoir Dogs",
+ "type": "file",
+ "voteAverage": 8.128
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1366,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kK9v1wclQxug6ZUJucD4DTaHgVF.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1iUFE-eu_4dO4IYDucYJxE0P-v5v0BN1b",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Rocky.1976.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "An uneducated collector for a Philadelphia loan shark is given a once-in-a-lifetime opportunity to fight against the world heavyweight boxing champion.",
+ "parents": [
+ "1YOpU4QAWjsOInrJILB7rNmCX3RqKOV7R"
+ ],
+ "popularity": 364.645,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cqxg1CihGR5ge0i1wYXr4Rdeppu.jpg",
+ "releaseDate": "1976-11-20",
+ "title": "Rocky",
+ "type": "file",
+ "voteAverage": 7.789
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 264644,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8J26Cw50hW11dBJSKycQayOa2RZ.jpg",
+ "genres": [
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1n3meBZ8kCtqvGEzuDrbfiiDja0Y1xCWA",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Room.2015.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Held captive for 7 years in an enclosed space, a woman and her young son finally gain their freedom, allowing the boy to experience the outside world for the first time.",
+ "parents": [
+ "1Trvyi8tP0HFiKptOqxfhCzsluY98x7Ny"
+ ],
+ "popularity": 29.366,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dIxoYFcj6EqD5KScuU8lWCftnvH.jpg",
+ "releaseDate": "2015-10-16",
+ "title": "Room",
+ "type": "file",
+ "voteAverage": 8.024
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 96721,
+ "backdropPath": "https://image.tmdb.org/t/p/original/caKZWDGmv5iW2U99skHs75MmOmU.jpg",
+ "genres": [
+ "Drama",
+ "Action"
+ ],
+ "id": "1w-5As82nW8ZgyfUPu1Rnh_m1nQ0awXpb",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Rush.2013.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "In the 1970s, a rivalry propels race car drivers Niki Lauda and James Hunt to fame and glory \u2014 until a horrible accident threatens to end it all.",
+ "parents": [
+ "1_iFWDwJjm9iNXQtNAAfwUVVZGf6nxNSn"
+ ],
+ "popularity": 41.699,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5akKFgS7eeXUw9rKTEujryKrH17.jpg",
+ "releaseDate": "2013-09-02",
+ "title": "Rush",
+ "type": "file",
+ "voteAverage": 7.722
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 857,
+ "backdropPath": "https://image.tmdb.org/t/p/original/rW2xRFlJRbTnBJlQTSjQmjevIwb.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1jnlp_sKcEbO9fSalaZj1KBb9I87QRGOp",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Saving.Private.Ryan.1998.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "As U.S. troops storm the beaches of Normandy, three brothers lie dead on the battlefield, with a fourth trapped behind enemy lines. Ranger captain John Miller and seven men are tasked with penetrating German-held territory and bringing the boy home.",
+ "parents": [
+ "1QwZqx515AC-1guR5rBOUVjTPCk1SDYlt"
+ ],
+ "popularity": 117.929,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uqx37cS8cpHg8U35f9U5IBlrCV3.jpg",
+ "releaseDate": "1998-07-24",
+ "title": "Saving Private Ryan",
+ "type": "file",
+ "voteAverage": 8.215
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 111,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sctvs9cUwJD15qlTlrsh2BXsK75.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Drama"
+ ],
+ "id": "1kuOzWwB6Pm2AnQwtiQVMb8EVanN-_IV6",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Scarface.1983.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "After getting a green card in exchange for assassinating a Cuban government official, Tony Montana stakes a claim on the drug trade in Miami. Viciously murdering anyone who stands in his way, Tony eventually becomes the biggest drug lord in the state, controlling nearly all the cocaine that comes through Miami. But increased pressure from the police, wars with Colombian drug cartels and his own drug-fueled paranoia serve to fuel the flames of his eventual downfall.",
+ "parents": [
+ "1k9TfYU65uMZtLPJIKzABeP-AVeqPr5ku"
+ ],
+ "popularity": 273.14,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iQ5ztdjvteGeboxtmRdXEChJOHh.jpg",
+ "releaseDate": "1983-12-09",
+ "title": "Scarface",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 424,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zb6fM1CX41D9rF9hdgclu0peUmy.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1Xd9xBGpgcpGbN8MY4_gcEUbnNfcX1_wM",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Schindlers.List.1993.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "The true story of how businessman Oskar Schindler saved over a thousand Jewish lives from the Nazis while they worked as slaves in his factory during World War II.",
+ "parents": [
+ "1kTGwFcACvLpQVwCy-U_xIwzqkO8NCIJO"
+ ],
+ "popularity": 69.043,
+ "posterPath": "https://image.tmdb.org/t/p/w342/sF1U4EUQS8YHUYjNl3pMGNIQyr0.jpg",
+ "releaseDate": "1993-12-15",
+ "title": "Schindler's List",
+ "type": "file",
+ "voteAverage": 8.567
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1VNDYgRItM4E6bPfrC8L-P-hzRIhyoTyH",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Se7en(1995)1080p.BrRip.x264.YIFY.mp4",
+ "overview": null,
+ "parents": [
+ "1LY4jqLve87ShWgUkjTaox8d9XzrSTbeU"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "1900-01-01",
+ "title": "Se7en(1995)1080p.BrRip.x264.YIFY",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 346,
+ "backdropPath": "https://image.tmdb.org/t/p/original/qvZ91FwMq6O47VViAr8vZNQz3WI.jpg",
+ "genres": [
+ "Action",
+ "Drama"
+ ],
+ "id": "1_7HFLukiyvsptGw-S-3vuOt7SHQNT3DG",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Seven.Samurai.1954.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A samurai answers a village's request for protection after he falls on hard times. The town needs protection from bandits, so the samurai gathers six others to help him teach the people how to defend themselves, and the villagers provide the soldiers with food.",
+ "parents": [
+ "1OLBwBZs0TFBcc_w6xfrwpG74Qkp00mjY"
+ ],
+ "popularity": 45.555,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8OKmBV5BUFzmozIC3pPWKHy17kx.jpg",
+ "releaseDate": "1954-04-26",
+ "title": "Seven Samurai",
+ "type": "file",
+ "voteAverage": 8.456
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 992,
+ "backdropPath": "https://image.tmdb.org/t/p/original/dRKCNvOjXkRTIA3D3KAve7GRu4k.jpg",
+ "genres": [
+ "Action",
+ "Comedy",
+ "Mystery"
+ ],
+ "id": "1jAJrOaWSiAugjGQjvIyRuseX2OH7MjNG",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Sherlock.Jr..1924.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A film projectionist longs to be a detective, and puts his meagre skills to work when he is framed by a rival for stealing his girlfriend's father's pocketwatch.",
+ "parents": [
+ "1PRoJW8yXio2TgX8DwuwmWfCs-cTUJAvj"
+ ],
+ "popularity": 17.863,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1G9r3rqtbFAQuyWKOZm4Y5J5s7Q.jpg",
+ "releaseDate": "1924-04-17",
+ "title": "Sherlock Jr.",
+ "type": "file",
+ "voteAverage": 8.074
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11324,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ecvy2kMxsJ60ej52beZ0F8EOGkL.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Mystery"
+ ],
+ "id": "1UuACpbK-ntATOBlcjYH3q4ZRLNGJ5m1_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Shutter.Island.2010.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "World War II soldier-turned-U.S. Marshal Teddy Daniels investigates the disappearance of a patient from a hospital for the criminally insane, but his efforts are compromised by troubling visions and a mysterious doctor.",
+ "parents": [
+ "16kP6oLPHLI3gPSlXmhJik4HGR8KaKPeN"
+ ],
+ "popularity": 82.359,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4GDy0PHYX3VRXUtwK5ysFbg3kEx.jpg",
+ "releaseDate": "2010-02-14",
+ "title": "Shutter Island",
+ "type": "file",
+ "voteAverage": 8.203
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 872,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mxf8hJJkHTCqZP3m4o8E1TtwHHs.jpg",
+ "genres": [
+ "Comedy",
+ "Romance"
+ ],
+ "id": "1ZoIAglB1YwwqS_F6avST-4RyfAix28XY",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Singin'.In.The.Rain.1952.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "In 1927 Hollywood, a silent film production company and cast make a difficult transition to sound.",
+ "parents": [
+ "11CNHehN1gRvrjc5sfQP6yla8pqQoROwL"
+ ],
+ "popularity": 35.803,
+ "posterPath": "https://image.tmdb.org/t/p/w342/w03EiJVHP8Un77boQeE7hg9DVdU.jpg",
+ "releaseDate": "1952-04-09",
+ "title": "Singin' in the Rain",
+ "type": "file",
+ "voteAverage": 8.16
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 107,
+ "backdropPath": "https://image.tmdb.org/t/p/original/oamoFZS2ok4JCIgsWu5lOC6rAr4.jpg",
+ "genres": [
+ "Crime",
+ "Comedy"
+ ],
+ "id": "13Sb315LLHwa8kGwy1acvKKqoJqmY9REY",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Snatch.2000.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Unscrupulous boxing promoters, violent bookmakers, a Russian gangster, incompetent amateur robbers and supposedly Jewish jewelers fight to track down a priceless stolen diamond.",
+ "parents": [
+ "1Gdt0joUuHugFR3F2qYPbytEe8lE1untd"
+ ],
+ "popularity": 82.066,
+ "posterPath": "https://image.tmdb.org/t/p/w342/56mOJth6DJ6JhgoE2jtpilVqJO.jpg",
+ "releaseDate": "2000-09-01",
+ "title": "Snatch",
+ "type": "file",
+ "voteAverage": 7.811
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 239,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5zTwAcnI3zCJ0mucPPnoBtkSWEV.jpg",
+ "genres": [
+ "Comedy",
+ "Romance",
+ "Crime"
+ ],
+ "id": "1rjya8olZF31Ekl5lstQyIJtOhvGjdLfs",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Some.Like.It.Hot.1959.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Two musicians witness a mob hit and struggle to find a way out of the city before they are found by the gangsters. Their only opportunity is to join an all-girl band as they leave on a tour. To make their getaway they must first disguise themselves as women, then keep their identities secret and deal with the problems this brings - such as an attractive bandmate and a very determined suitor.",
+ "parents": [
+ "144eabiwfJxxNVxw-TmPiGCzkU1MwgWCs"
+ ],
+ "popularity": 36.657,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hVIKyTK13AvOGv7ICmJjK44DTzp.jpg",
+ "releaseDate": "1959-03-19",
+ "title": "Some Like It Hot",
+ "type": "file",
+ "voteAverage": 8.099
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 569094,
+ "backdropPath": "https://image.tmdb.org/t/p/original/4HodYYKEIsGOdinkGi2Ucz6X9i0.jpg",
+ "genres": [
+ "Animation",
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1W2fi52OQB2TgvDDGeTG-eZAMtyY09Sy-",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Spider-Man.Across.The.Spider-Verse.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After reuniting with Gwen Stacy, Brooklyn\u2019s full-time, friendly neighborhood Spider-Man is catapulted across the Multiverse, where he encounters the Spider Society, a team of Spider-People charged with protecting the Multiverse\u2019s very existence. But when the heroes clash on how to handle a new threat, Miles finds himself pitted against the other Spiders and must set out on his own to save those he loves most.",
+ "parents": [
+ "1dx4DO9qXlgd1UkxHeVixMfjMvHzVuIIT"
+ ],
+ "popularity": 184.071,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8Vt6mWEReuy4Of61Lnj5Xj704m8.jpg",
+ "releaseDate": "2023-05-31",
+ "title": "Spider-Man: Across the Spider-Verse",
+ "type": "file",
+ "voteAverage": 8.363
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 324857,
+ "backdropPath": "https://image.tmdb.org/t/p/original/b9YkKJcW3pPaXgMZu9uoT7v9yRB.jpg",
+ "genres": [
+ "Animation",
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1SmecEn1XWIItziVHcxkN-qN4BQlRvktd",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Spider-Man.Into.The.Spider-Verse.2018.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Struggling to find his place in the world while juggling school and family, Brooklyn teenager Miles Morales is unexpectedly bitten by a radioactive spider and develops unfathomable powers just like the one and only Spider-Man. While wrestling with the implications of his new abilities, Miles discovers a super collider created by the madman Wilson \"Kingpin\" Fisk, causing others from across the Spider-Verse to be inadvertently transported to his dimension.",
+ "parents": [
+ "1x3prjCEcZEPw6vzKAGs6UE3I7oa9rFDS"
+ ],
+ "popularity": 93.183,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iiZZdoQBEYBv6id8su7ImL0oCbD.jpg",
+ "releaseDate": "2018-12-06",
+ "title": "Spider-Man: Into the Spider-Verse",
+ "type": "file",
+ "voteAverage": 8.404
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 634649,
+ "backdropPath": "https://image.tmdb.org/t/p/original/14QbnygCuTO0vl7CAFmPf1fgZfV.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1704b7DJgHzgxEz8aYWDlYAaccFixOu6l",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Spider-Man.No.Way.Home.2021.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Peter Parker is unmasked and no longer able to separate his normal life from the high-stakes of being a super-hero. When he asks for help from Doctor Strange the stakes become even more dangerous, forcing him to discover what it truly means to be Spider-Man.",
+ "parents": [
+ "1AdqFJg_X8FnOIisBnTd2NI59UvD6Ta4H"
+ ],
+ "popularity": 235.964,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1g0dhYtq4irTY1GPXvft6k4YLjm.jpg",
+ "releaseDate": "2021-12-15",
+ "title": "Spider-Man: No Way Home",
+ "type": "file",
+ "voteAverage": 7.966
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 129,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mSDsSDwaP3E7dEfUPWy4J0djt4O.jpg",
+ "genres": [
+ "Animation",
+ "Family",
+ "Fantasy"
+ ],
+ "id": "19tFeezP_zlMN77l4S2IttpRFp_y8qCPr",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Spirited.Away.2001.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A young girl, Chihiro, becomes trapped in a strange new world of spirits. When her parents undergo a mysterious transformation, she must call upon the courage she never knew she had to free her family.",
+ "parents": [
+ "1ksnjcJeWE-r0LOcOFjYm2m7PPfMdlIiX"
+ ],
+ "popularity": 95.953,
+ "posterPath": "https://image.tmdb.org/t/p/w342/39wmItIWsg5sZMyRUHLkWBcuVCM.jpg",
+ "releaseDate": "2001-07-20",
+ "title": "Spirited Away",
+ "type": "file",
+ "voteAverage": 8.537
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 314365,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8FbbcmwmpGd7brfiC7f7lWFNGdi.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1CXfeFy0AQsFQ2WXtCjeLRuQSrbwvSjy7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Spotlight.2015.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "The true story of how the Boston Globe uncovered the massive scandal of child molestation and cover-up within the local Catholic Archdiocese, shaking the entire Catholic Church to its core.",
+ "parents": [
+ "1D3B-owQ1ujPZsQU_fDouv7VhCXElIYt9"
+ ],
+ "popularity": 47.145,
+ "posterPath": "https://image.tmdb.org/t/p/w342/olYvlO7lZLpUM62w1LYnAgdd6CD.jpg",
+ "releaseDate": "2015-11-06",
+ "title": "Spotlight",
+ "type": "file",
+ "voteAverage": 7.817
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 235,
+ "backdropPath": "https://image.tmdb.org/t/p/original/yjGllQUm28R4X9xD9T5xMszirgw.jpg",
+ "genres": [
+ "Crime",
+ "Drama"
+ ],
+ "id": "1Hhko9XflmScwjL-dDcFxVpEa_4G3ao41",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Stand.by.Me.1986.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "After learning that a boy their age has been accidentally killed near their rural homes, four Oregon boys decide to go see the body. On the way, Gordie, Vern, Chris and Teddy encounter a mean junk man and a marsh full of leeches, as they also learn more about one another and their very different home lives. Just a lark at first, the boys' adventure evolves into a defining event in their lives.",
+ "parents": [
+ "1zMMd4HKIrr1Nkckt31tcLuoLBu4wjX1y"
+ ],
+ "popularity": 271.207,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vz0w9BSehcqjDcJOjRaCk7fgJe7.jpg",
+ "releaseDate": "1986-08-08",
+ "title": "Stand by Me",
+ "type": "file",
+ "voteAverage": 7.856
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11,
+ "backdropPath": "https://image.tmdb.org/t/p/original/4qCqAdHcNKeAHcK8tJ8wNJZa9cx.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "11RZEsQMC_RKQIV-K4-o-dsU7vqjg8TR8",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Star.Wars.Episode.4.A.New.Hope.1977.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Princess Leia is captured and held hostage by the evil Imperial forces in their effort to take over the galactic Empire. Venturesome Luke Skywalker and dashing captain Han Solo team together with the loveable robot duo R2-D2 and C-3PO to rescue the beautiful princess and restore peace and justice in the Empire.",
+ "parents": [
+ "1w_uVyTPgaJHbW4_4UItmFFr5tsAkpf1R"
+ ],
+ "popularity": 385.7,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6FfCtAuVAW8XJjZ7eWeLibRLWTw.jpg",
+ "releaseDate": "1977-05-25",
+ "title": "Star Wars",
+ "type": "file",
+ "voteAverage": 8.204
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1891,
+ "backdropPath": "https://image.tmdb.org/t/p/original/aJCtkxLLzkk1pECehVjKHA2lBgw.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "13-JIxDDDSrkov7-znUDciuZlCvyywxHv",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Star.Wars.Episode.5.The.Empire.Strikes.Back.1980.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "The epic saga continues as Luke Skywalker, in hopes of defeating the evil Galactic Empire, learns the ways of the Jedi from aging master Yoda. But Darth Vader is more determined than ever to capture Luke. Meanwhile, rebel leader Princess Leia, cocky Han Solo, Chewbacca, and droids C-3PO and R2-D2 are thrown into various stages of capture, betrayal and despair.",
+ "parents": [
+ "12ZkLyoC1CYzNfYMh0Ai1nh5LGWCCtY4C"
+ ],
+ "popularity": 39.355,
+ "posterPath": "https://image.tmdb.org/t/p/w342/nNAeTmF4CtdSgMDplXTDPOpYzsX.jpg",
+ "releaseDate": "1980-05-20",
+ "title": "The Empire Strikes Back",
+ "type": "file",
+ "voteAverage": 8.39
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1892,
+ "backdropPath": "https://image.tmdb.org/t/p/original/soJdiy91Mcyj29GzEgZ5svFcuZg.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "1UWmq-COg9kALparY3lbPRkRBnZLcKoIQ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Star.Wars.Episode.6.Return.of.the.Jedi.1983.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Luke Skywalker leads a mission to rescue his friend Han Solo from the clutches of Jabba the Hutt, while the Emperor seeks to destroy the Rebellion once and for all with a second dreaded Death Star.",
+ "parents": [
+ "1Js0qJz-TJ8ReTDL9EjJmCBS_TBuJSYZc"
+ ],
+ "popularity": 189.009,
+ "posterPath": "https://image.tmdb.org/t/p/w342/40HKwFzsPoukpQVYcM1bSWQWNkX.jpg",
+ "releaseDate": "1983-05-25",
+ "title": "Return of the Jedi",
+ "type": "file",
+ "voteAverage": 7.894
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 599,
+ "backdropPath": "https://image.tmdb.org/t/p/original/p47ihFj4A7EpBjmPHdTj4ipyq1S.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "101vDDW5B2pGyCVMCvGv9OipxnY7tKjqz",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Sunset.Boulevard.1950.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A hack screenwriter writes a screenplay for a former silent film star who has faded into Hollywood obscurity.",
+ "parents": [
+ "1O7Xvt9hqMsdyq28hhV9wIm-Qe37-N-H1"
+ ],
+ "popularity": 46.939,
+ "posterPath": "https://image.tmdb.org/t/p/w342/sC4Dpmn87oz9AuxZ15Lmip0Ftgr.jpg",
+ "releaseDate": "1950-08-10",
+ "title": "Sunset Boulevard",
+ "type": "file",
+ "voteAverage": 8.311
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 103,
+ "backdropPath": "https://image.tmdb.org/t/p/original/6aoyUbvu0419XLKLIMoH0TkEicH.jpg",
+ "genres": [
+ "Crime",
+ "Drama"
+ ],
+ "id": "1rsvnaD8hENK_9jj4FeSbwih98LljeUow",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Taxi.Driver.1976.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A mentally unstable Vietnam War veteran works as a night-time taxi driver in New York City where the perceived decadence and sleaze feed his urge for violent action.",
+ "parents": [
+ "1VRObyDwDUbG8ulVg7u3S3ypWbx94ubYc"
+ ],
+ "popularity": 306.81,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ekstpH614fwDX8DUln1a2Opz0N8.jpg",
+ "releaseDate": "1976-02-09",
+ "title": "Taxi Driver",
+ "type": "file",
+ "voteAverage": 8.152
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 280,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8MksSPtPvqcSDruLdpibPmTP7LY.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Science Fiction"
+ ],
+ "id": "1FLurA7Kl5Nshq8dTJe_JHZ2CppQYiyR-",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Terminator.2.1991.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Set ten years after the events of the original, James Cameron\u2019s classic sci-fi action flick tells the story of a second attempt to get the rid of rebellion leader John Connor, this time targeting the boy himself. However, the rebellion has sent a reprogrammed terminator to protect Connor.",
+ "parents": [
+ "1nzcQ8tmVclrwMy2mLpD0TEi2DdC6qHMw"
+ ],
+ "popularity": 100.441,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5M0j0B18abtBI5gi2RhfjjurTqb.jpg",
+ "releaseDate": "1991-07-03",
+ "title": "Terminator 2: Judgment Day",
+ "type": "file",
+ "voteAverage": 8.116
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 284,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1HSgkvoOyr47cSNKgDLbRYhEoMq.jpg",
+ "genres": [
+ "Comedy",
+ "Drama",
+ "Romance"
+ ],
+ "id": "1McYB1U9zmmm7RaQM48opvP-e83nVOdvM",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Apartment.1960.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Bud Baxter is a minor clerk in a huge New York insurance company, until he discovers a quick way to climb the corporate ladder. He lends out his apartment to the executives as a place to take their mistresses. Although he often has to deal with the aftermath of their visits, one night he's left with a major problem to solve.",
+ "parents": [
+ "1wKf6aNT0pRk4uzJlsZSQ_bqHvt1iTA5B"
+ ],
+ "popularity": 35.441,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hhSRt1KKfRT0yEhEtRW3qp31JFU.jpg",
+ "releaseDate": "1960-06-21",
+ "title": "The Apartment",
+ "type": "file",
+ "voteAverage": 8.205
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 17295,
+ "backdropPath": "https://image.tmdb.org/t/p/original/A5sZ1OxIH5StZgqBE9MslgsWjK6.jpg",
+ "genres": [
+ "Drama",
+ "War",
+ "History"
+ ],
+ "id": "1QjW2ygjt_Amos1ouXtYTuUzntbM9O2k8",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "The.Battle.Of.Algiers.1966.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "Tracing the struggle of the Algerian Front de Liberation Nationale to gain freedom from French colonial rule as seen through the eyes of Ali from his start as a petty thief to his rise to prominence in the organisation and capture by the French in 1957. The film traces the rebels' struggle and the increasingly extreme measures taken by the French government to quell the revolt.",
+ "parents": [
+ "1AOZlGtkdyr6lQckhcSixEft94Fg83JOh"
+ ],
+ "popularity": 11.124,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1eEN4ubAFB4N2Rl9syqPVCcwrGG.jpg",
+ "releaseDate": "1966-09-08",
+ "title": "The Battle of Algiers",
+ "type": "file",
+ "voteAverage": 7.881
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 887,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nCl5KzxUs4rVVlAdixDf4r5AbbZ.jpg",
+ "genres": [
+ "Drama",
+ "Romance",
+ "War"
+ ],
+ "id": "1gNV26Dv_O7fse5usJkoxUEoOktL3fOFc",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Best.Years.Of.Our.Lives.1946.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "It's the hope that sustains the spirit of every GI: the dream of the day when he will finally return home. For three WWII veterans, the day has arrived. But for each man, the dream is about to become a nightmare.",
+ "parents": [
+ "1fnk2lKOvK6DBS5F866tuiqPRP5m0-9EC"
+ ],
+ "popularity": 20.02,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gd5EoAU4MM57sW3vlWxJ0NMM8cV.jpg",
+ "releaseDate": "1946-12-25",
+ "title": "The Best Years of Our Lives",
+ "type": "file",
+ "voteAverage": 7.792
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 115,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nevS6wjzCxZESvmjJZqdyZ3RNQ6.jpg",
+ "genres": [
+ "Comedy",
+ "Crime"
+ ],
+ "id": "1WfhBhwL7ohfSD_l6tnDA5P_hRnuyNWty",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Big.Lebowski.1998.1080p.BrRip.x264.YIFY+HI.mp4",
+ "overview": "Jeffrey 'The Dude' Lebowski, a Los Angeles slacker who only wants to bowl and drink White Russians, is mistaken for another Jeffrey Lebowski, a wheelchair-bound millionaire, and finds himself dragged into a strange series of events involving nihilists, adult film producers, ferrets, errant toes, and large sums of money.",
+ "parents": [
+ "1LeOiPDcGqY5zDSWBVkSPgBMierfRi2-F"
+ ],
+ "popularity": 39.723,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9mprbw31MGdd66LR0AQKoDMoFRv.jpg",
+ "releaseDate": "1998-03-06",
+ "title": "The Big Lebowski",
+ "type": "file",
+ "voteAverage": 7.846
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 826,
+ "backdropPath": "https://image.tmdb.org/t/p/original/liZhDhrrNVX8IK4TaeaFodzMamy.jpg",
+ "genres": [
+ "Drama",
+ "History",
+ "War"
+ ],
+ "id": "1pbQNWuU1J3gmVqSluZxc-BuFQVGJGPwM",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Bridge.on.the.River.Kwai.1957.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "The classic story of English POWs in Burma forced to build a bridge to aid the war effort of their Japanese captors. British and American intelligence officers conspire to blow up the structure, but Col. Nicholson, the commander who supervised the bridge's construction, has acquired a sense of pride in his creation and tries to foil their plans.",
+ "parents": [
+ "1aIcHJuVBiGoffxA5Gy93KNoXIpP-OFJj"
+ ],
+ "popularity": 33.307,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7paXMt2e3Tr5dLmEZOGgFEn2Vo7.jpg",
+ "releaseDate": "1957-10-11",
+ "title": "The Bridge on the River Kwai",
+ "type": "file",
+ "voteAverage": 7.828
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 49026,
+ "backdropPath": "https://image.tmdb.org/t/p/original/c3OHQncTAnKFhdOTX7D3LTW6son.jpg",
+ "genres": [
+ "Action",
+ "Crime",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1u07kFu91PZiKdQYoVqgCcYE8WSKlkYqN",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Dark.Knight.Rises.2012.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Following the death of District Attorney Harvey Dent, Batman assumes responsibility for Dent's crimes to protect the late attorney's reputation and is subsequently hunted by the Gotham City Police Department. Eight years later, Batman encounters the mysterious Selina Kyle and the villainous Bane, a new terrorist leader who overwhelms Gotham's finest. The Dark Knight resurfaces to protect a city that has branded him an enemy.",
+ "parents": [
+ "10Y2JLDiBbSNqX_Ju7TYoQBvclKOfX1Bl"
+ ],
+ "popularity": 82.951,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hr0L2aueqlP2BYUblTTjmtn0hw4.jpg",
+ "releaseDate": "2012-07-17",
+ "title": "The Dark Knight Rises",
+ "type": "file",
+ "voteAverage": 7.78
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11778,
+ "backdropPath": "https://image.tmdb.org/t/p/original/a5zBQfXmLk3qqRYF7AioWpiAxk2.jpg",
+ "genres": [
+ "Drama",
+ "War"
+ ],
+ "id": "19748yqe1rKVhn2lnlM0or8kBWdDRIfmp",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Deer.Hunter.1978.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A group of working-class friends decide to enlist in the Army during the Vietnam War and finds it to be hellish chaos -- not the noble venture they imagined. Before they left, Steven married his pregnant girlfriend -- and Michael and Nick were in love with the same woman. But all three are different men upon their return.",
+ "parents": [
+ "1i5PWjk03o9zHPnLZvGcvXwu21YbaBI48"
+ ],
+ "popularity": 28.478,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bbGtogDZOg09bm42KIpCXUXICkh.jpg",
+ "releaseDate": "1978-12-08",
+ "title": "The Deer Hunter",
+ "type": "file",
+ "voteAverage": 8.012
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1422,
+ "backdropPath": "https://image.tmdb.org/t/p/original/6WRrGYalXXveItfpnipYdayFkQB.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Crime"
+ ],
+ "id": "1l3xhSTBHpJm-mFOPFL70FjYKHPHdfQnX",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Departed.2006.BluRay.1080p.x264.YIFY.mp4",
+ "overview": "To take down South Boston's Irish Mafia, the police send in one of their own to infiltrate the underworld, not realizing the syndicate has done likewise. While an undercover cop curries favor with the mob kingpin, a career criminal rises through the police ranks. But both sides soon discover there's a mole among them.",
+ "parents": [
+ "15Xa6Wb9PQ0poKSICDNkei_-Uw97eziJq"
+ ],
+ "popularity": 158.527,
+ "posterPath": "https://image.tmdb.org/t/p/w342/nT97ifVT2J1yMQmeq20Qblg61T.jpg",
+ "releaseDate": "2006-10-04",
+ "title": "The Departed",
+ "type": "file",
+ "voteAverage": 8.168
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1955,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hKpzq3U7X1C1lqnYh0WQwlPyxO5.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1mWG5yTS5pXZrCRYdwFBhT6A_dfCjIFfN",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Elephant.Man.1980.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A Victorian surgeon rescues a heavily disfigured man being mistreated by his \"owner\" as a side-show freak. Behind his monstrous fa\u00e7ade, there is revealed a person of great intelligence and sensitivity. Based on the true story of Joseph Merrick (called John Merrick in the film), a severely deformed man in 19th century London.",
+ "parents": [
+ "1IppioWdoH7CizP-IQyMfqeux8XXuRanl"
+ ],
+ "popularity": 31.547,
+ "posterPath": "https://image.tmdb.org/t/p/w342/3SInR81qnXjY7Or5qXyiQLmWfEh.jpg",
+ "releaseDate": "1980-10-09",
+ "title": "The Elephant Man",
+ "type": "file",
+ "voteAverage": 8.045
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 9552,
+ "backdropPath": "https://image.tmdb.org/t/p/original/huC0x1don81NMreSGx4ITkrv9aG.jpg",
+ "genres": [
+ "Horror",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1ks1EBw1-bjMzw6_eb2ddvrlZz8ycyy97",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Exorcist.1973.1080p.BrRip.x264.bitloks.YIFY.mp4",
+ "overview": "When a charming 12-year-old girl takes on the characteristics and voices of others, doctors say there is nothing they can do. As people begin to die, the girl's mother realizes her daughter has been possessed by the devil--and that her daughter's only possible hope lies with two priests and the ancient rite of demonic exorcism.",
+ "parents": [
+ "1qjJ6TzcD4TDXAlYJ2T_TSpwGTImmTusK"
+ ],
+ "popularity": 59.988,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5x0CeVHJI8tcDx8tUUwYHQSNILq.jpg",
+ "releaseDate": "1973-12-26",
+ "title": "The Exorcist",
+ "type": "file",
+ "voteAverage": 7.732
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 600354,
+ "backdropPath": "https://image.tmdb.org/t/p/original/h3weAFgg06GqchI2xDfufBgSFTj.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1SZ055M2iW5RiqBq_oTgZVetYbhb-QflO",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Father.2020.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A man refuses all assistance from his daughter as he ages and, as he tries to make sense of his changing circumstances, he begins to doubt his loved ones, his own mind and even the fabric of his reality.",
+ "parents": [
+ "1zZfjx0Rh3ctvz6wcrwzYAAOmMetNSsh_"
+ ],
+ "popularity": 45.95,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pr3bEQ517uMb5loLvjFQi8uLAsp.jpg",
+ "releaseDate": "2020-12-23",
+ "title": "The Father",
+ "type": "file",
+ "voteAverage": 8.129
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 961,
+ "backdropPath": "https://image.tmdb.org/t/p/original/h68ilwiTesb5wmDgy2mHYkVuOBP.jpg",
+ "genres": [
+ "Comedy",
+ "Action",
+ "Adventure",
+ "War"
+ ],
+ "id": "1WCN1yVgICtZIOhUgAZhv40C0Q2ay1ECy",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.General.1926.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "During America\u2019s Civil War, Union spies steal engineer Johnny Gray's beloved locomotive, 'The General'\u2014with Johnnie's lady love aboard an attached boxcar\u2014and he single-handedly must do all in his power to both get The General back and to rescue Annabelle.",
+ "parents": [
+ "1jWxcGtJKi2Rveg33HCGpOz4i4thHHwgs"
+ ],
+ "popularity": 206.276,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4NmV1Wei4LxT2lpjViCAScgCZLq.jpg",
+ "releaseDate": "1926-12-25",
+ "title": "The General",
+ "type": "file",
+ "voteAverage": 7.966
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 238,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tmU7GeKVybMWFButWEGl2M4GeiP.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1JdE_M0IqOStYm9yVdp9vnGYWN2o8uXAJ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Godfather.1972.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Spanning the years 1945 to 1955, a chronicle of the fictional Italian-American Corleone crime family. When organized crime family patriarch, Vito Corleone barely survives an attempt on his life, his youngest son, Michael steps in to take care of the would-be killers, launching a campaign of bloody revenge.",
+ "parents": [
+ "1bCay-APF5djUGd1yJEQ270d6_iUnfL2t"
+ ],
+ "popularity": 128.992,
+ "posterPath": "https://image.tmdb.org/t/p/w342/3bhkrj58Vtu7enYsRolD1fZdja1.jpg",
+ "releaseDate": "1972-03-14",
+ "title": "The Godfather",
+ "type": "file",
+ "voteAverage": 8.7
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 240,
+ "backdropPath": "https://image.tmdb.org/t/p/original/kGzFbGhp99zva6oZODW5atUtnqi.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1QDr4iabjdsD0bzv4BODxl1yQ-Euhql9S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Godfather.Part.2.1974.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "In the continuing saga of the Corleone crime family, a young Vito Corleone grows up in Sicily and in 1910s New York. In the 1950s, Michael Corleone attempts to expand the family business into Las Vegas, Hollywood and Cuba.",
+ "parents": [
+ "1hEQ4AxLIFTqllzSVmsR_GDaCYndO5tRQ"
+ ],
+ "popularity": 132.565,
+ "posterPath": "https://image.tmdb.org/t/p/w342/hek3koDUyRQk7FIhPXsa6mT2Zc3.jpg",
+ "releaseDate": "1974-12-20",
+ "title": "The Godfather Part II",
+ "type": "file",
+ "voteAverage": 8.6
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 962,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hZHeDPQGNKN9NN9GuW7qVbM2tDx.jpg",
+ "genres": [
+ "Adventure",
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1WbederbuQ_567awhwNnEugaYXLOU_-GT",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Gold.Rush.1925.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A gold prospector in Alaska struggles to survive the elements and win the heart of a dance hall girl.",
+ "parents": [
+ "14-mwvATAcyJpQ7hspkfzKw-U3i8gbu_f"
+ ],
+ "popularity": 19.717,
+ "posterPath": "https://image.tmdb.org/t/p/w342/eQRFo1qwRREYwj47Yoe1PisgOle.jpg",
+ "releaseDate": "1925-07-12",
+ "title": "The Gold Rush",
+ "type": "file",
+ "voteAverage": 8.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 429,
+ "backdropPath": "https://image.tmdb.org/t/p/original/Adrip2Jqzw56KeuV2nAxucKMNXA.jpg",
+ "genres": [
+ "Western"
+ ],
+ "id": "1g1GY-w_sL6aey4sYGE7JkbnPAgDlVe0Y",
+ "language": "it",
+ "mimeType": "video/mp4",
+ "name": "The.Good.The.Bad.And.The.Ugly.1966.REMASTERED.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "While the Civil War rages on between the Union and the Confederacy, three men \u2013 a quiet loner, a ruthless hitman, and a Mexican bandit \u2013 comb the American Southwest in search of a strongbox containing $200,000 in stolen gold.",
+ "parents": [
+ "1mUUmi3emn4X9k02u3o91AJUi5Vrz9uld"
+ ],
+ "popularity": 74.724,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bX2xnavhMYjWDoZp1VM6VnU1xwe.jpg",
+ "releaseDate": "1966-12-22",
+ "title": "The Good, the Bad and the Ugly",
+ "type": "file",
+ "voteAverage": 8.464
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 120467,
+ "backdropPath": "https://image.tmdb.org/t/p/original/5vPW6MPAyCFd84FEQQgtPDmVDPQ.jpg",
+ "genres": [
+ "Comedy",
+ "Drama"
+ ],
+ "id": "14dNXJU7AgyYW1nbrgPU8SL3KJSSZbjGx",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Grand.Budapest.Hotel.2014.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "The Grand Budapest Hotel tells of a legendary concierge at a famous European hotel between the wars and his friendship with a young employee who becomes his trusted prot\u00e9g\u00e9. The story involves the theft and recovery of a priceless Renaissance painting, the battle for an enormous family fortune and the slow and then sudden upheavals that transformed Europe during the first half of the 20th century.",
+ "parents": [
+ "18j9rq6RG5lEYdmiCxgaKevyoDRX7dy-o"
+ ],
+ "popularity": 39.323,
+ "posterPath": "https://image.tmdb.org/t/p/w342/eWdyYQreja6JGCzqHWXpWHDrrPo.jpg",
+ "releaseDate": "2014-02-26",
+ "title": "The Grand Budapest Hotel",
+ "type": "file",
+ "voteAverage": 8.05
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 596,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7UTQCis1B8oWNjIMzQq57LPqma2.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1tBoPKko1oWDADVnY38nYbfyX4U4a5sYk",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Grapes.Of.Wrath.1940.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Tom Joad returns to his home after a jail sentence to find his family kicked out of their farm due to foreclosure. He catches up with them on his Uncle\u2019s farm, and joins them the next day as they head for California and a new life... Hopefully.",
+ "parents": [
+ "18TU9_lc2uFVP7ZPAshHaWLiWAdtFfPYh"
+ ],
+ "popularity": 21.726,
+ "posterPath": "https://image.tmdb.org/t/p/w342/eUcxMVBIA0Jg8l1RGUqycrc3eIQ.jpg",
+ "releaseDate": "1940-03-15",
+ "title": "The Grapes of Wrath",
+ "type": "file",
+ "voteAverage": 7.851
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 914,
+ "backdropPath": "https://image.tmdb.org/t/p/original/c8Pi8F1FzpNebtgXcSjC9nWCdSW.jpg",
+ "genres": [
+ "Comedy",
+ "War"
+ ],
+ "id": "16t6yMIAR4-BlgcPBS3FmsTHTMsNcoBMe",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Great.Dictator.1940.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Dictator Adenoid Hynkel tries to expand his empire while a poor Jewish barber tries to avoid persecution from Hynkel's regime.",
+ "parents": [
+ "1sVacX18GVi0GgLGC89IsjHxONe7SkyWW"
+ ],
+ "popularity": 76.162,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1QpO9wo7JWecZ4NiBuu625FiY1j.jpg",
+ "releaseDate": "1940-10-15",
+ "title": "The Great Dictator",
+ "type": "file",
+ "voteAverage": 8.321
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 5925,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ih30cG9OGlJ7zyzhG3G5Bd3YGa9.jpg",
+ "genres": [
+ "Adventure",
+ "Drama",
+ "History",
+ "Thriller",
+ "War"
+ ],
+ "id": "1mt1B9EphRxTKKj11f7iv8xLXpcco07UP",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Great.Escape.1963.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The Nazis, exasperated at the number of escapes from their prison camps by a relatively small number of Allied prisoners, relocate them to a high-security 'escape-proof' camp to sit out the remainder of the war. Undaunted, the prisoners plan one of the most ambitious escape attempts of World War II. Based on a true story.",
+ "parents": [
+ "1AwSohSyxByMZPHbXQh0dvW2zQxT9VGWK"
+ ],
+ "popularity": 37.832,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gBH4H8UMFxl139HaLz6lRuvsel8.jpg",
+ "releaseDate": "1963-07-03",
+ "title": "The Great Escape",
+ "type": "file",
+ "voteAverage": 7.947
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 497,
+ "backdropPath": "https://image.tmdb.org/t/p/original/vxJ08SvwomfKbpboCWynC3uqUg4.jpg",
+ "genres": [
+ "Fantasy",
+ "Drama",
+ "Crime"
+ ],
+ "id": "15sqOs_FNjloqP9yFnQpR0VYxFdluoHlf",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Green.Mile.1999.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "A supernatural tale set on death row in a Southern prison, where gentle giant John Coffey possesses the mysterious power to heal people's ailments. When the cell block's head guard, Paul Edgecomb, recognizes Coffey's miraculous gift, he tries desperately to help stave off the condemned man's execution.",
+ "parents": [
+ "1ko2gpDFh8XWm0VIxveQodZP03vGTjC00"
+ ],
+ "popularity": 92.352,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8VG8fDNiy50H4FedGwdSVUPoaJe.jpg",
+ "releaseDate": "1999-12-10",
+ "title": "The Green Mile",
+ "type": "file",
+ "voteAverage": 8.505
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 290098,
+ "backdropPath": "https://image.tmdb.org/t/p/original/9o9ci7ZH9chSy8B7YXCBYih8Kkd.jpg",
+ "genres": [
+ "Thriller",
+ "Drama",
+ "Romance"
+ ],
+ "id": "1new64ZMsZsZv8GlyRvcV4h6IgkYuz7Lt",
+ "language": "ko",
+ "mimeType": "video/mp4",
+ "name": "The.Handmaiden.2016.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In 1930s Korea, a swindler and a young woman pose as a Japanese count and a handmaiden to seduce a Japanese heiress and steal her fortune.",
+ "parents": [
+ "1NeWnvljq6a1QTdC3VuIWrzHWnOUnDmZ2"
+ ],
+ "popularity": 63.947,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dLlH4aNHdnmf62umnInL8xPlPzw.jpg",
+ "releaseDate": "2016-06-01",
+ "title": "The Handmaiden",
+ "type": "file",
+ "voteAverage": 8.224
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 50014,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wyvUmyzqGOBDyqLHRSukGDjI7bH.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1oMnt4MF1IFCWV-AK0D2YnH5ee7o-hxVe",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Help.2011.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Aibileen Clark is a middle-aged African-American maid who has spent her life raising white children and has recently lost her only son; Minny Jackson is an African-American maid who has often offended her employers despite her family's struggles with money and her desperate need for jobs; and Eugenia \"Skeeter\" Phelan is a young white woman who has recently moved back home after graduating college to find out her childhood maid has mysteriously disappeared. These three stories intertwine to explain how life in Jackson, Mississippi revolves around \"the help\"; yet they are always kept at a certain distance because of racial lines.",
+ "parents": [
+ "1QcfkJ7ouVZ04fTaVxDi_iF5uR3xMZThK"
+ ],
+ "popularity": 123.235,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7XLSwxpfpPoJyTdJVot6a42TS2V.jpg",
+ "releaseDate": "2011-08-09",
+ "title": "The Help",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 103663,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7zN7m5jEyrNxFYm2EbQJAZwAG5i.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1IQCqCHkpNqpQL0uygnG50S1CPWvxWd5s",
+ "language": "da",
+ "mimeType": "video/mp4",
+ "name": "The.Hunt.2012.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A teacher lives a lonely life, all the while struggling over his son\u2019s custody. His life slowly gets better as he finds love and receives good news from his son, but his new luck is about to be brutally shattered by an innocent little lie.",
+ "parents": [
+ "1D6VheVxRlCDZ_PLJasqSmdeE5uJZ0GW-"
+ ],
+ "popularity": 36.4,
+ "posterPath": "https://image.tmdb.org/t/p/w342/jkixsXzRh28q3PCqFoWcf7unghT.jpg",
+ "releaseDate": "2012-06-13",
+ "title": "The Hunt",
+ "type": "file",
+ "voteAverage": 8.102
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 9806,
+ "backdropPath": "https://image.tmdb.org/t/p/original/cnORTKYtAzPXIY6lizTJspfoXnd.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Animation",
+ "Family"
+ ],
+ "id": "1iVO6Z6GpadnbsCHn68XXUwjEkKzdcTxi",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Incredibles.2004.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Bob Parr has given up his superhero days to log in time as an insurance adjuster and raise his three children with his formerly heroic wife in suburbia. But when he receives a mysterious assignment, it's time to get back into costume.",
+ "parents": [
+ "1YT1PYHvGK2TMK3M8z8aMhW1hG3Zw30L9"
+ ],
+ "popularity": 72.876,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2LqaLgk4Z226KkgPJuiOQ58wvrm.jpg",
+ "releaseDate": "2004-10-27",
+ "title": "The Incredibles",
+ "type": "file",
+ "voteAverage": 7.705
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 77338,
+ "backdropPath": "https://image.tmdb.org/t/p/original/bGksau9GGu0uJ8DJQ8DYc9JW5LM.jpg",
+ "genres": [
+ "Drama",
+ "Comedy"
+ ],
+ "id": "1acml88lvpQ11alKP-3-pxZD-aN-56lhl",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "The.Intouchables.2011.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A true story of two men who should never have met \u2013 a quadriplegic aristocrat who was injured in a paragliding accident and a young man from the projects.",
+ "parents": [
+ "1t5hCLtf3p0eOr2a9onB0ciyh33oSW3A7"
+ ],
+ "popularity": 52.729,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1QU7HKgsQbGpzsJbJK4pAVQV9F5.jpg",
+ "releaseDate": "2011-11-02",
+ "title": "The Intouchables",
+ "type": "file",
+ "voteAverage": 8.279
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 10386,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gZ78dyRH9hXeH94ASjuvD9Vw4b5.jpg",
+ "genres": [
+ "Family",
+ "Animation",
+ "Science Fiction",
+ "Adventure"
+ ],
+ "id": "12k0XM4-L6U0d7ypdn3V3ukV2WttBzrFe",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Iron.Giant.1999.DIRECTOR.CUT.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In the small town of Rockwell, Maine in October 1957, a giant metal machine befriends a nine-year-old boy and ultimately finds its humanity by unselfishly saving people from their own fears and prejudices.",
+ "parents": [
+ "13ilSWqaQVo5FhJQMZO0fkxwCjyc86j4Z"
+ ],
+ "popularity": 41.537,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ct04FCFLPImNG5thcPLRnVsZlmS.jpg",
+ "releaseDate": "1999-08-06",
+ "title": "The Iron Giant",
+ "type": "file",
+ "voteAverage": 7.944
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 10098,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mAhCW7QbpL5kwvCWGsfyY3ILoW6.jpg",
+ "genres": [
+ "Comedy",
+ "Drama"
+ ],
+ "id": "1QFBwaKdCHUaSgyfCL3yG4aREJguLEo8S",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Kid.1921.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A tramp cares for a boy after he's abandoned as a newborn by his mother. Later the mother has a change of heart and aches to be reunited with her son.",
+ "parents": [
+ "17ehw75nGAR3QIv-JNbd35BaYya0a2WC1"
+ ],
+ "popularity": 24.694,
+ "posterPath": "https://image.tmdb.org/t/p/w342/drgMcyTsySQBnUPGaBThCHGdlWT.jpg",
+ "releaseDate": "1921-01-21",
+ "title": "The Kid",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 11430,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3eQnD9CIUerbXbgtFE1zJNvEVVo.jpg",
+ "genres": [
+ "Family",
+ "Animation",
+ "Comedy",
+ "Action"
+ ],
+ "id": "1d9W5iqGInTxOEJTSIqxx03t3ufSLWOad",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Lion.King.1.1.2.2004.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Timon the meerkat and Pumbaa the warthog are best pals and the unsung heroes of the African savanna. This prequel to the smash Disney animated adventure takes you back -- way back -- before Simba's adventure began. You'll find out all about Timon and Pumbaa and tag along as they search for the perfect home and attempt to raise a rambunctious lion cub.",
+ "parents": [
+ "1cx_W-zY99YE3cy7hkoLY9IMLFoiD95WI"
+ ],
+ "popularity": 40.897,
+ "posterPath": "https://image.tmdb.org/t/p/w342/sVJME5R1NmTXtbdnAxYPx7Xa7kr.jpg",
+ "releaseDate": "2004-02-06",
+ "title": "The Lion King 1\u00bd",
+ "type": "file",
+ "voteAverage": 6.577
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 582,
+ "backdropPath": "https://image.tmdb.org/t/p/original/3mxteiwtcCPjbYKlyC0WxY1G9J3.jpg",
+ "genres": [
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1o8L_f4GAO0B-sA3RARKiYvVzS4bBBjYK",
+ "language": "de",
+ "mimeType": "video/mp4",
+ "name": "The.Lives.Of.Others.2006.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In 1984 East Berlin, an agent of the secret police, conducting surveillance on a writer and his lover, finds himself becoming increasingly absorbed by their lives.",
+ "parents": [
+ "1WkhMy5W7aLfsDt-MMfD7BNrGAa-kBteV"
+ ],
+ "popularity": 26.605,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cVUDMnskSc01rdbyH0tLATTJUdP.jpg",
+ "releaseDate": "2006-03-23",
+ "title": "The Lives of Others",
+ "type": "file",
+ "voteAverage": 8.028
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 120,
+ "backdropPath": "https://image.tmdb.org/t/p/original/z51Wzj94hvAIsWfknifKTqKJRwp.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Action"
+ ],
+ "id": "13nrKdj8jdHYS7qgAab0vmLMi8NlJEyr8",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Lord.Of.The.Rings.The.Fellowship.Of.The.Ring.2001.EXTENDED.REMASTERED.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Young hobbit Frodo Baggins, after inheriting a mysterious ring from his uncle Bilbo, must leave his home in order to keep it from falling into the hands of its evil creator. Along the way, a fellowship is formed to protect the ringbearer and make sure that the ring arrives at its final destination: Mt. Doom, the only place where it can be destroyed.",
+ "parents": [
+ "1RIFGGRe_-HER8uurd536tZgxNFZeaeXs"
+ ],
+ "popularity": 124.96,
+ "posterPath": "https://image.tmdb.org/t/p/w342/6oom5QYQ2yQTMJIbnvbkBL9cHo6.jpg",
+ "releaseDate": "2001-12-18",
+ "title": "The Lord of the Rings: The Fellowship of the Ring",
+ "type": "file",
+ "voteAverage": 8.4
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 122,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2u7zbn8EudG6kLlBzUYqP8RyFU4.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Action"
+ ],
+ "id": "1FH1Om5Q0gq3lwLmzzo9arXYpdGxmLpCo",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Lord.Of.The.Rings.The.Return.Of.The.King.2003.EXTENDED.REMASTERED.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "As armies mass for a final battle that will decide the fate of the world--and powerful, ancient forces of Light and Dark compete to determine the outcome--one member of the Fellowship of the Ring is revealed as the noble heir to the throne of the Kings of Men. Yet, the sole hope for triumph over evil lies with a brave hobbit, Frodo, who, accompanied by his loyal friend Sam and the hideous, wretched Gollum, ventures deep into the very dark heart of Mordor on his seemingly impossible quest to destroy the Ring of Power.\u200b",
+ "parents": [
+ "1Ccd6n-LWzM6abcjHyZS-4PYQ2HOghro8"
+ ],
+ "popularity": 105.709,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rCzpDGLbOoPwLjy3OAm5NUPOTrC.jpg",
+ "releaseDate": "2003-12-01",
+ "title": "The Lord of the Rings: The Return of the King",
+ "type": "file",
+ "voteAverage": 8.481
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 121,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mshaKLtPUxcDBhzau6qiObEblhL.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Action"
+ ],
+ "id": "1uyv1Pd60aRx5VpsIwitMsQtb16UwDAa4",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Lord.Of.The.Rings.The.Two.Towers.2002.EXTENDED.REMASTERED.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Frodo Baggins and the other members of the Fellowship continue on their sacred quest to destroy the One Ring--but on separate paths. Their destinies lie at two towers--Orthanc Tower in Isengard, where the corrupt wizard Saruman awaits, and Sauron's fortress at Barad-dur, deep within the dark lands of Mordor. Frodo and Sam are trekking to Mordor to destroy the One Ring of Power while Gimli, Legolas and Aragorn search for the orc-captured Merry and Pippin. All along, nefarious wizard Saruman awaits the Fellowship members at the Orthanc Tower in Isengard.",
+ "parents": [
+ "1R5LJY1WfK2sgtZ-z4a3RNb6V4wuHQWpV"
+ ],
+ "popularity": 92.479,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5VTN0pR8gcqV3EPUHHfMGnJYN9L.jpg",
+ "releaseDate": "2002-12-18",
+ "title": "The Lord of the Rings: The Two Towers",
+ "type": "file",
+ "voteAverage": 8.395
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 603,
+ "backdropPath": "https://image.tmdb.org/t/p/original/icmmSD4vTTDKOq2vvdulafOGw93.jpg",
+ "genres": [
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "1nHEzAVopUPhP1p5BhwW_IvVKAmudGJj9",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Matrix.1999.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Set in the 22nd century, The Matrix tells the story of a computer hacker who joins a group of underground insurgents fighting the vast and powerful computers who now rule the earth.",
+ "parents": [
+ "1QNLrIAG4dhxYKDyZKGREDOC3HmqkWOjT"
+ ],
+ "popularity": 394.386,
+ "posterPath": "https://image.tmdb.org/t/p/w342/f89U3ADr1oiB1s9GkdPOEpXUk5H.jpg",
+ "releaseDate": "1999-03-31",
+ "title": "The Matrix",
+ "type": "file",
+ "voteAverage": 8.217
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 780,
+ "backdropPath": "https://image.tmdb.org/t/p/original/A1mteOfKdvK5er2sD5i02Qw3CWz.jpg",
+ "genres": [
+ "Drama",
+ "History"
+ ],
+ "id": "1w0JeTcLKZMn8PhBhlG9zDPgfNogpzSqc",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "The.Passion.Of.Joan.Of.Arc.1928.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A classic of the silent age, this film tells the story of the doomed but ultimately canonized 15th-century teenage warrior. On trial for claiming she'd spoken to God, Jeanne d'Arc is subjected to inhumane treatment and scare tactics at the hands of church court officials. Initially bullied into changing her story, Jeanne eventually opts for what she sees as the truth. Her punishment, a famously brutal execution, earns her perpetual martyrdom.",
+ "parents": [
+ "1JauYgLvvYTIzLFrdNSGszfpNFEqyuEiq"
+ ],
+ "popularity": 16.429,
+ "posterPath": "https://image.tmdb.org/t/p/w342/8OYGtQlO8k9PcOm49apV62eVJQo.jpg",
+ "releaseDate": "1928-04-21",
+ "title": "The Passion of Joan of Arc",
+ "type": "file",
+ "voteAverage": 8.003
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 423,
+ "backdropPath": "https://image.tmdb.org/t/p/original/dVr11o9or7AS8AMPfwjSpEU83iU.jpg",
+ "genres": [
+ "Drama",
+ "War"
+ ],
+ "id": "159jVuzH9HIBEThr2YHbK1awLGtRe5qbJ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Pianist.2002.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "The true story of pianist W\u0142adys\u0142aw Szpilman's experiences in Warsaw during the Nazi occupation. When the Jews of the city find themselves forced into a ghetto, Szpilman finds work playing in a caf\u00e9; and when his family is deported in 1942, he stays behind, works for a while as a laborer, and eventually goes into hiding in the ruins of the war-torn city.",
+ "parents": [
+ "19roEnw9jAryd9LXzR4ezShBAUa5oe4Ux"
+ ],
+ "popularity": 64.875,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2hFvxCCWrTmCYwfy7yum0GKRi3Y.jpg",
+ "releaseDate": "2002-09-17",
+ "title": "The Pianist",
+ "type": "file",
+ "voteAverage": 8.384
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1124,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xBDE2d6HM1aBKQRu4IT7SfPD9fs.jpg",
+ "genres": [
+ "Drama",
+ "Mystery",
+ "Science Fiction"
+ ],
+ "id": "1WAURuzxdBExVw0PEVU1YJGQibM-73hVq",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Prestige.2006.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A mysterious story of two magicians whose intense rivalry leads them on a life-long battle for supremacy -- full of obsession, deceit and jealousy with dangerous and deadly consequences.",
+ "parents": [
+ "1wpL2knBnvQCLHwyxU5OEzVsHVy3LpKBR"
+ ],
+ "popularity": 171.296,
+ "posterPath": "https://image.tmdb.org/t/p/w342/tRNlZbgNCNOpLpbPEz5L8G8A0JN.jpg",
+ "releaseDate": "2006-10-17",
+ "title": "The Prestige",
+ "type": "file",
+ "voteAverage": 8.203
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 25376,
+ "backdropPath": "https://image.tmdb.org/t/p/original/fNHCogWhABNAmzk0IFdzQP5XLYj.jpg",
+ "genres": [
+ "Mystery",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1g-MS4mcm0BMJlBfmPBCB-0UoA4adrsof",
+ "language": "es",
+ "mimeType": "video/mp4",
+ "name": "The.Secret.In.Their.Eyes.2009.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Hoping to put to rest years of unease concerning a past case, retired criminal investigator Benjam\u00edn begins writing a novel based on the unsolved mystery of a newlywed\u2019s rape and murder. With the help of a former colleague, judge Irene, he attempts to make sense of the past.",
+ "parents": [
+ "1uvYqazRiQmGSpxAzubUkBjm3gpq4Np0C"
+ ],
+ "popularity": 26.835,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dkeAwfZzwL3WvToydE3CXiY80E0.jpg",
+ "releaseDate": "2009-08-13",
+ "title": "The Secret in Their Eyes",
+ "type": "file",
+ "voteAverage": 8.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 490,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7tBfYcZH4P4AA1oFzjflUTSDZgx.jpg",
+ "genres": [
+ "Fantasy",
+ "Drama"
+ ],
+ "id": "1KoIYABEOoaciDpJMnrPKjie2MAAmMq-Q",
+ "language": "sv",
+ "mimeType": "video/mp4",
+ "name": "The.Seventh.Seal.1957.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "When disillusioned Swedish knight Antonius Block returns home from the Crusades to find his country in the grips of the Black Death, he challenges Death to a chess match for his life. Tormented by the belief that God does not exist, Block sets off on a journey, meeting up with traveling players Jof and his wife, Mia, and becoming determined to evade Death long enough to commit one redemptive act while he still lives.",
+ "parents": [
+ "1fgW67u0nuBNokxaZRUy4tU2RtWUzKxkg"
+ ],
+ "popularity": 27.13,
+ "posterPath": "https://image.tmdb.org/t/p/w342/j6z3c6dGXtPHUATJX8J7Y70mM1S.jpg",
+ "releaseDate": "1957-02-16",
+ "title": "The Seventh Seal",
+ "type": "file",
+ "voteAverage": 8.198
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 278,
+ "backdropPath": "https://image.tmdb.org/t/p/original/zfbjgQE1uSd9wiPTX4VzsLi0rGG.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1Wem-ygHutzfse14oaZezk-AY4vwpvYHX",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Shawshank.Redemption.1994.1080p.x264.YIFY.mp4",
+ "overview": "Imprisoned in the 1940s for the double murder of his wife and her lover, upstanding banker Andy Dufresne begins a new life at the Shawshank prison, where he puts his accounting skills to work for an amoral warden. During his long stretch in prison, Dufresne comes to be admired by the other inmates -- including an older prisoner named Red -- for his integrity and unquenchable sense of hope.",
+ "parents": [
+ "17N8Pvt0StLGGH506gtbmtCLYkpBCF94f"
+ ],
+ "popularity": 121.768,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9cqNxx0GxF0bflZmeSMuL5tnGzr.jpg",
+ "releaseDate": "1994-09-23",
+ "title": "The Shawshank Redemption",
+ "type": "file",
+ "voteAverage": 8.7
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 694,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mmd1HnuvAzFc4iuVJcnBrhDNEKr.jpg",
+ "genres": [
+ "Horror",
+ "Thriller"
+ ],
+ "id": "1JMJWudLlS2wOkHzQ32aqNvvI0BvJu9JK",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Shining.1980.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Jack Torrance accepts a caretaker job at the Overlook Hotel, where he, along with his wife Wendy and their son Danny, must live isolated from the rest of the world for the winter. But they aren't prepared for the madness that lurks within.",
+ "parents": [
+ "12JJHw6iF9i3655L30jekdSwRM3KLPrxk"
+ ],
+ "popularity": 80.28,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9PtPnOJSH6pewElRlJPGqC5Gd3W.jpg",
+ "releaseDate": "1980-05-23",
+ "title": "The Shining",
+ "type": "file",
+ "voteAverage": 8.2
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 274,
+ "backdropPath": "https://image.tmdb.org/t/p/original/lDJx0ZKbfYbGoe8mwWmVKSQr0ub.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Thriller"
+ ],
+ "id": "1b8MHcwt9mhU8cwbdfQtymRwTNNjQ59Rw",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Silence.Of.The.Lambs.1991.1080p.BluRay.X264.YIFY.mp4",
+ "overview": "Clarice Starling is a top student at the FBI's training academy. Jack Crawford wants Clarice to interview Dr. Hannibal Lecter, a brilliant psychiatrist who is also a violent psychopath, serving life behind bars for various acts of murder and cannibalism. Crawford believes that Lecter may have insight into a case and that Starling, as an attractive young woman, may be just the bait to draw him out.",
+ "parents": [
+ "1EtHsO-erK5KsvklFRpE18eZG-khZAM3w"
+ ],
+ "popularity": 14.496,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uS9m8OBk1A8eM9I042bx8XXpqAq.jpg",
+ "releaseDate": "1991-02-14",
+ "title": "The Silence of the Lambs",
+ "type": "file",
+ "voteAverage": 8.348
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 745,
+ "backdropPath": "https://image.tmdb.org/t/p/original/paUKxrbN2ww0JeT2JtvgAuaGlPf.jpg",
+ "genres": [
+ "Mystery",
+ "Thriller",
+ "Drama"
+ ],
+ "id": "1Oo9QjG0crw_ZOTJEcM4yhdCk6e4NMkDe",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Sixth.Sense.1999.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Following an unexpected tragedy, child psychologist Malcolm Crowe meets a nine year old boy named Cole Sear, who is hiding a dark secret.",
+ "parents": [
+ "1PVP4OTOnpx8QiQz49l106UTqwuA7S7Ar"
+ ],
+ "popularity": 100.742,
+ "posterPath": "https://image.tmdb.org/t/p/w342/4AfSDjjCy6T5LA1TMz0Lh2HlpRh.jpg",
+ "releaseDate": "1999-08-06",
+ "title": "The Sixth Sense",
+ "type": "file",
+ "voteAverage": 7.953
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 15121,
+ "backdropPath": "https://image.tmdb.org/t/p/original/m5n1nguLC3pTJLPKhN5Ek0aNT6E.jpg",
+ "genres": [
+ "Drama",
+ "Family",
+ "Music",
+ "Romance"
+ ],
+ "id": "1k7s7dqwpyfi-oA9Ui2mtIM3ViolMX5aY",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Sound.of.Music.1965.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "In the years before the Second World War, a tomboyish postulant at an Austrian abbey is hired as a governess in the home of a widowed naval captain with seven children, and brings a new love of life and music into the home.",
+ "parents": [
+ "18_oaILelTMmMozKZ_k6wbVKE9YzYCPrQ"
+ ],
+ "popularity": 66.422,
+ "posterPath": "https://image.tmdb.org/t/p/w342/5qQTu2iGTiQ2UvyGp0beQAZ2rKx.jpg",
+ "releaseDate": "1965-03-29",
+ "title": "The Sound of Music",
+ "type": "file",
+ "voteAverage": 7.724
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 9277,
+ "backdropPath": "https://image.tmdb.org/t/p/original/tQcbNXoYU7zy1dz96npOlbDgtbq.jpg",
+ "genres": [
+ "Comedy",
+ "Crime",
+ "Drama"
+ ],
+ "id": "18f93pDjsi6GbU3Mi5YlBovCn5OWnGNbU",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Sting.1973.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "A novice con man teams up with an acknowledged master to avenge the murder of a mutual friend by pulling off the ultimate big con and swindling a fortune from a big-time mobster.",
+ "parents": [
+ "1igYcfEnIxB0xWAgtZeic-7TbSmaI4FpU"
+ ],
+ "popularity": 67.59,
+ "posterPath": "https://image.tmdb.org/t/p/w342/ckmYng37zey8INYf6d10cVgIG93.jpg",
+ "releaseDate": "1973-12-25",
+ "title": "The Sting",
+ "type": "file",
+ "voteAverage": 8.024
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 218,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wh4ze6klUbeichAj603OKZwY1W5.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Science Fiction"
+ ],
+ "id": "1VrXS_WvO9aP5JbzsvTZbuQaj7bX2yK32",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Terminator.1984.1080p.BRrip.x264.GAZ.YIFY.mp4",
+ "overview": "In the post-apocalyptic future, reigning tyrannical supercomputers teleport a cyborg assassin known as the \"Terminator\" back to 1984 to kill Sarah Connor, whose unborn son is destined to lead insurgents against 21st century mechanical hegemony. Meanwhile, the human-resistance movement dispatches a lone warrior to safeguard Sarah. Can he stop the virtually indestructible killing machine?",
+ "parents": [
+ "122-ILHQ9mDTkzbPqaWWNvjG0MuqKYjRW"
+ ],
+ "popularity": 418.037,
+ "posterPath": "https://image.tmdb.org/t/p/w342/qvktm0BHcnmDpul4Hz01GIazWPr.jpg",
+ "releaseDate": "1984-10-26",
+ "title": "The Terminator",
+ "type": "file",
+ "voteAverage": 7.667
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1091,
+ "backdropPath": "https://image.tmdb.org/t/p/original/r9leYNa8nTRCceZrZhP1DXkgKVb.jpg",
+ "genres": [
+ "Horror",
+ "Mystery",
+ "Science Fiction"
+ ],
+ "id": "1K5s16Hf2GQAxgjqih1yj7Z86jWpx24b7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Thing.1982.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "In the winter of 1982, a twelve-man research team at a remote Antarctic research station discovers an alien buried in the snow for over 100,000 years. Soon unfrozen, the form-changing creature wreaks havoc, creates terror... and becomes one of them.",
+ "parents": [
+ "19rk8HImSMfQPDC7KvQ__RF_Km7s2-9Rr"
+ ],
+ "popularity": 82.582,
+ "posterPath": "https://image.tmdb.org/t/p/w342/tzGY49kseSE9QAKk47uuDGwnSCu.jpg",
+ "releaseDate": "1982-06-25",
+ "title": "The Thing",
+ "type": "file",
+ "voteAverage": 8.059
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1092,
+ "backdropPath": "https://image.tmdb.org/t/p/original/l2iY1AgqQ8dEa3FtWkN5TQ5aVbU.jpg",
+ "genres": [
+ "Thriller",
+ "Mystery"
+ ],
+ "id": "1EBeLe2JCs0SEovGdxNyjfyIq4OUVXcse",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Third.Man.1949.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "In postwar Vienna, Austria, Holly Martins, a writer of pulp Westerns, arrives penniless as a guest of his childhood chum Harry Lime, only to learn he has died. Martins develops a conspiracy theory after learning of a \"third man\" present at the time of Harry's death, running into interference from British officer Major Calloway, and falling head-over-heels for Harry's grief-stricken lover, Anna.",
+ "parents": [
+ "1BVv_jSkRXcrieRSlaKomDx-8fnvh2S43"
+ ],
+ "popularity": 52.269,
+ "posterPath": "https://image.tmdb.org/t/p/w342/oIF3l7Dxp7Eyye10BNyM611wtKa.jpg",
+ "releaseDate": "1949-08-31",
+ "title": "The Third Man",
+ "type": "file",
+ "voteAverage": 7.926
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 3090,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sj5R5SGor3YMFBuabMj8gPbyBmh.jpg",
+ "genres": [
+ "Adventure",
+ "Drama",
+ "Western"
+ ],
+ "id": "1mWHIXImPoU7D_jwMLzs7IEAzwscbzo4B",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Treasure.Of.The.Sierra.Madre.1948.1080p.BluRay.x264-[YTS.AG].mp4",
+ "overview": "Fred C. Dobbs and Bob Curtin, both down on their luck in Tampico, Mexico in 1925, meet up with a grizzled prospector named Howard and decide to join with him in search of gold in the wilds of central Mexico. Through enormous difficulties, they eventually succeed in finding gold, but bandits, the elements, and most especially greed threaten to turn their success into disaster.",
+ "parents": [
+ "1C3YycnB5KpdXd1CbewywX4ifjmUo5J_u"
+ ],
+ "popularity": 21.714,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pWcst7zVbi8Z8W6GFrdNE7HHRxL.jpg",
+ "releaseDate": "1948-01-15",
+ "title": "The Treasure of the Sierra Madre",
+ "type": "file",
+ "voteAverage": 7.981
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 37165,
+ "backdropPath": "https://image.tmdb.org/t/p/original/aCHn2TXYJfzPXQKA6r9mKPbMlUB.jpg",
+ "genres": [
+ "Comedy",
+ "Drama"
+ ],
+ "id": "13G7Ex2ARNdwn0lASbm8TQ_DHwRHNoCk_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Truman.Show.1998.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Truman Burbank is the star of The Truman Show, a 24-hour-a-day reality TV show that broadcasts every aspect of his life without his knowledge. His entire life has been an unending soap opera for consumption by the rest of the world. And everyone he knows, including his wife and his best friend, is really an actor, paid to be part of his life.",
+ "parents": [
+ "1DkhBsqxSbkJH0SeUhzmlBUqKGmpYXPyw"
+ ],
+ "popularity": 81.422,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vuza0WqY239yBXOadKlGwJsZJFE.jpg",
+ "releaseDate": "1998-06-04",
+ "title": "The Truman Show",
+ "type": "file",
+ "voteAverage": 8.1
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 629,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7S7PE3vK9Eh5uzCYBDGk5qTJeYW.jpg",
+ "genres": [
+ "Drama",
+ "Crime",
+ "Thriller"
+ ],
+ "id": "1BJtEVu6rbL1Ty0l5eRJG5dZYLvxTvkV7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Usual.Suspects.1995.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Held in an L.A. interrogation room, Verbal Kint attempts to convince the feds that a mythic crime lord, Keyser Soze, not only exists, but was also responsible for drawing him and his four partners into a multi-million dollar heist that ended with an explosion in San Pedro harbor \u2013 leaving few survivors. Verbal lures his interrogators with an incredible story of the crime lord's almost supernatural prowess.",
+ "parents": [
+ "1zYTvcS8IdkudVEIjLUtShH6P1JRYSI2F"
+ ],
+ "popularity": 35.519,
+ "posterPath": "https://image.tmdb.org/t/p/w342/99X2SgyFunJFXGAYnDv3sb9pnUD.jpg",
+ "releaseDate": "1995-07-19",
+ "title": "The Usual Suspects",
+ "type": "file",
+ "voteAverage": 8.186
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 204,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8JaU1ez5TSrRSmncB0Xh2YQavXP.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Adventure"
+ ],
+ "id": "15l_W-SRLPFJPwpwOmSSFY33cDF2fXxyZ",
+ "language": "fr",
+ "mimeType": "video/mp4",
+ "name": "The.Wages.Of.Fear.1953.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "In a run-down South American town, four men are paid to drive trucks loaded with nitroglycerin into the jungle through to the oil field. Friendships are tested and rivalries develop as they embark upon the perilous journey.",
+ "parents": [
+ "1eDefKAh8mp2NTKioE74U17KHD_4nV6DJ"
+ ],
+ "popularity": 34.8,
+ "posterPath": "https://image.tmdb.org/t/p/w342/y5iBurPvCvPfGukQUxlJHjazeZV.jpg",
+ "releaseDate": "1953-04-22",
+ "title": "The Wages of Fear",
+ "type": "file",
+ "voteAverage": 8.043
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 630,
+ "backdropPath": "https://image.tmdb.org/t/p/original/nRsr98MFztBGm532hCVMGXV6qOp.jpg",
+ "genres": [
+ "Adventure",
+ "Fantasy",
+ "Family"
+ ],
+ "id": "115acmm_HO7NWWsIBNoQJKQUA7HF-FyW7",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Wizard.of.Oz.1939.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Young Dorothy finds herself in a magical world where she makes friends with a lion, a scarecrow and a tin man as they make their way along the yellow brick road to talk with the Wizard and ask for the things they miss most in their lives. The Wicked Witch of the West is the only thing that could stop them.",
+ "parents": [
+ "1PtHGD2AO-MiOK8DTF1GLRdejBsQLTiAa"
+ ],
+ "popularity": 70.683,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pfAZFD7I2hxW9HCChTuAzsdE6UX.jpg",
+ "releaseDate": "1939-08-15",
+ "title": "The Wizard of Oz",
+ "type": "file",
+ "voteAverage": 7.585
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 106646,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7Nwnmyzrtd0FkcRyPqmdzTPppQa.jpg",
+ "genres": [
+ "Crime",
+ "Drama",
+ "Comedy"
+ ],
+ "id": "1mQnkBjXCGtCivgOaL54c2L203okYOO3h",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "The.Wolf.of.Wall.Street.2013.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "A New York stockbroker refuses to cooperate in a large securities fraud case involving corruption on Wall Street, corporate banking world and mob infiltration. Based on Jordan Belfort's autobiography.",
+ "parents": [
+ "1NgRucpkh9Q0gwUGD5mgVoPwpyzM172QI"
+ ],
+ "popularity": 105.122,
+ "posterPath": "https://image.tmdb.org/t/p/w342/34m2tygAYBGqA9MXKhRDtzYd4MR.jpg",
+ "releaseDate": "2013-12-25",
+ "title": "The Wolf of Wall Street",
+ "type": "file",
+ "voteAverage": 8.035
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 7345,
+ "backdropPath": "https://image.tmdb.org/t/p/original/8LRcCJjbQI552BMCuGgYqph8USS.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1wpLw_1ggup8jZM4z7nIT-uhaEqQ6GU7L",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "There.Will.Be.Blood.2007.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Ruthless silver miner, turned oil prospector, Daniel Plainview, moves to oil-rich California. Using his son to project a trustworthy, family-man image, Plainview cons local landowners into selling him their valuable properties for a pittance. However, local preacher Eli Sunday suspects Plainview's motives and intentions, starting a slow-burning feud that threatens both their lives.",
+ "parents": [
+ "1GjTiI6J2JZrvPaKQ-pdQROSTZOrC4UzA"
+ ],
+ "popularity": 36.563,
+ "posterPath": "https://image.tmdb.org/t/p/w342/fa0RDkAlCec0STeMNAhPaF89q6U.jpg",
+ "releaseDate": "2007-12-26",
+ "title": "There Will Be Blood",
+ "type": "file",
+ "voteAverage": 8.083
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 359940,
+ "backdropPath": "https://image.tmdb.org/t/p/original/oQHF0Y4gCw6VdPmapjsbZoxY2ht.jpg",
+ "genres": [
+ "Crime",
+ "Drama"
+ ],
+ "id": "1svREjmSdNcrUJ6iiXBFujWu_bhrQ9_m1",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Three.Billboards.Outside.Ebbing,.Missouri.2017.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "After seven months have passed without a culprit in her daughter's murder case, Mildred Hayes makes a bold move, painting three signs leading into her town with a controversial message directed at Bill Willoughby, the town's revered chief of police. When his second-in-command Officer Jason Dixon, an immature mother's boy with a penchant for violence, gets involved, the battle between Mildred and Ebbing's law enforcement is only exacerbated.",
+ "parents": [
+ "1T6p0nBOBUhgIb51tJUtPsgkKTtWyu8x5"
+ ],
+ "popularity": 26.281,
+ "posterPath": "https://image.tmdb.org/t/p/w342/pZRhqJj0DBy4ghB7g6pU7MGHsWJ.jpg",
+ "releaseDate": "2017-12-01",
+ "title": "Three Billboards Outside Ebbing, Missouri",
+ "type": "file",
+ "voteAverage": 8.073
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 198,
+ "backdropPath": "https://image.tmdb.org/t/p/original/p69ybBV94wSmyCGE2y2pH9U86l0.jpg",
+ "genres": [
+ "Comedy",
+ "War"
+ ],
+ "id": "1ZjVkYavk_PVBrx2Pi3Jfdr6mwVlv0EEb",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "To.Be.Or.Not.To.Be.1942.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "During the Nazi occupation of Poland, an acting troupe becomes embroiled in a Polish soldier's efforts to track down a German spy.",
+ "parents": [
+ "1uCulMz6muNGD-9tRANPyz_TljHc0og5E"
+ ],
+ "popularity": 12.653,
+ "posterPath": "https://image.tmdb.org/t/p/w342/dDQRpEoyjHT4fzw9cNklIvZuXYg.jpg",
+ "releaseDate": "1942-03-05",
+ "title": "To Be or Not to Be",
+ "type": "file",
+ "voteAverage": 7.8
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 595,
+ "backdropPath": "https://image.tmdb.org/t/p/original/mbJIERhLu25fyZb8DQIq1JN3AOR.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "19HL-ak_xSN2CDkVG83g6dmyDCF_sRDkA",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "To.Kill.A.Mockingbird.1962.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Scout Finch, 6, and her older brother Jem live in sleepy Maycomb, Alabama, spending much of their time with their friend Dill and spying on their reclusive and mysterious neighbor, Boo Radley. When Atticus, their widowed father and a respected lawyer, defends a black man named Tom Robinson against fabricated rape charges, the trial and tangent events expose the children to evils of racism and stereotyping.",
+ "parents": [
+ "1SSIYZMJUNctMAy5vLMcyqyy5bznDV_-3"
+ ],
+ "popularity": 33.409,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gZycFUMLx2110dzK3nBNai7gfpM.jpg",
+ "releaseDate": "1962-12-20",
+ "title": "To Kill a Mockingbird",
+ "type": "file",
+ "voteAverage": 7.999
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 18148,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jLq0ol1f0ZKXni9R9GsPBcyPrNN.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "175wSmXooQe-qQgrXaXJPndUPkMXRW6m_",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Tokyo.Story.1953.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "The elderly Shukishi and his wife, Tomi, take the long journey from their small seaside village to visit their adult children in Tokyo. Their elder son, Koichi, a doctor, and their daughter, Shige, a hairdresser, don't have much time to spend with their aged parents, and so it falls to Noriko, the widow of their younger son who was killed in the war, to keep her in-laws company.",
+ "parents": [
+ "1dLMMHo1vVmkOO9j-OrB2fz44kzzaQn0j"
+ ],
+ "popularity": 16.032,
+ "posterPath": "https://image.tmdb.org/t/p/w342/g2YbTYKpY7N2yDSk7BfXZ18I5QV.jpg",
+ "releaseDate": "1953-11-03",
+ "title": "Tokyo Story",
+ "type": "file",
+ "voteAverage": 8.175
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 361743,
+ "backdropPath": "https://image.tmdb.org/t/p/original/AaV1YIdWKnjAIAOe8UUKBFm327v.jpg",
+ "genres": [
+ "Action",
+ "Drama"
+ ],
+ "id": "16uCiTYp8KFlO171IEyUgIWu8WRc0TKJA",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Top.Gun.Maverick.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After more than thirty years of service as one of the Navy\u2019s top aviators, and dodging the advancement in rank that would ground him, Pete \u201cMaverick\u201d Mitchell finds himself training a detachment of TOP GUN graduates for a specialized mission the likes of which no living pilot has ever seen.",
+ "parents": [
+ "1E7lQ2BGNDK7-hPvcZwN85YadycwWtx9N"
+ ],
+ "popularity": 148.606,
+ "posterPath": "https://image.tmdb.org/t/p/w342/62HCnUTziyWcpDaBO2i1DX17ljH.jpg",
+ "releaseDate": "2022-05-21",
+ "title": "Top Gun: Maverick",
+ "type": "file",
+ "voteAverage": 8.218
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 862,
+ "backdropPath": "https://image.tmdb.org/t/p/original/lxD5ak7BOoinRNehOCA85CQ8ubr.jpg",
+ "genres": [
+ "Animation",
+ "Adventure",
+ "Family",
+ "Comedy"
+ ],
+ "id": "1m-U191NMuOe3tTcZRgDTLK0SdEbfGBwH",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Toy.Story.1995.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "Led by Woody, Andy's toys live happily in his room until Andy's birthday brings Buzz Lightyear onto the scene. Afraid of losing his place in Andy's heart, Woody plots against Buzz. But when circumstances separate Buzz and Woody from their owner, the duo eventually learns to put aside their differences.",
+ "parents": [
+ "1RZXEJwZuRom2GOoVlxub-k4-BFRCGXZZ"
+ ],
+ "popularity": 221.874,
+ "posterPath": "https://image.tmdb.org/t/p/w342/uXDfjJbdP4ijW5hWSBrPrlKpxab.jpg",
+ "releaseDate": "1995-10-30",
+ "title": "Toy Story",
+ "type": "file",
+ "voteAverage": 7.971
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 10193,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wE5JGzujfvDPMIfFjJyrhXFjZLc.jpg",
+ "genres": [
+ "Animation",
+ "Family",
+ "Comedy"
+ ],
+ "id": "1PXYTLsMx7ocWZB1OGiD-ZMz-PPWn54nk",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Toy.Story.3.2010.1080p.BRrip.x264.YIFY.mp4",
+ "overview": "Woody, Buzz, and the rest of Andy's toys haven't been played with in years. With Andy about to go to college, the gang find themselves accidentally left at a nefarious day care center. The toys must band together to escape and return home to Andy.",
+ "parents": [
+ "1P_2UWGRKV7l8itMj7JOuGw1k5hwuRUJI"
+ ],
+ "popularity": 70.242,
+ "posterPath": "https://image.tmdb.org/t/p/w342/AbbXspMOwdvwWZgVN0nabZq03Ec.jpg",
+ "releaseDate": "2010-06-16",
+ "title": "Toy Story 3",
+ "type": "file",
+ "voteAverage": 7.796
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 627,
+ "backdropPath": "https://image.tmdb.org/t/p/original/xbk4yCvG9k6Z5gfPqcNM5DG6x3d.jpg",
+ "genres": [
+ "Drama",
+ "Crime"
+ ],
+ "id": "1qS7C8FbsaYgqgHyuZO13iBFZwLvEG-lo",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Trainspotting.1996.1080p.BrRip.x264.BOKUTOX.YIFY.mp4",
+ "overview": "Heroin addict Mark Renton stumbles through bad ideas and sobriety attempts with his unreliable friends -- Sick Boy, Begbie, Spud and Tommy. He also has an underage girlfriend, Diane, along for the ride. After cleaning up and moving from Edinburgh to London, Mark finds he can't escape the life he left behind when Begbie shows up at his front door on the lam, and a scheming Sick Boy follows.",
+ "parents": [
+ "1wi8Gt6vSxmdJQZArfOMRa1lMwzORHgoC"
+ ],
+ "popularity": 40.379,
+ "posterPath": "https://image.tmdb.org/t/p/w342/yKmmT0q35R4AfW9Rbq2IPVAPwk3.jpg",
+ "releaseDate": "1996-02-23",
+ "title": "Trainspotting",
+ "type": "file",
+ "voteAverage": 8.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 33,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ibrZ4mTkRJbFJ8UAFTCW590DM38.jpg",
+ "genres": [
+ "Western"
+ ],
+ "id": "1l2q-Elznxrwm39eOjRU7adO2d5pT8336",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Unforgiven.1992.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "William Munny is a retired, once-ruthless killer turned gentle widower and hog farmer. To help support his two motherless children, he accepts one last bounty-hunter mission to find the men who brutalized a prostitute. Joined by his former partner and a cocky greenhorn, he takes on a corrupt sheriff.",
+ "parents": [
+ "19L70sXlS6jKniPLPyNS6p4AKoLQP5mHo"
+ ],
+ "popularity": 39.792,
+ "posterPath": "https://image.tmdb.org/t/p/w342/54roTwbX9fltg85zjsmrooXAs12.jpg",
+ "releaseDate": "1992-08-07",
+ "title": "Unforgiven",
+ "type": "file",
+ "voteAverage": 7.918
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 14160,
+ "backdropPath": "https://image.tmdb.org/t/p/original/hGGC9gKo7CFE3fW07RA587e5kol.jpg",
+ "genres": [
+ "Animation",
+ "Comedy",
+ "Family",
+ "Adventure"
+ ],
+ "id": "1rZKGyGJU469WbDZJGWXRv5YbT3Tp7Rwj",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Up.2009.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Carl Fredricksen spent his entire life dreaming of exploring the globe and experiencing life to its fullest. But at age 78, life seems to have passed him by, until a twist of fate (and a persistent 8-year old Wilderness Explorer named Russell) gives him a new lease on life.",
+ "parents": [
+ "1kikqVXk5UGiiofzw1q-Uj3Yq1yY0jkdX"
+ ],
+ "popularity": 156.735,
+ "posterPath": "https://image.tmdb.org/t/p/w342/vpbaStTMt8qqXaEgnOR2EE4DNJk.jpg",
+ "releaseDate": "2009-05-28",
+ "title": "Up",
+ "type": "file",
+ "voteAverage": 7.958
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 752,
+ "backdropPath": "https://image.tmdb.org/t/p/original/sFEYsEfzTx7hhjetlNrme8B5OUo.jpg",
+ "genres": [
+ "Action",
+ "Thriller",
+ "Science Fiction"
+ ],
+ "id": "1yUhRhJ0IT2Zr7sIXpRN1MmbteJ-DbEmB",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "V.For.Vendetta.2006.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "In a world in which Great Britain has become a fascist state, a masked vigilante known only as \u201cV\u201d conducts guerrilla warfare against the oppressive British government. When V rescues a young woman from the secret police, he finds in her an ally with whom he can continue his fight to free the people of Britain.",
+ "parents": [
+ "1ybzD4-LdrFJ7ps7cfsKkDouEr2mfQJF1"
+ ],
+ "popularity": 47.864,
+ "posterPath": "https://image.tmdb.org/t/p/w342/1avD1JeaRiJX5M4ahPdZPypGoGN.jpg",
+ "releaseDate": "2006-02-23",
+ "title": "V for Vendetta",
+ "type": "file",
+ "voteAverage": 7.9
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 426,
+ "backdropPath": "https://image.tmdb.org/t/p/original/77aHwg1SCy89rfvQtiruPU58qEV.jpg",
+ "genres": [
+ "Mystery",
+ "Romance",
+ "Thriller"
+ ],
+ "id": "1Bxf12MI0nqALGkOzwqoyxKGfsNs3yvd4",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Vertigo.1958.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "A retired San Francisco detective suffering from acrophobia investigates the strange activities of an old friend's wife, all the while becoming dangerously obsessed with her.",
+ "parents": [
+ "117xTEa-AMqWDmfQ0SNIFpOjw5DCynlGG"
+ ],
+ "popularity": 63.334,
+ "posterPath": "https://image.tmdb.org/t/p/w342/15uOEfqBNTVtDUT7hGBVCka0rZz.jpg",
+ "releaseDate": "1958-05-28",
+ "title": "Vertigo",
+ "type": "file",
+ "voteAverage": 8.171
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 211683,
+ "backdropPath": null,
+ "genres": [],
+ "id": "15iTtw3pxrt2-f2jxmvw8uilT7uPBxY3_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "WALL-E.2008.1080p.BrRip.x264.YIFY.mp4",
+ "overview": "Berlin Wall: Escape To Freedom reveals the stories of courageous East Germans who dared to challenge the authorities and the Berlin Wall in their bid for freedom. From tunnelling under the Wall, to smuggling refugees in a car\u2019s trunk, to flights over the Wall, uncover the details of sensational escape stories. It takes us into the heart of the Death Strip \u2013 a lethal zone next to the Wall filled with barbed wire, mines, attack dogs, tank traps, and armed guards - and shows us how authorities learned from each escape to make the Wall stronger and harder to beat. Finally, the Wall that was strengthened over 28 years was opened in one unbelievable night and yet the divisions of generations past still linger today in modern Berlin.",
+ "parents": [
+ "1-Tw-BcUzErPTQ_uUYeDHC9yvtjB8CbRf"
+ ],
+ "popularity": 0.736,
+ "posterPath": null,
+ "releaseDate": "2008-05-19",
+ "title": "The Berlin Wall: Escape to Freedom",
+ "type": "file",
+ "voteAverage": 6.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 59440,
+ "backdropPath": "https://image.tmdb.org/t/p/original/1PnRPz4A4AguUEVOTcprIyctrax.jpg",
+ "genres": [
+ "Drama",
+ "Action"
+ ],
+ "id": "10dSPvAQObiQ365QG_fnF21nhF8YSrOOz",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Warrior.2011.REPACK.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "The youngest son of an alcoholic former boxer returns home, where he's trained by his father for competition in a mixed martial arts tournament \u2013 a path that puts the fighter on a collision course with his estranged, older brother.",
+ "parents": [
+ "1uONesRQiEtTjk4FDVRCApyqEUrBamwMu"
+ ],
+ "popularity": 41.796,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iM8n4nZJPR2abpnyZ36FUgHiRjr.jpg",
+ "releaseDate": "2011-09-09",
+ "title": "Warrior",
+ "type": "file",
+ "voteAverage": 7.848
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 244786,
+ "backdropPath": "https://image.tmdb.org/t/p/original/vNXGrknx4GjWLgmuNTftWZluIUl.jpg",
+ "genres": [
+ "Drama",
+ "Music"
+ ],
+ "id": "1suJOM3ap1PkWOFFR-9m-ddg9V4YtU2fK",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Whiplash.2014.1080p.BluRay.x264.YIFY.mp4",
+ "overview": "Under the direction of a ruthless instructor, a talented young drummer begins to pursue perfection at any cost, even his humanity.",
+ "parents": [
+ "1kTMbMMlQwaTlIj75-_b2ISbr6ZJbQYHQ"
+ ],
+ "popularity": 169.534,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7fn624j5lj3xTme2SgiLCeuedmO.jpg",
+ "releaseDate": "2014-10-10",
+ "title": "Whiplash",
+ "type": "file",
+ "voteAverage": 8.382
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 614,
+ "backdropPath": "https://image.tmdb.org/t/p/original/BBVAUchYvkmPThVIqipgAfabfl.jpg",
+ "genres": [
+ "Drama"
+ ],
+ "id": "1_pgKIKHAqYZ4q6yXR3Y4jqzCm6OatsMm",
+ "language": "sv",
+ "mimeType": "video/mp4",
+ "name": "Wild.Strawberries.1957.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "Crotchety retired doctor Isak Borg travels from Stockholm to Lund, Sweden, with his pregnant and unhappy daughter-in-law, Marianne, in order to receive an honorary degree from his alma mater. Along the way, they encounter a series of hitchhikers, each of whom causes the elderly doctor to muse upon the pleasures and failures of his own life. These include the vivacious young Sara, a dead ringer for the doctor's own first love.",
+ "parents": [
+ "1IY8dH5TNEUYc3zetTlJsMMOgeuIivVq8"
+ ],
+ "popularity": 28.129,
+ "posterPath": "https://image.tmdb.org/t/p/w342/iyTD2QnySNMPUPE3IedZQipSWfz.jpg",
+ "releaseDate": "1957-12-26",
+ "title": "Wild Strawberries",
+ "type": "file",
+ "voteAverage": 8.13
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 265195,
+ "backdropPath": "https://image.tmdb.org/t/p/original/7SB3a0TzpkI7yvEBTHb4T1EYRXd.jpg",
+ "genres": [
+ "Drama",
+ "Thriller",
+ "Comedy"
+ ],
+ "id": "12kK4kW9OazLkMc8r1StzbHu3JOBOdMdL",
+ "language": "es",
+ "mimeType": "video/mp4",
+ "name": "Wild.Tales.2014.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "Injustice and the demands of the world can cause stress for many people. Some of them, however, explode. This includes a waitress serving a grouchy loan shark, an altercation between two motorists, an ill-fated wedding reception, and a wealthy businessman who tries to buy his family out of trouble.",
+ "parents": [
+ "1YeSRMEyohTIQagAHH2bNGUIyUghHfy91"
+ ],
+ "popularity": 36.313,
+ "posterPath": "https://image.tmdb.org/t/p/w342/bU7IUeTdYFOgeUPtwpWKQNhORMC.jpg",
+ "releaseDate": "2014-08-21",
+ "title": "Wild Tales",
+ "type": "file",
+ "voteAverage": 7.873
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 37257,
+ "backdropPath": "https://image.tmdb.org/t/p/original/ppKDBRK4TMHxjLPRGx3MQEtJWC0.jpg",
+ "genres": [
+ "Drama",
+ "Mystery",
+ "Crime"
+ ],
+ "id": "1CUv9YkkOkn8d_7x_KhSkKWSCPD-6WPNs",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Witness.For.The.Prosecution.1957.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "When Leonard Vole is arrested for the sensational murder of a rich, middle-aged widow, the famous Sir Wilfrid Robarts agrees to appear on his behalf. Sir Wilfrid, recovering from a near-fatal heart attack, is supposed to be on a diet of bland, civil suits\u2014but the lure of the criminal courts is too much for him, especially when the case is so difficult.",
+ "parents": [
+ "1tcoTCGtYAag8LGwt9n2B4ct7cWjU69Yi"
+ ],
+ "popularity": 25.458,
+ "posterPath": "https://image.tmdb.org/t/p/w342/mM5Cad2ESBprh6ucPnMzMfI34Cu.jpg",
+ "releaseDate": "1957-12-17",
+ "title": "Witness for the Prosecution",
+ "type": "file",
+ "voteAverage": 8.215
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 1295439,
+ "backdropPath": null,
+ "genres": [
+ "Action",
+ "Drama",
+ "Adventure"
+ ],
+ "id": "1FVdjly_0B3iVRrful0cjhvwvvUCY-oCG",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Yojimbo.1961.1080p.BluRay.x264.AAC-[YTS.MX].mp4",
+ "overview": "Yojimbo is a low budget 1961 Japanese samurai film from the studio Zazie Productions. The film follows a wandering samurai who arrives in a small town where two rival crime lords are battling for supremacy. The samurai plays both sides against each other, hoping to profit from the conflict.",
+ "parents": [
+ "11RWd7FxIzVau2jIOAgMHgn3wnAgl_V1W"
+ ],
+ "popularity": 1.354,
+ "posterPath": "https://image.tmdb.org/t/p/w342/cLeIpZsOP4AaFDFTP4bi6rqPyQJ.jpg",
+ "releaseDate": "1961-04-15",
+ "title": "Yojimbo",
+ "type": "file",
+ "voteAverage": 8.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 372058,
+ "backdropPath": "https://image.tmdb.org/t/p/original/dIWwZW7dJJtqC6CgWzYkNVKIUm8.jpg",
+ "genres": [
+ "Animation",
+ "Romance",
+ "Drama"
+ ],
+ "id": "14JejNBaEl4dRDRRcqAMijdhBK98PxJCM",
+ "language": "ja",
+ "mimeType": "video/mp4",
+ "name": "Your.Name.2016.1080p.BluRay.x264-[YTS.AM].mp4",
+ "overview": "High schoolers Mitsuha and Taki are complete strangers living separate lives. But one night, they suddenly switch places. Mitsuha wakes up in Taki\u2019s body, and he in hers. This bizarre occurrence continues to happen randomly, and the two must adjust their lives around each other.",
+ "parents": [
+ "1LExbEd5EUA3mpU7tcFXi9P3QcCWdFwrI"
+ ],
+ "popularity": 73.71,
+ "posterPath": "https://image.tmdb.org/t/p/w342/q719jXXEzOoYaps6babgKnONONX.jpg",
+ "releaseDate": "2016-08-26",
+ "title": "Your Name.",
+ "type": "file",
+ "voteAverage": 8.495
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 361743,
+ "backdropPath": "https://image.tmdb.org/t/p/original/AaV1YIdWKnjAIAOe8UUKBFm327v.jpg",
+ "genres": [
+ "Action",
+ "Drama"
+ ],
+ "id": "1tb_dL3sfds1SRpKXG7XtzUL9D9gtwzUO",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Top.Gun.Maverick.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "After more than thirty years of service as one of the Navy\u2019s top aviators, and dodging the advancement in rank that would ground him, Pete \u201cMaverick\u201d Mitchell finds himself training a detachment of TOP GUN graduates for a specialized mission the likes of which no living pilot has ever seen.",
+ "parents": [
+ "1g73fy-ING0z4IMia9t8Zd6FiXQ7QUUsN"
+ ],
+ "popularity": 148.606,
+ "posterPath": "https://image.tmdb.org/t/p/w342/62HCnUTziyWcpDaBO2i1DX17ljH.jpg",
+ "releaseDate": "2022-05-21",
+ "title": "Top Gun: Maverick",
+ "type": "file",
+ "voteAverage": 8.218
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 667538,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2vFuG6bWGyQUzYS9d69E5l85nIz.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction"
+ ],
+ "id": "1CWsvvM7xusL943JPqh_lsRU6-HEM4Xij",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Transformers.Rise.Of.The.Beasts.2023.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "When a new threat capable of destroying the entire planet emerges, Optimus Prime and the Autobots must team up with a powerful faction known as the Maximals. With the fate of humanity hanging in the balance, humans Noah and Elena will do whatever it takes to help the Transformers as they engage in the ultimate battle to save Earth.",
+ "parents": [
+ "1FiMXbKNK_zmJz1EkJ9_I0E8f-b2PhEJi"
+ ],
+ "popularity": 205.015,
+ "posterPath": "https://image.tmdb.org/t/p/w342/gPbM0MK8CP8A174rmUwGsADNYKD.jpg",
+ "releaseDate": "2023-06-06",
+ "title": "Transformers: Rise of the Beasts",
+ "type": "file",
+ "voteAverage": 7.33
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 136799,
+ "backdropPath": "https://image.tmdb.org/t/p/original/gWCWHybWuVg3GmZpdY8qWGb85HR.jpg",
+ "genres": [
+ "Family",
+ "Animation",
+ "Fantasy",
+ "Adventure",
+ "Comedy",
+ "Music"
+ ],
+ "id": "1PON1-O6K1cGQe1zIGxU5zVFnQOYDiUJa",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Trolls (2016).mp4",
+ "overview": "After the monstrous Bergens invade Troll Village, Princess Poppy, the happiest Troll ever born, and overly-cautious, curmudgeonly outcast Branch set off on a journey to rescue her friends. Their mission is full of adventure and mishaps, as this mismatched duo try to tolerate each other long enough to get the job done.",
+ "parents": [
+ "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB"
+ ],
+ "popularity": 58.92,
+ "posterPath": "https://image.tmdb.org/t/p/w342/9VlK2j0THZWzhQPq0W3Oc0IIdBB.jpg",
+ "releaseDate": "2016-10-13",
+ "title": "Trolls",
+ "type": "file",
+ "voteAverage": 6.653
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 335787,
+ "backdropPath": "https://image.tmdb.org/t/p/original/fwrqW8Lp5VQuppFrODd4iJ8LySE.jpg",
+ "genres": [
+ "Action",
+ "Adventure"
+ ],
+ "id": "10FxMi9YNy1m8iM6fAb7wpfQZyENLs4uJ",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Uncharted.2022.1080p.BluRay.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "A young street-smart, Nathan Drake and his wisecracking partner Victor \u201cSully\u201d Sullivan embark on a dangerous pursuit of \u201cthe greatest treasure never found\u201d while also tracking clues that may lead to Nathan\u2019s long-lost brother.",
+ "parents": [
+ "1fqJcdj3V08KXQl-62AMzJ_Wvsstb6WSQ"
+ ],
+ "popularity": 65.432,
+ "posterPath": "https://image.tmdb.org/t/p/w342/rJHC1RUORuUhtfNb4Npclx0xnOf.jpg",
+ "releaseDate": "2022-02-10",
+ "title": "Uncharted",
+ "type": "file",
+ "voteAverage": 6.956
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 844185,
+ "backdropPath": "https://image.tmdb.org/t/p/original/jB2wCtVlhv2BVWhRQRONlIhtnrg.jpg",
+ "genres": [
+ "Comedy",
+ "History"
+ ],
+ "id": "1IHBP9FQeAe_O7vY-PJImLjJ71m83wwL_",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "Unfrosted.2024.1080p.WEBRip.x264.AAC5.1-[YTS.MX].mp4",
+ "overview": "In a time when milk and cereal ruled breakfast, a fierce corporate battle begins over a revolutionary new pastry.",
+ "parents": [
+ "1hWSB1UGvNm0O-PCCHC8oQW6Knv8ohZ2T"
+ ],
+ "popularity": 59.491,
+ "posterPath": "https://image.tmdb.org/t/p/w342/7bMO1avAidIzHhSQNLt6hLv8gZX.jpg",
+ "releaseDate": "2024-04-30",
+ "title": "Unfrosted",
+ "type": "file",
+ "voteAverage": 5.275
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": null,
+ "backdropPath": null,
+ "genres": [],
+ "id": "1nG8MvuTTsNSerpZfvXPHS3CCuvqvlnGI",
+ "language": null,
+ "mimeType": "video/mp4",
+ "name": "Watch Kill Zone 2 (2015).mp4",
+ "overview": null,
+ "parents": [
+ "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB"
+ ],
+ "popularity": 70.412,
+ "posterPath": null,
+ "releaseDate": "2015-01-01",
+ "title": "Watch Kill Zone 2",
+ "type": "file",
+ "voteAverage": 0.0
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 2080,
+ "backdropPath": "https://image.tmdb.org/t/p/original/wvqdJLVh0mSblly7UnYFPEk04Wd.jpg",
+ "genres": [
+ "Adventure",
+ "Action",
+ "Science Fiction"
+ ],
+ "id": "1fcshj0YGtf_VcSA6t7vQSk8BjNrFebfe",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "X-Men Origins- Wolverine (2009).mp4",
+ "overview": "After seeking to live a normal life, Logan sets out to avenge the death of his girlfriend by undergoing the mutant Weapon X program and becoming Wolverine.",
+ "parents": [
+ "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB"
+ ],
+ "popularity": 7.051,
+ "posterPath": "https://image.tmdb.org/t/p/w342/yj8LbTju1p7CUJg7US2unSBk33s.jpg",
+ "releaseDate": "2009-04-28",
+ "title": "X-Men Origins: Wolverine",
+ "type": "file",
+ "voteAverage": 6.265
+ },
+ {
+ "adult": false,
+ "api": "tmdb",
+ "apiId": 246655,
+ "backdropPath": "https://image.tmdb.org/t/p/original/2ex2beZ4ssMeOduLD0ILzXKCiep.jpg",
+ "genres": [
+ "Action",
+ "Adventure",
+ "Science Fiction",
+ "Fantasy"
+ ],
+ "id": "1P9Cw-n4I_s_Zhg9j9__WYrpbEUxPlg_s",
+ "language": "en",
+ "mimeType": "video/mp4",
+ "name": "X-Men- Apocalypse.mp4",
+ "overview": "After the re-emergence of the world's first mutant, world-destroyer Apocalypse, the X-Men must unite to defeat his extinction level plan.",
+ "parents": [
+ "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB"
+ ],
+ "popularity": 167.902,
+ "posterPath": "https://image.tmdb.org/t/p/w342/2mtQwJKVKQrZgTz49Dizb25eOQQ.jpg",
+ "releaseDate": "2016-05-18",
+ "title": "X-Men: Apocalypse",
+ "type": "file",
+ "voteAverage": 6.513
+ }
+ ],
+ "id": "1l6oqVFu-Ys025p7PKjIY0Nwgdr08MwlB",
+ "kind": "drive#file",
+ "length": 379,
+ "mimeType": "application/vnd.google-apps.folder",
+ "name": "Movie",
+ "type": "directory"
+ }
+]
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2e59ee3ec717ef6d9d6b0c0a99d212191db842bd
Binary files /dev/null and b/requirements.txt differ
diff --git a/src/__init__.py b/src/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/__pycache__/__init__.cpython-311.pyc b/src/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..33db405497b81279aff72b3f67975d0953875bc8
Binary files /dev/null and b/src/__pycache__/__init__.cpython-311.pyc differ
diff --git a/src/functions/__init__.py b/src/functions/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/functions/__pycache__/__init__.cpython-311.pyc b/src/functions/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..85635b7e325d61bc894de50f7d440ea6399ab110
Binary files /dev/null and b/src/functions/__pycache__/__init__.cpython-311.pyc differ
diff --git a/src/functions/__pycache__/config.cpython-311.pyc b/src/functions/__pycache__/config.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..fc1b182b9794dc6fcce69002c3db46b865a275d9
Binary files /dev/null and b/src/functions/__pycache__/config.cpython-311.pyc differ
diff --git a/src/functions/__pycache__/credentials.cpython-311.pyc b/src/functions/__pycache__/credentials.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cf25058fc8e50a5be0944e9ab4e1a732c041b3cd
Binary files /dev/null and b/src/functions/__pycache__/credentials.cpython-311.pyc differ
diff --git a/src/functions/__pycache__/drivetools.cpython-311.pyc b/src/functions/__pycache__/drivetools.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e355dc6601efa69a8b26ee7b47186fd79caf3bbd
Binary files /dev/null and b/src/functions/__pycache__/drivetools.cpython-311.pyc differ
diff --git a/src/functions/__pycache__/metadata.cpython-311.pyc b/src/functions/__pycache__/metadata.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ef0ad486aac275c683b038ddac8e67ddba5d8874
Binary files /dev/null and b/src/functions/__pycache__/metadata.cpython-311.pyc differ
diff --git a/src/functions/__pycache__/tests.cpython-311.pyc b/src/functions/__pycache__/tests.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..45bc0e139d328c5b5df6ce391ef66681881d1388
Binary files /dev/null and b/src/functions/__pycache__/tests.cpython-311.pyc differ
diff --git a/src/functions/config.py b/src/functions/config.py
new file mode 100644
index 0000000000000000000000000000000000000000..4846e7cab7c93724a58ebbb86419b86a76b35a0b
--- /dev/null
+++ b/src/functions/config.py
@@ -0,0 +1,82 @@
+import datetime
+import json
+import os
+
+import googleapiclient
+
+import src.functions.credentials
+
+
+def readConfig():
+ if not os.path.exists("./config.json"):
+ with open("config.json", "w+") as w:
+ json.dump(
+ obj={
+ "access_token": None,
+ "account_list": [],
+ "arcio": None,
+ "auth": False,
+ "build_interval": 360,
+ "category_list": [],
+ "client_id": None,
+ "client_secret": None,
+ "cloudflare": None,
+ "kill_switch": False,
+ "refresh_token": None,
+ "secret_key": "",
+ "service_accounts": [],
+ "subtitles": False,
+ "signup": False,
+ "tmdb_api_key": "",
+ "token_expiry": "",
+ "transcoded": False,
+ },
+ fp=w,
+ sort_keys=True,
+ indent=4,
+ )
+ with open("config.json", "r") as r:
+ config = json.load(r)
+ try:
+ datetime.datetime.strptime(config.get("token_expiry"), "%Y-%m-%d %H:%M:%S.%f")
+ except:
+ config["token_expiry"] = str(datetime.datetime.utcnow())
+ return config
+
+
+def updateConfig(config):
+ with open("config.json", "w+") as w:
+ json.dump(obj=config, fp=w, sort_keys=True, indent=4)
+ if os.getenv("LIBDRIVE_CLOUD"):
+ config, drive = src.functions.credentials.refreshCredentials(config)
+ params = {
+ "supportsAllDrives": True,
+ "includeItemsFromAllDrives": True,
+ "fields": "files(id,name)",
+ "q": "'%s' in parents and trashed = false and mimeType = 'application/json'"
+ % (os.getenv("LIBDRIVE_CLOUD")),
+ }
+ files = drive.files().list(**params).execute()["files"]
+ config_file = next((i for i in files if i["name"] == "config.json"), None)
+ file_metadata = {
+ "name": "config.json",
+ "mimeType": "application/json",
+ "parents": [os.getenv("LIBDRIVE_CLOUD")],
+ }
+ media = googleapiclient.http.MediaFileUpload(
+ "config.json", mimetype="application/json", resumable=True
+ )
+ if config_file:
+ params = {
+ "fileId": config_file["id"],
+ "media_body": media,
+ "supportsAllDrives": True,
+ }
+ drive.files().update(**params).execute()
+ else:
+ params = {
+ "body": file_metadata,
+ "media_body": media,
+ "supportsAllDrives": True,
+ }
+ drive.files().create(**params).execute()
diff --git a/src/functions/credentials.py b/src/functions/credentials.py
new file mode 100644
index 0000000000000000000000000000000000000000..230bdf0a17d313ab92931dc2b6338c871402b886
--- /dev/null
+++ b/src/functions/credentials.py
@@ -0,0 +1,44 @@
+import random
+
+import googleapiclient.discovery
+import httplib2
+import oauth2client
+from oauth2client.service_account import ServiceAccountCredentials
+
+
+def refreshCredentials(config):
+ service_acconts = config.get("service_accounts")
+ if type(service_acconts) == list:
+ if len(service_acconts) > 0:
+ random_sa = random.choice(service_acconts)
+ credentials = ServiceAccountCredentials.from_json_keyfile_dict(
+ random_sa,
+ "https://www.googleapis.com/auth/drive",
+ "https://accounts.google.com/o/oauth2/token",
+ )
+ else:
+ credentials = oauth2client.client.GoogleCredentials(
+ config.get("access_token"),
+ config.get("client_id"),
+ config.get("client_secret"),
+ config.get("refresh_token"),
+ None,
+ "https://accounts.google.com/o/oauth2/token",
+ None,
+ )
+ else:
+ credentials = oauth2client.client.GoogleCredentials(
+ config.get("access_token"),
+ config.get("client_id"),
+ config.get("client_secret"),
+ config.get("refresh_token"),
+ None,
+ "https://accounts.google.com/o/oauth2/token",
+ None,
+ )
+ http = credentials.authorize(httplib2.Http())
+ credentials.refresh(http)
+ config["access_token"] = credentials.access_token
+ config["token_expiry"] = str(credentials.token_expiry)
+ drive = googleapiclient.discovery.build("drive", "v3", credentials=credentials)
+ return config, drive
diff --git a/src/functions/drivetools.py b/src/functions/drivetools.py
new file mode 100644
index 0000000000000000000000000000000000000000..186e3269198181fe3a08e1a8eef55a6cf0a4e2f4
--- /dev/null
+++ b/src/functions/drivetools.py
@@ -0,0 +1,76 @@
+import time
+import logging
+
+LOGGER = logging.getLogger()
+
+
+def driveIter(root, drive, mimeType):
+ params = {
+ "pageToken": None,
+ "supportsAllDrives": True,
+ "includeItemsFromAllDrives": True,
+ "fields": "files(id,name,mimeType,parents,shortcutDetails), incompleteSearch, nextPageToken",
+ "q": "'%s' in parents and trashed = false and (mimeType = 'application/vnd.google-apps.folder' or mimeType = 'application/vnd.google-apps.shortcut' or mimeType contains '%s')"
+ % (root["id"], mimeType),
+ "orderBy": "name",
+ }
+ while True:
+ try:
+ response = drive.files().list(**params).execute()
+ except Exception as e:
+ response = {"files": []}
+ LOGGER.error(
+ "\033[31mERROR RETRIEVING FILE '%s'!\033[0m" % (root["id"]),
+ )
+ LOGGER.error(str(e))
+ for file in response["files"]:
+ if mimeType in file["mimeType"]:
+ file["type"] = "file"
+ yield file
+ elif file["mimeType"] == "application/vnd.google-apps.folder":
+ file["type"] = "directory"
+ yield file
+ elif file["mimeType"] == "application/vnd.google-apps.shortcut":
+ tmp_file = {
+ "id": file["shortcutDetails"]["targetId"],
+ "name": file["name"],
+ "mimeType": file["shortcutDetails"]["targetMimeType"],
+ "parents": file["parents"],
+ }
+ if tmp_file["mimeType"] == "application/vnd.google-apps.folder":
+ tmp_file["type"] = "directory"
+ file = tmp_file
+ yield file
+ elif mimeType in tmp_file["mimeType"]:
+ tmp_file["type"] = "file"
+ file = tmp_file
+ yield file
+ try:
+ params["pageToken"] = response["nextPageToken"]
+ except KeyError:
+ return
+
+
+def driveWalk(root, drive, walk, mimeType):
+ if root.get("mimeType") == "application/vnd.google-apps.folder":
+ for item in driveIter(root, drive, mimeType):
+ driveWalk(item, drive, walk, mimeType)
+ elif mimeType in root.get("mimeType"):
+ walk["children"].append(root)
+ else:
+ return
+ return walk
+
+
+def driveTree(root, drive, mimeType):
+ if root.get("mimeType") == "application/vnd.google-apps.folder":
+ tree = root
+ tree["children"] = [
+ driveTree(item, drive, mimeType)
+ for item in driveIter(root, drive, mimeType)
+ ]
+ elif mimeType in root.get("mimeType"):
+ tree = root
+ else:
+ return
+ return tree
diff --git a/src/functions/metadata.py b/src/functions/metadata.py
new file mode 100644
index 0000000000000000000000000000000000000000..03572498d6b3238e4ecd2aa3db9fc9a93ba207fc
--- /dev/null
+++ b/src/functions/metadata.py
@@ -0,0 +1,801 @@
+import datetime
+import json
+import logging
+import os
+import re
+import urllib
+
+import googleapiclient
+import requests
+import src.functions.drivetools
+
+LOGGER = logging.getLogger()
+
+
+def parseMovie(name):
+ # (2008) Iron Man.mkv
+ reg_1 = r"^[\(\[\{](?P\d{4})[\)\]\}]\s(?P[^.]+).*(?P\..*)?$"
+ # Iron Man (2008).mkv
+ reg_2 = r"^(?P.*)\s[\(\[\{](?P\d{4})[\)\]\}].*(?P\..*)?$"
+ # Iron.Man.2008.1080p.WEBRip.DDP5.1.Atmos.x264.mkv
+ reg_3 = r"^(?P(?:(?!\.\d{4}).)*)\.(?P\d{4}).*(?P\..*)?$"
+ reg_4 = r"^(?P)(?P.*).*(?P\..*?$)" # Iron Man.mkv
+ if re.match(reg_1, name):
+ match = re.search(reg_1, name)
+ elif re.match(reg_2, name):
+ match = re.search(reg_2, name)
+ elif re.match(reg_3, name):
+ match = re.search(reg_3, name)
+ return match["title"].replace(".", " "), match["year"]
+ elif re.match(reg_4, name):
+ match = re.search(reg_4, name)
+ else:
+ return None, None
+ return match["title"], match["year"]
+
+
+def parseTV(name):
+ # (2019) The Mandalorian
+ reg_1 = r"^[\(\[\{](?P\d{4})[\)\]\}]\s(?P[^.]+).*$"
+ # The Mandalorian (2019)
+ reg_2 = r"^(?P.*)\s[\(\[\{](?P\d{4})[\)\]\}].*$"
+ # The.Mandalorian.2019.1080p.WEBRip
+ reg_3 = r"^(?P(?:(?!\.\d{4}).)*)\.(?P\d{4}).*$"
+ reg_4 = r"^(?P)(?P.*)$" # The Mandalorian
+ if re.match(reg_1, name):
+ match = re.search(reg_1, name)
+ elif re.match(reg_2, name):
+ match = re.search(reg_2, name)
+ elif re.match(reg_3, name):
+ match = re.search(reg_3, name)
+ return match["title"].replace(".", " "), match["year"]
+ elif re.match(reg_4, name):
+ match = re.search(reg_4, name)
+ else:
+ return None, None
+ return match["title"], match["year"]
+
+
+def mediaIdentifier(
+ ider_vars,
+ title,
+ year,
+ movie=False,
+ tv=False,
+ anime=False,
+):
+ if year == None or year == "":
+ tmp_year = "1900"
+ else:
+ tmp_year = year
+ header = {
+ 'x-cors-api-key': 'temp_4f366722ffa4bdd63246e0a9227c56e8',
+ }
+ if movie == True and anime == False:
+ if ider_vars["adult"] == True:
+ search_url = "https://proxy.cors.sh/https://api.themoviedb.org/3/search/movie?api_key=%s&query=%s&primary_release_year=%s&language=%s&include_adult=true" % (
+ ider_vars["tmdb_api_key"],
+ urllib.parse.quote(title.encode("utf-8")),
+ year,
+ ider_vars["language"],
+ )
+ else:
+ search_url = "https://proxy.cors.sh/https://api.themoviedb.org/3/search/movie?api_key=%s&query=%s&primary_release_year=%s&language=%s" % (
+ ider_vars["tmdb_api_key"],
+ urllib.parse.quote(title.encode("utf-8")),
+ year,
+ ider_vars["language"],
+ )
+ try:
+ search_content = requests.get(search_url, headers=header).json()
+ except Exception as e:
+ search_content = {"total_results": 0}
+ LOGGER.error(
+ "\033[31mERROR RETRIEVING TMDB DATA FOR '%s'!\033[0m" % (title),
+ )
+ LOGGER.error(str(e))
+ if search_content.get("total_results", 0) > 0:
+ data = search_content["results"][0]
+ if data.get("backdrop_path"):
+ data["backdrop_path"] = ider_vars["backdrop_base_url"] + data.get(
+ "backdrop_path"
+ )
+ else:
+ data["backdrop_path"] = None
+ if data.get("poster_path"):
+ data["poster_path"] = ider_vars["poster_base_url"] + data.get(
+ "poster_path"
+ )
+ else:
+ data["poster_path"] = None
+ else:
+ data = dict(
+ {
+ "adult": False,
+ "backdrop_path": None,
+ "genre_ids": [],
+ "id": None,
+ "original_language": None,
+ "overview": None,
+ "popularity": 70.412,
+ "poster_path": None,
+ "release_date": "%s-01-01" % (tmp_year),
+ "title": title,
+ "vote_average": 0.0,
+ },
+ )
+ adult = data.get("adult", False)
+ apiId = data.get("id")
+ backdropPath = data.get("backdrop_path", None)
+ genres = data.get("genre_ids", [])
+ tmp_genres = []
+ for genre in genres:
+ for item in ider_vars["movie_genre_ids"]["genres"]:
+ if item["id"] == genre:
+ tmp_genres.append(item["name"])
+ break
+ genres = tmp_genres
+ language = data.get("original_language", None)
+ overview = data.get("overview", None)
+ popularity = data.get("popularity", 0.0)
+ posterPath = data.get("poster_path", None)
+ releaseDate = data.get("release_date", "%s-01-01" % (tmp_year))
+ title = data.get("title", title)
+ voteAverage = data.get("vote_average", 0.0)
+ return (
+ adult,
+ apiId,
+ backdropPath,
+ genres,
+ language,
+ overview,
+ popularity,
+ posterPath,
+ releaseDate,
+ title,
+ voteAverage,
+ )
+ elif tv == True and anime == False:
+ if ider_vars["adult"] == True:
+ search_url = "https://proxy.cors.sh/https://api.themoviedb.org/3/search/tv?api_key=%s&query=%s&first_air_date_year=%s&language=%s&include_adult=true" % (
+ ider_vars["tmdb_api_key"],
+ urllib.parse.quote(title.encode("utf-8")),
+ year,
+ ider_vars["language"],
+ )
+ else:
+ search_url = "https://proxy.cors.sh/https://api.themoviedb.org/3/search/tv?api_key=%s&query=%s&first_air_date_year=%s&language=%s" % (
+ ider_vars["tmdb_api_key"],
+ urllib.parse.quote(title.encode("utf-8")),
+ year,
+ ider_vars["language"],
+ )
+ try:
+ header = {
+ 'x-cors-api-key': 'temp_4f366722ffa4bdd63246e0a9227c56e8',
+ }
+ search_content = requests.get(search_url, headers=header).json()
+ except Exception as e:
+ search_content = {"total_results": 0}
+ LOGGER.error(
+ "\033[31mERROR RETRIEVING TMDB DATA FOR '%s'!\033[0m" % (title,),
+ )
+ LOGGER.error(str(e))
+ if search_content.get("total_results", 0) > 0:
+ data = search_content["results"][0]
+ if data.get("backdrop_path"):
+ data["backdrop_path"] = ider_vars["backdrop_base_url"] + data.get(
+ "backdrop_path"
+ )
+ else:
+ data["backdrop_path"] = None
+ if data.get("poster_path"):
+ data["poster_path"] = ider_vars["poster_base_url"] + data.get(
+ "poster_path"
+ )
+ else:
+ data["poster_path"] = None
+ else:
+ data = dict(
+ {
+ "backdrop_path": None,
+ "first_air_date": "%s-01-01" % (tmp_year),
+ "genre_ids": [],
+ "id": None,
+ "name": title,
+ "original_language": None,
+ "overview": None,
+ "popularity": 0.0,
+ "poster_path": None,
+ "vote_average": 0.0,
+ },
+ )
+ apiId = data.get("id")
+ backdropPath = data.get("backdrop_path", None)
+ genres = data.get("genre_ids", [])
+ tmp_genres = []
+ for genre in genres:
+ for item in ider_vars["tv_genre_ids"]["genres"]:
+ if item["id"] == genre:
+ tmp_genres.append(item["name"])
+ break
+ genres = tmp_genres
+ language = data.get("original_language", None)
+ overview = data.get("overview", None)
+ popularity = data.get("popularity", 0.0)
+ posterPath = data.get("poster_path", None)
+ releaseDate = data.get("first_air_date", "%s-01-01" % (tmp_year))
+ title = data.get("name", title)
+ voteAverage = data.get("vote_average", 0.0)
+ return (
+ apiId,
+ backdropPath,
+ genres,
+ language,
+ overview,
+ popularity,
+ posterPath,
+ releaseDate,
+ title,
+ voteAverage,
+ )
+ elif movie == True and anime == True:
+ query = """
+ query ($search: String, $seasonYear: Int, $isAdult: Boolean) {
+ Media(search: $search, seasonYear: $seasonYear, type: ANIME, isAdult: $isAdult) {
+ title {
+ english
+ romaji
+ native
+ }
+ id
+ description
+ genres
+ isAdult
+ averageScore
+ popularity
+ startDate {
+ year
+ month
+ day
+ }
+ bannerImage
+ coverImage {
+ large
+ }
+ }
+ }
+ """
+ variables = {"search": title}
+ if ider_vars["adult"] == False:
+ variables["isAdult"] = False
+ if year != None and year != "":
+ variables["seasonYear"] = year
+ try:
+ response = requests.post(
+ "https://graphql.anilist.co",
+ json={"query": query, "variables": variables},
+ ).json()
+ except Exception as e:
+ response = None
+ LOGGER.error(
+ "\033[31mERROR RETRIEVING ANILIST DATA FOR '%s'!\033[0m" % (title),
+ )
+ LOGGER.error(str(e))
+ data = dict(
+ {
+ "isAdult": False,
+ "id": None,
+ "title": {"english": title},
+ "startDate": {"year": tmp_year, "month": "01", "day": "01"},
+ "genres": [],
+ "original_language": None,
+ "description": None,
+ "popularity": 0.0,
+ "bannerImage": "",
+ "coverImage": {"large": None},
+ "averageScore": 0.0,
+ },
+ )
+ if response != None:
+ if isinstance(response.get("data"), dict):
+ if response.get("data", {}).get("Media", None):
+ data = response["data"]["Media"]
+ if data.get("title", {}).get("english") == None:
+ if data.get("title", {}).get("romaji") == None:
+ if data.get("title", {}).get("native") == None:
+ data["title"] = title
+ else:
+ data["title"] = data["title"]["native"]
+ else:
+ data["title"] = data["title"]["romaji"]
+ else:
+ data["title"] = data["title"]["english"]
+ startDate = data.get("startDate", {})
+ releases_date = "%s-%s-%s" % (
+ startDate.get("year", tmp_year),
+ startDate.get("month", "01"),
+ startDate.get("day", "01"),
+ )
+ if "None" in releases_date:
+ releases_date = "%s-%s-%s" % (tmp_year, "01", "01")
+ genres = []
+ for genre in data.get("genres", []):
+ genres.append(genre)
+ if data.get("bannerImage") != None and data.get("bannerImage") != "":
+ data["bannerImage"] = data["bannerImage"].replace("/small/", "/large/")
+ if data.get("description") != None and data.get("description") != "":
+ data["description"] = re.sub(re.compile("<.*?>"), "", data["description"])
+ return (
+ data.get("isAdult", False),
+ data.get("id"),
+ data.get("bannerImage"),
+ genres,
+ data.get("original_language"),
+ data.get("description"),
+ data.get("popularity", 0.0),
+ data.get("coverImage", {}).get("large"),
+ releases_date,
+ data.get("title", title),
+ data.get("averageScore", 0.0),
+ )
+ elif tv == True and anime == True:
+ query = """
+ query ($search: String, $seasonYear: Int, $isAdult: Boolean) {
+ Media(search: $search, seasonYear: $seasonYear, type: ANIME, isAdult: $isAdult) {
+ title {
+ english
+ romaji
+ native
+ }
+ id
+ description
+ genres
+ isAdult
+ averageScore
+ popularity
+ startDate {
+ year
+ month
+ day
+ }
+ bannerImage
+ coverImage {
+ large
+ }
+ }
+ }
+ """
+ variables = {"search": title}
+ if ider_vars["adult"] == False:
+ variables["isAdult"] = False
+ if year != None and year != "":
+ variables["seasonYear"] = year
+ try:
+ response = requests.post(
+ "https://graphql.anilist.co",
+ json={"query": query, "variables": variables},
+ ).json()
+ except Exception as e:
+ response = None
+ LOGGER.error(
+ "\033[31mERROR RETRIEVING ANILIST DATA FOR '%s'!\033[0m" % (title),
+ )
+ LOGGER.error(str(e))
+ data = dict(
+ {
+ "isAdult": False,
+ "id": None,
+ "title": {"english": title},
+ "startDate": {"year": tmp_year, "month": "01", "day": "01"},
+ "genres": [],
+ "original_language": None,
+ "description": None,
+ "popularity": 0.0,
+ "bannerImage": "",
+ "coverImage": {"large": None},
+ "averageScore": 0.0,
+ },
+ )
+ if response != None:
+ if isinstance(response.get("data"), dict):
+ if response.get("data", {}).get("Media", None):
+ data = response["data"]["Media"]
+ title_dict = data.get("title", {})
+ if title_dict.get("english") == None:
+ if title_dict.get("romaji") == None:
+ if title_dict.get("native") == None:
+ data["title"] = title
+ else:
+ data["title"] = title_dict["native"]
+ else:
+ data["title"] = title_dict["romaji"]
+ else:
+ data["title"] = title_dict["english"]
+ startDate = data.get("startDate", {})
+ releases_date = "%s-%s-%s" % (
+ startDate.get("year", tmp_year),
+ startDate.get("month", "01"),
+ startDate.get("day", "01"),
+ )
+ if "None" in releases_date:
+ releases_date = "%s-%s-%s" % (tmp_year, "01", "01")
+ genres = []
+ for genre in data.get("genres", []):
+ genres.append(genre)
+ if data.get("bannerImage") != None and data.get("bannerImage") != "":
+ data["bannerImage"] = data["bannerImage"].replace("/small/", "/large/")
+ if data.get("description") != None and data.get("description") != "":
+ data["description"] = re.sub(re.compile("<.*?>"), "", data["description"])
+ return (
+ data.get("isAdult", False),
+ data.get("id"),
+ data.get("bannerImage"),
+ genres,
+ data.get("original_language"),
+ data.get("description"),
+ data.get("popularity", 0.0),
+ data.get("coverImage", {}).get("large"),
+ releases_date,
+ data.get("title", title),
+ data.get("averageScore", 0.0),
+ )
+
+
+def readMetadata(config):
+ if os.path.exists("./metadata.json"):
+ with open("./metadata.json", "r") as r:
+ metadata = json.load(r)
+ else:
+ metadata = []
+ build_interval = config.get("build_interval")
+ if not build_interval:
+ build_interval = 0
+ for category in config["category_list"]:
+ tmp = {
+ "kind": "drive#file",
+ "id": "",
+ "name": "",
+ "mimeType": "application/vnd.google-apps.folder",
+ "teamDriveId": "",
+ "driveId": "",
+ "type": "directory",
+ "children": [],
+ "categoryInfo": category,
+ "length": 0,
+ "buildTime": str(
+ datetime.datetime.utcnow()
+ - datetime.timedelta(minutes=build_interval + 1)
+ ),
+ }
+ metadata.append(tmp)
+ return metadata
+
+
+def writeMetadata(config):
+ header = {
+ 'x-cors-api-key': 'temp_4f366722ffa4bdd63246e0a9227c56e8',
+ }
+ configuration_content = json.loads(
+ requests.get(
+ "https://proxy.cors.sh/https://api.themoviedb.org/3/configuration?api_key=%s"
+ % (config.get("tmdb_api_key")), headers=header
+ ).content
+ )
+ backdrop_base_url = (
+ configuration_content["images"]["secure_base_url"]
+ + configuration_content["images"]["backdrop_sizes"][3]
+ )
+ poster_base_url = (
+ configuration_content["images"]["secure_base_url"]
+ + configuration_content["images"]["poster_sizes"][3]
+ )
+ header = {
+ 'x-cors-api-key': 'temp_4f366722ffa4bdd63246e0a9227c56e8',
+ }
+ movie_genre_ids = json.loads(
+ requests.get(
+ "https://proxy.cors.sh/https://api.themoviedb.org/3/genre/movie/list?api_key=%s"
+ % (config.get("tmdb_api_key")), headers=header
+ ).content
+ )
+ tv_genre_ids = json.loads(
+ requests.get(
+ "https://proxy.cors.sh/https://api.themoviedb.org/3/genre/tv/list?api_key=%s"
+ % (config.get("tmdb_api_key")), headers=header
+ ).content
+ )
+
+ placeholder_metadata = []
+ count = 0
+ for category in config["category_list"]:
+ ider_vars = {
+ "tmdb_api_key": config.get("tmdb_api_key"),
+ "backdrop_base_url": backdrop_base_url,
+ "poster_base_url": poster_base_url,
+ "movie_genre_ids": movie_genre_ids,
+ "tv_genre_ids": tv_genre_ids,
+ "language": category.get("language", config.get("language", "en")),
+ "adult": category.get("adult", config.get("adult", False)),
+ }
+ count += 1
+ start_time = datetime.datetime.utcnow()
+ config, drive = src.functions.credentials.refreshCredentials(config)
+ LOGGER.info(
+ "\033[32mBUILDING METADATA FOR CATEGORY %s/%s %s...\033[0m\n"
+ % (count, len(config["category_list"]), category["name"])
+ )
+ try:
+ root = (
+ drive.files()
+ .get(fileId=category["id"], supportsAllDrives=True)
+ .execute()
+ )
+ except Exception as e:
+ LOGGER.error(
+ "\033[31mERROR RETRIEVING FOLDER '%s'!\033[0m" % (category["name"]),
+ )
+ LOGGER.error(str(e))
+ if category["type"] == "Movies":
+ tree = root
+ tree["type"] = "directory"
+ tree["children"] = []
+ tmp_metadata = src.functions.drivetools.driveWalk(
+ root, drive, root, "video"
+ )
+ tmp_metadata["categoryInfo"] = category
+ tmp_metadata["length"] = len(tmp_metadata["children"])
+ tmp_metadata["buildTime"] = str(datetime.datetime.utcnow())
+ if category.get("anilist") == True:
+ items_count = 0
+ items_length = len(tmp_metadata["children"])
+ for item in tmp_metadata["children"]:
+ items_count += 1
+ LOGGER.info(
+ "\033[93mSCRAPING %s/%s %s...\033[0m"
+ % (items_count, items_length, item["name"]),
+ )
+ if item["type"] == "file":
+ title, year = parseMovie(item["name"])
+ if title == None:
+ title = item["name"]
+ if year == None:
+ year = ""
+ item["api"] = "anilist"
+ (
+ item["adult"],
+ item["apiId"],
+ item["backdropPath"],
+ item["genres"],
+ item["language"],
+ item["overview"],
+ item["popularity"],
+ item["posterPath"],
+ item["releaseDate"],
+ item["title"],
+ item["voteAverage"],
+ ) = mediaIdentifier(
+ ider_vars,
+ title,
+ year,
+ movie=True,
+ tv=False,
+ anime=True,
+ )
+ else:
+ items_count = 0
+ items_length = len(tmp_metadata["children"])
+ for item in tmp_metadata["children"]:
+ items_count += 1
+ LOGGER.info(
+ "\033[93mSCRAPING %s/%s %s...\033[0m"
+ % (items_count, items_length, item["name"])
+ )
+ if item["type"] == "file":
+ title, year = parseMovie(item["name"])
+ if title == None:
+ title = item["name"]
+ if year == None:
+ year = ""
+ item["api"] = "tmdb"
+ (
+ item["adult"],
+ item["apiId"],
+ item["backdropPath"],
+ item["genres"],
+ item["language"],
+ item["overview"],
+ item["popularity"],
+ item["posterPath"],
+ item["releaseDate"],
+ item["title"],
+ item["voteAverage"],
+ ) = mediaIdentifier(
+ ider_vars,
+ title,
+ year,
+ movie=True,
+ tv=False,
+ anime=False,
+ )
+
+ placeholder_metadata.append(tmp_metadata)
+ elif category["type"] == "TV Shows":
+ if root["mimeType"] == "application/vnd.google-apps.folder":
+ if config.get("build_type") == "full":
+ root["type"] = "directory"
+ root["children"] = []
+ for item in src.functions.drivetools.driveIter(
+ root, drive, "video"
+ ):
+ if root["mimeType"] == "application/vnd.google-apps.folder":
+ item["children"] = []
+ for x in src.functions.drivetools.driveIter(
+ item, drive, "video"
+ ):
+ if (
+ x["mimeType"]
+ == "application/vnd.google-apps.folder"
+ ):
+ x["children"] = []
+ for y in src.functions.drivetools.driveIter(
+ x, drive, "video"
+ ):
+ if "video" in y["mimeType"]:
+ x["children"].append(y)
+ item["children"].append(x)
+ root["children"].append(item)
+ else:
+ root["type"] = "directory"
+ root["children"] = []
+ for item in src.functions.drivetools.driveIter(
+ root, drive, "video"
+ ):
+ if root["mimeType"] == "application/vnd.google-apps.folder":
+ root["children"].append(item)
+ tmp_metadata = root
+ tmp_metadata["categoryInfo"] = category
+ tmp_metadata["length"] = len(tmp_metadata["children"])
+ tmp_metadata["buildTime"] = str(datetime.datetime.utcnow())
+ if category.get("anilist") == True:
+ items_count = 0
+ items_length = len(tmp_metadata["children"])
+ for item in tmp_metadata["children"]:
+ items_count += 1
+ LOGGER.info(
+ "\033[93mSCRAPING %s/%s %s...\033[0m"
+ % (items_count, items_length, item["name"]),
+ )
+ if item["type"] == "directory":
+ title, year = parseTV(item["name"])
+ if title == None:
+ title = item["name"]
+ if year == None:
+ year = ""
+ item["api"] = "anilist"
+ (
+ item["adult"],
+ item["apiId"],
+ item["backdropPath"],
+ item["genres"],
+ item["language"],
+ item["overview"],
+ item["popularity"],
+ item["posterPath"],
+ item["releaseDate"],
+ item["title"],
+ item["voteAverage"],
+ ) = mediaIdentifier(
+ ider_vars,
+ title,
+ year,
+ movie=False,
+ tv=True,
+ anime=True,
+ )
+ else:
+ items_count = 0
+ items_length = len(tmp_metadata["children"])
+ for item in tmp_metadata["children"]:
+ items_count += 1
+ LOGGER.info(
+ "\033[93mSCRAPING %s/%s %s...\033[0m"
+ % (items_count, items_length, item["name"]),
+ )
+ if item["type"] == "directory":
+ title, year = parseTV(item["name"])
+ if title == None:
+ title = item["name"]
+ if year == None:
+ year = ""
+ item["api"] = "tmdb"
+ (
+ item["apiId"],
+ item["backdropPath"],
+ item["genres"],
+ item["language"],
+ item["overview"],
+ item["popularity"],
+ item["posterPath"],
+ item["releaseDate"],
+ item["title"],
+ item["voteAverage"],
+ ) = mediaIdentifier(
+ ider_vars,
+ title,
+ year,
+ movie=False,
+ tv=True,
+ anime=False,
+ )
+
+ placeholder_metadata.append(tmp_metadata)
+ LOGGER.info("\nDONE IN %s.\n" % (str(datetime.datetime.utcnow() - start_time)))
+
+ metadata = placeholder_metadata
+
+ with open("./metadata.json", "w+") as w:
+ json.dump(obj=metadata, fp=w, sort_keys=True, indent=4)
+
+ if os.getenv("LIBDRIVE_CLOUD"):
+ config, drive = src.functions.credentials.refreshCredentials(config)
+ params = {
+ "supportsAllDrives": True,
+ "includeItemsFromAllDrives": True,
+ "fields": "files(id,name)",
+ "q": "'%s' in parents and trashed = false and mimeType = 'application/json'"
+ % (os.getenv("LIBDRIVE_CLOUD")),
+ }
+ files = drive.files().list(**params).execute()["files"]
+ metadata_file = next((i for i in files if i["name"] == "metadata.json"), None)
+ file_metadata = {
+ "name": "metadata.json",
+ "mimeType": "application/json",
+ "parents": [os.getenv("LIBDRIVE_CLOUD")],
+ }
+ media = googleapiclient.http.MediaFileUpload(
+ "./metadata.json", mimetype="application/json", resumable=True
+ )
+ if metadata_file:
+ params = {
+ "fileId": metadata_file["id"],
+ "media_body": media,
+ "supportsAllDrives": True,
+ }
+ drive.files().update(**params).execute()
+ else:
+ params = {
+ "body": file_metadata,
+ "media_body": media,
+ "supportsAllDrives": True,
+ }
+ drive.files().create(**params).execute()
+ return metadata
+
+
+def jsonExtract(obj, key, val, multi=False):
+ arr = []
+
+ def extract(obj, arr, key, val):
+ if isinstance(obj, dict):
+ for k, v in obj.items():
+ if isinstance(v, (dict, list)):
+ extract(v, arr, key, val)
+ elif key and val:
+ if k == key and v == val:
+ arr.append(obj)
+ elif key or val:
+ if k == key or v == val:
+ arr.append(obj)
+ elif isinstance(obj, list):
+ for item in obj:
+ extract(item, arr, key, val)
+ return arr
+
+ results = extract(obj, arr, key, val)
+ if multi == False and len(results) > 0:
+ return results[0]
+ elif multi == True and len(results) > 0:
+ return results
+ else:
+ return None
diff --git a/src/functions/tests.py b/src/functions/tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..906c08beeed84161b547f11cab9ea9a1fa927776
--- /dev/null
+++ b/src/functions/tests.py
@@ -0,0 +1,106 @@
+import json
+import sys
+
+import requests
+
+
+def tmdb_test(config):
+ if config.get("tmdb_api_key") != None and config.get("tmdb_api_key") != "":
+ res = requests.get(
+ "https://api.themoviedb.org/3/?api_key=%s" % (config.get("tmdb_api_key"))
+ ).json()
+ if res.get("status_code") != 34:
+ print("\033[31mERROR! THE TMDB_API_KEY PROVIDED IS INCORRECT!\033[0m")
+ else:
+ print("\033[31mERROR! YOU HAVE NOT PROVIDED A TMDB_API_KEY!\033[0m")
+ sys.exit()
+
+
+def category_list_test(config):
+ passed = True
+ if isinstance(config.get("category_list"), list):
+ for item in config.get("category_list"):
+ if (
+ (isinstance(item, dict))
+ and (item.get("id", "") != "")
+ and (item.get("name", "") != "")
+ and (item.get("type") in ["Movies", "TV Shows"])
+ ):
+ pass
+ else:
+ passed = False
+ break
+ else:
+ passed = False
+ if passed == False:
+ print("\033[31mERROR! YOUR CATEGORY_LIST IS NOT VALID!\033[0m")
+ sys.exit()
+
+
+def account_list_test(config):
+ passed = True
+ if isinstance(config.get("account_list"), list):
+ for item in config.get("account_list"):
+ if (
+ (isinstance(item, dict))
+ and (item.get("auth", "") != "")
+ and (item.get("username", "") != "")
+ and (item.get("password", "") != "")
+ ):
+ pass
+ else:
+ passed = False
+ break
+ else:
+ passed = False
+ if passed == False:
+ print("\033[31mERROR! YOUR ACCOUNT_LIST IS NOT VALID!\033[0m")
+ sys.exit()
+
+
+def cloudflare_test(config):
+ if config.get("cloudflare") not in ["local", "", None]:
+ if not config.get("cloudflare").startswith("http") and not config.get(
+ "cloudflare"
+ ).startswith("//"):
+ print(
+ "\033[31mERROR! YOUR CLOUDFLARE URL IS NOT VALID! THE URL MUST START WITH HTTP:// OR HTTPS://\033[0m"
+ )
+ sys.exit()
+ res = requests.get(config.get("cloudflare")).text
+ if not res.startswith("libDrive"):
+ print(
+ "\033[31mERROR! YOUR WEB HOSTED CLOUDFLARE DEPLOYMENT IS NOT RETURNING A VALID RESPONSE! MAKE SURE IT IS CORRECTLY CONFIGURED!\033[0m"
+ )
+ sys.exit()
+ elif config.get("cloudflare") == "local":
+ try:
+ res = requests.get("http://localhost:31146").text
+ if not res.startswith("libDrive"):
+ print(
+ "\033[31mERROR! YOUR LOCALLY HOSTED CLOUDFLARE DEPLOYMENT IS NOT RETURNING A VALID RESPONSE! MAKE SURE IT IS CORRECTLY CONFIGURED!\033[0m"
+ )
+ sys.exit()
+ except:
+ print(
+ "\033[31mERROR! YOUR LOCALLY HOSTED CLOUDFLARE DEPLOYMENT IS NOT RETURNING A VALID RESPONSE! MAKE SURE IT IS CORRECTLY CONFIGURED!\033[0m"
+ )
+ sys.exit()
+ else:
+ try:
+ res = requests.get("http://localhost:31146").text
+ if res:
+ if res.startswith("libDrive"):
+ print(
+ "\033[33mA LOCALLY HOSTED CLOUDFLARE WORKER WAS FOUND, IT WILL BE USED INSTEAD.\033[0m"
+ )
+ config["cloudflare"] = "local"
+ with open("config.json", "w+") as w:
+ json.dump(obj=config, fp=w, sort_keys=True, indent=4)
+ else:
+ print(
+ "\033[31mERROR! YOUR LOCALLY HOSTED CLOUDFLARE DEPLOYMENT IS NOT RETURNING A VALID RESPONSE! MAKE SURE IT IS CORRECTLY CONFIGURED!\033[0m"
+ )
+ sys.exit()
+ except:
+ pass
diff --git a/src/routes/__init__.py b/src/routes/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/routes/__pycache__/__init__.cpython-311.pyc b/src/routes/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ae751603e7c13738cfe56810e106bc6a09d812a5
Binary files /dev/null and b/src/routes/__pycache__/__init__.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/auth.cpython-311.pyc b/src/routes/__pycache__/auth.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d0fcd73a6d50d8e33e3460a1d4e4f800c873d5ef
Binary files /dev/null and b/src/routes/__pycache__/auth.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/config.cpython-311.pyc b/src/routes/__pycache__/config.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4d620476af2d26c54b1d5bb0fa6e93709ebb671f
Binary files /dev/null and b/src/routes/__pycache__/config.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/debug.cpython-311.pyc b/src/routes/__pycache__/debug.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e2dd4a133defc5cd32494180d7cb92d04466a23e
Binary files /dev/null and b/src/routes/__pycache__/debug.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/download.cpython-311.pyc b/src/routes/__pycache__/download.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bd35798a2e0ea2c16a6f9957424bfd64b0dd255a
Binary files /dev/null and b/src/routes/__pycache__/download.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/environment.cpython-311.pyc b/src/routes/__pycache__/environment.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e070f70ddd7b82de6e7fbdc567c865754681fedd
Binary files /dev/null and b/src/routes/__pycache__/environment.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/image.cpython-311.pyc b/src/routes/__pycache__/image.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..548681eadcc2eefdf0ad03620d1c9441f084a248
Binary files /dev/null and b/src/routes/__pycache__/image.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/metadata.cpython-311.pyc b/src/routes/__pycache__/metadata.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..80b68717055db70ee12f4dbdd75ed6c12b937a59
Binary files /dev/null and b/src/routes/__pycache__/metadata.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/ping.cpython-311.pyc b/src/routes/__pycache__/ping.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..301f63087cf6054b60abcf80073440d8541a73e6
Binary files /dev/null and b/src/routes/__pycache__/ping.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/rebuild.cpython-311.pyc b/src/routes/__pycache__/rebuild.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..36f4622d1d4449cc8de81c9c207bc4d1466f5d56
Binary files /dev/null and b/src/routes/__pycache__/rebuild.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/redirectdownload.cpython-311.pyc b/src/routes/__pycache__/redirectdownload.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..40273f60e40cab8dfaea6a9944d166afb40c2d12
Binary files /dev/null and b/src/routes/__pycache__/redirectdownload.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/restart.cpython-311.pyc b/src/routes/__pycache__/restart.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..caa7b8c222ede4bab90774eec93b689746244f1f
Binary files /dev/null and b/src/routes/__pycache__/restart.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/signup.cpython-311.pyc b/src/routes/__pycache__/signup.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..727a6aa66e34fa82e8e685ce031edeb981a1d882
Binary files /dev/null and b/src/routes/__pycache__/signup.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/streammap.cpython-311.pyc b/src/routes/__pycache__/streammap.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7078f3c1b8026ed5065047413f1e78e66597af41
Binary files /dev/null and b/src/routes/__pycache__/streammap.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/subtitledownload.cpython-311.pyc b/src/routes/__pycache__/subtitledownload.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6288a81e74ab9c07e880b23541b55f41adce4ec3
Binary files /dev/null and b/src/routes/__pycache__/subtitledownload.cpython-311.pyc differ
diff --git a/src/routes/__pycache__/trailer.cpython-311.pyc b/src/routes/__pycache__/trailer.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e2c646b8342874c53e2b8be2c75bd67acb086ae4
Binary files /dev/null and b/src/routes/__pycache__/trailer.cpython-311.pyc differ
diff --git a/src/routes/auth.py b/src/routes/auth.py
new file mode 100644
index 0000000000000000000000000000000000000000..650331e677ec949a6b69ffee70ee8b5384fade0e
--- /dev/null
+++ b/src/routes/auth.py
@@ -0,0 +1,98 @@
+import flask
+import src.functions.config
+
+authBP = flask.Blueprint("auth", __name__)
+
+
+@authBP.route("/api/v1/auth")
+async def authFunction():
+ a = flask.request.args.get("a") # AUTH
+ p = flask.request.args.get("p") # PASSWORD
+ u = flask.request.args.get("u") # USERNAME
+ config = src.functions.config.readConfig()
+
+ rules = flask.request.args.get("rules") # RULES
+ if config.get("auth") == False:
+ return (
+ flask.jsonify(
+ {
+ "code": 200,
+ "content": {"ui_config": config.get("ui_config", {})},
+ "message": "Authentication completed successfully.",
+ "success": True,
+ }
+ ),
+ 200,
+ )
+ elif rules == "signup":
+ if config.get("signup") == True:
+ return (
+ flask.jsonify(
+ {
+ "code": 202,
+ "content": True,
+ "message": "Signup is available on this server.",
+ "success": True,
+ }
+ ),
+ 202,
+ )
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 202,
+ "content": False,
+ "message": "Signup is not available on this server.",
+ "success": True,
+ }
+ ),
+ 202,
+ )
+ elif any(u == account["username"] for account in config["account_list"]) and any(
+ p == account["password"] for account in config["account_list"]
+ ):
+ account = next(
+ (
+ i
+ for i in config["account_list"]
+ if i["username"] == u and i["password"] == p
+ ),
+ None,
+ )
+ return (
+ flask.jsonify(
+ {
+ "code": 200,
+ "content": {"auth": account["auth"], "ui_config": config.get("ui_config", {})},
+ "message": "Authentication was successful.",
+ "success": True,
+ }
+ ),
+ 200,
+ )
+ elif any(a == account["auth"] for account in config["account_list"]):
+ account = next((i for i in config["account_list"] if i["auth"] == a), None)
+ return (
+ flask.jsonify(
+ {
+ "code": 200,
+ "content": account,
+ "message": "Authentication was successful.",
+ "success": True,
+ }
+ ),
+ 200,
+ )
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 401,
+ "content": None,
+ "message": "The username and/or password provided was incorrect.",
+ "success": False,
+ }
+ ),
+ 401,
+ )
diff --git a/src/routes/config.py b/src/routes/config.py
new file mode 100644
index 0000000000000000000000000000000000000000..b16a6a42adbed3628b5c762402fa23a659892bb6
--- /dev/null
+++ b/src/routes/config.py
@@ -0,0 +1,73 @@
+import datetime
+
+import flask
+import src.functions.config
+
+configBP = flask.Blueprint("config", __name__)
+
+import main
+
+
+@configBP.route("/api/v1/config", methods=["GET", "POST"])
+async def configFunction():
+ secret = flask.request.args.get("secret") # SECRET
+ config = src.functions.config.readConfig()
+
+ if flask.request.method == "GET":
+ if secret == config.get("secret_key"):
+ return (
+ flask.jsonify(
+ {
+ "code": 200,
+ "content": config,
+ "message": "Config authentication completed successfully.",
+ "success": True,
+ }
+ ),
+ 200,
+ )
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 401,
+ "message": "The secret key provided was incorrect.",
+ "success": False,
+ }
+ ),
+ 401,
+ )
+ elif flask.request.method == "POST":
+ if secret == None:
+ secret = ""
+ if secret == config.get("secret_key"):
+ data = flask.request.json
+ data["token_expiry"] = str(datetime.datetime.utcnow())
+ if data.get("category_list") != config.get("category_list"):
+ src.functions.config.updateConfig(data)
+ main.threaded_metadata()
+ else:
+ src.functions.config.updateConfig(data)
+ return (
+ flask.jsonify(
+ {
+ "code": 200,
+ "content": None,
+ "message": "libDrive is updating your config",
+ "success": True,
+ }
+ ),
+ 200,
+ )
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 401,
+ "content": None,
+ "message": "The secret key provided was incorrect.",
+ "success": False,
+ }
+ ),
+ 401,
+ )
diff --git a/src/routes/debug.py b/src/routes/debug.py
new file mode 100644
index 0000000000000000000000000000000000000000..b53560575e7afe2ca5f40d5d4864161b0861f8fe
--- /dev/null
+++ b/src/routes/debug.py
@@ -0,0 +1,288 @@
+import datetime
+import json
+import mimetypes
+import os
+import re
+import stat
+
+import flask
+import flask.views
+import humanize
+import pathlib2
+import src.functions.config
+import werkzeug.utils
+
+debugBP = flask.Blueprint("debug", __name__)
+
+root = os.getcwd()
+
+config = src.functions.config.readConfig()
+
+ignored = [
+ ".bzr",
+ "$RECYCLE.BIN",
+ ".DAV",
+ ".DS_Store",
+ ".git",
+ ".hg",
+ ".htaccess",
+ ".htpasswd",
+ ".Spotlight-V100",
+ ".svn",
+ "__MACOSX",
+ "ehthumbs.db",
+ "robots.txt",
+ "Thumbs.db",
+ "thumbs.tps",
+]
+datatypes = {
+ "audio": "m4a,mp3,oga,ogg,webma,wav",
+ "archive": "7z,zip,rar,gz,tar",
+ "image": "gif,ico,jpe,jpeg,jpg,png,svg,webp",
+ "pdf": "pdf",
+ "quicktime": "3g2,3gp,3gp2,3gpp,mov,qt",
+ "source": "atom,bat,bash,c,cmd,coffee,css,hml,js,json,java,less,markdown,md,php,pl,py,rb,rss,sass,scpt,swift,scss,sh,xml,yml,plist,log,conf,env",
+ "text": "txt",
+ "video": "mp4,m4v,ogv,webm",
+ "website": "htm,html,mhtm,mhtml,xhtm,xhtml",
+}
+icontypes = {
+ "fa-music": "m4a,mp3,oga,ogg,webma,wav",
+ "fa-archive": "7z,zip,rar,gz,tar",
+ "fa-picture-o": "gif,ico,jpe,jpeg,jpg,png,svg,webp",
+ "fa-file-text": "pdf",
+ "fa-film": "3g2,3gp,3gp2,3gpp,mov,qt",
+ "fa-code": "atom,plist,bat,bash,c,cmd,coffee,css,hml,js,json,java,less,markdown,md,php,pl,py,rb,rss,sass,scpt,swift,scss,sh,xml,yml",
+ "fa-file-text-o": "txt",
+ "fa-film": "mp4,m4v,ogv,webm",
+ "fa-globe": "htm,html,mhtm,mhtml,xhtm,xhtml",
+}
+
+
+@debugBP.app_template_filter("size_fmt")
+def size_fmt(size):
+ return humanize.naturalsize(size)
+
+
+@debugBP.app_template_filter("time_fmt")
+def time_desc(timestamp):
+ mdate = datetime.datetime.fromtimestamp(timestamp)
+ str = mdate.strftime("%Y-%m-%d %H:%M:%S")
+ return str
+
+
+@debugBP.app_template_filter("data_fmt")
+def data_fmt(filename):
+ t = "unknown"
+ for type, exts in datatypes.items():
+ if filename.split(".")[-1] in exts:
+ t = type
+ return t
+
+
+@debugBP.app_template_filter("icon_fmt")
+def icon_fmt(filename):
+ i = "fa-file-o"
+ for icon, exts in icontypes.items():
+ if filename.split(".")[-1] in exts:
+ i = icon
+ return i
+
+
+@debugBP.app_template_filter("humanize")
+def time_humanize(timestamp):
+ mdate = datetime.datetime.utcfromtimestamp(timestamp)
+ return humanize.naturaltime(mdate)
+
+
+def get_type(mode):
+ if stat.S_ISDIR(mode) or stat.S_ISLNK(mode):
+ type = "dir"
+ else:
+ type = "file"
+ return type
+
+
+def partial_response(path, start, end=None):
+ file_size = os.path.getsize(path)
+
+ if end is None:
+ end = file_size - start - 1
+ end = min(end, file_size - 1)
+ length = end - start + 1
+
+ with open(path, "rb") as fd:
+ fd.seek(start)
+ bytes = fd.read(length)
+ assert len(bytes) == length
+
+ response = flask.Response(
+ bytes,
+ 206,
+ mimetype=mimetypes.guess_type(path)[0],
+ direct_passthrough=True,
+ )
+ response.headers.add(
+ "Content-Range",
+ "bytes {0}-{1}/{2}".format(
+ start,
+ end,
+ file_size,
+ ),
+ )
+ response.headers.add("Accept-Ranges", "bytes")
+ return response
+
+
+def get_range(request):
+ range = request.headers.get("Range")
+ m = re.match("bytes=(?P\d+)-(?P\d+)?", range)
+ if m:
+ start = m.group("start")
+ end = m.group("end")
+ start = int(start)
+ if end is not None:
+ end = int(end)
+ return start, end
+ else:
+ return 0, None
+
+
+class PathView(flask.views.MethodView):
+ def get(self, p=""):
+ if flask.request.args.get("secret") == config.get("secret_key"):
+ hide_dotfile = flask.request.args.get(
+ "hide-dotfile", flask.request.cookies.get("hide-dotfile", "no")
+ )
+
+ path = os.path.join(root, p)
+
+ if os.path.isdir(path):
+ contents = []
+ total = {"size": 0, "dir": 0, "file": 0}
+ for filename in os.listdir(path):
+ if filename in ignored:
+ continue
+ if hide_dotfile == "yes" and filename[0] == ".":
+ continue
+ filepath = os.path.join(path, filename)
+ relativepath = os.path.join(p, filename)
+ stat_res = os.stat(filepath)
+ info = {}
+ info["name"] = filename
+ info["path"] = relativepath
+ info["mtime"] = stat_res.st_mtime
+ ft = get_type(stat_res.st_mode)
+ info["type"] = ft
+ total[ft] += 1
+ sz = stat_res.st_size
+ info["size"] = sz
+ total["size"] += sz
+ contents.append(info)
+ page = flask.render_template(
+ "browser.html",
+ path=p,
+ secret=flask.request.args.get("secret"),
+ contents=contents,
+ total=total,
+ hide_dotfile=hide_dotfile,
+ )
+ res = flask.make_response(page, 200)
+ res.set_cookie("hide-dotfile", hide_dotfile, max_age=16070400)
+ elif os.path.isfile(path):
+ if "Range" in flask.request.headers:
+ start, end = get_range(flask.request)
+ res = partial_response(path, start, end)
+ else:
+ res = flask.send_file(path)
+ else:
+ res = flask.make_response("Not found", 404)
+ return res
+ else:
+ return "The secret key provided was incorrect. You do not have permission to access this page."
+
+ def put(self, p=""):
+ if flask.request.args.get("secret") == config.get("secret_key"):
+ path = os.path.join(root, p)
+ dir_path = os.path.dirname(path)
+ pathlib2.Path(dir_path).mkdir(parents=True, exist_ok=True)
+
+ info = {}
+ if os.path.isdir(dir_path):
+ try:
+ filename = werkzeug.utils.secure_filename(os.path.basename(path))
+ with open(os.path.join(dir_path, filename), "wb") as f:
+ f.write(flask.request.stream.read())
+ except Exception as e:
+ info["status"] = "error"
+ info["msg"] = str(e)
+ else:
+ info["status"] = "success"
+ info["msg"] = "File Saved"
+ else:
+ info["status"] = "error"
+ info["msg"] = "Invalid Operation"
+ res = flask.make_response(json.JSONEncoder().encode(info), 201)
+ res.headers.add("Content-type", "application/json")
+ return res
+ else:
+ return "The secret key provided was incorrect. You do not have permission to access this page."
+
+ def post(self, p=""):
+ if flask.request.args.get("secret") == config.get("secret_key"):
+ path = os.path.join(root, p)
+ pathlib2.Path(path).mkdir(parents=True, exist_ok=True)
+
+ info = {}
+ if os.path.isdir(path):
+ files = flask.request.files.getlist("files[]")
+ for file in files:
+ try:
+ filename = werkzeug.utils.secure_filename(file.filename)
+ file.save(os.path.join(path, filename))
+ except Exception as e:
+ info["status"] = "error"
+ info["msg"] = str(e)
+ else:
+ info["status"] = "success"
+ info["msg"] = "File Saved"
+ else:
+ info["status"] = "error"
+ info["msg"] = "Invalid Operation"
+ res = flask.make_response(json.JSONEncoder().encode(info), 200)
+ res.headers.add("Content-type", "application/json")
+ return res
+ else:
+ return "The secret key provided was incorrect. You do not have permission to access this page."
+
+ def delete(self, p=""):
+ if flask.request.args.get("secret") == config.get("secret_key"):
+ path = os.path.join(root, p)
+ dir_path = os.path.dirname(path)
+ pathlib2.Path(dir_path).mkdir(parents=True, exist_ok=True)
+
+ info = {}
+ if os.path.isdir(dir_path):
+ try:
+ filename = werkzeug.utils.secure_filename(os.path.basename(path))
+ os.remove(os.path.join(dir_path, filename))
+ os.rmdir(dir_path)
+ except Exception as e:
+ info["status"] = "error"
+ info["msg"] = str(e)
+ else:
+ info["status"] = "success"
+ info["msg"] = "File Deleted"
+ else:
+ info["status"] = "error"
+ info["msg"] = "Invalid Operation"
+ res = flask.make_response(json.JSONEncoder().encode(info), 204)
+ res.headers.add("Content-type", "application/json")
+ return res
+ else:
+ return "The secret key provided was incorrect. You do not have permission to access this page."
+
+
+path_view = PathView.as_view("path_view")
+debugBP.add_url_rule("/api/v1/debug/", view_func=path_view)
+debugBP.add_url_rule("/api/v1/debug/", view_func=path_view)
diff --git a/src/routes/download.py b/src/routes/download.py
new file mode 100644
index 0000000000000000000000000000000000000000..37891fa586c1629a88190ef5e98f7da594f56288
--- /dev/null
+++ b/src/routes/download.py
@@ -0,0 +1,80 @@
+from oauth2client import client
+import base64
+import datetime
+import json
+
+import flask
+from flask import request, Response
+import requests
+from pydrive.auth import GoogleAuth
+from pydrive.drive import GoogleDrive
+import src.functions.config
+
+downloadBP = flask.Blueprint("download", __name__)
+
+
+def save_response_content(response, destination):
+ CHUNK_SIZE = 32768
+
+ with open(destination, "wb") as f:
+ for chunk in response.iter_content(CHUNK_SIZE):
+ if chunk: # filter out keep-alive new chunks
+ f.write(chunk)
+
+
+@downloadBP.route("/api/v1/download/")
+async def downloadFunction(name):
+ a = flask.request.args.get("a") # AUTH
+ config = src.functions.config.readConfig()
+
+ gauth = GoogleAuth()
+ content = '{"access_token": "ya29.a0AXooCgtLK5HzYMtRs4R9J7FRZSGR3i5jUkeMeVhGjorlrgq_BupFi8d9upA2skYC5FofxUqo23Nivk_P_Hy8eRn0DWM3deSKoiWMhA3lsy05JVakD0vd2fPRaFOXfRV20jAEGt6ql9yy_0up3Y9z8u9yXZ28IUxRRZAHaCgYKASQSARISFQHGX2MipVyGD4fFFZJWXGvyd-sJnQ0171", "client_id": "895306463817-h14aujg3ohgptue5safg2d81530qs4c3.apps.googleusercontent.com", "client_secret": "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", "refresh_token": "1//0gsu0CorccmScCgYIARAAGBASNwF-L9IrF-TDYDXR_MTQGAGGf4fY4BBBSBUipsz_7c0B6HjmRYZV3uxPVU4CAJjqWoWBm0T4pxA", "token_expiry": "2024-05-25T11:14:56Z", "token_uri": "https://oauth2.googleapis.com/token", "user_agent": null, "revoke_uri": "https://oauth2.googleapis.com/revoke", "id_token": null, "id_token_jwt": null, "token_response": {"access_token": "ya29.a0AXooCgtLK5HzYMtRs4R9J7FRZSGR3i5jUkeMeVhGjorlrgq_BupFi8d9upA2skYC5FofxUqo23Nivk_P_Hy8eRn0DWM3deSKoiWMhA3lsy05JVakD0vd2fPRaFOXfRV20jAEGt6ql9yy_0up3Y9z8u9yXZ28IUxRRZAHaCgYKASQSARISFQHGX2MipVyGD4fFFZJWXGvyd-sJnQ0171", "expires_in": 3599, "refresh_token": "1//0gsu0CorccmScCgYIARAAGBASNwF-L9IrF-TDYDXR_MTQGAGGf4fY4BBBSBUipsz_7c0B6HjmRYZV3uxPVU4CAJjqWoWBm0T4pxA", "scope": "https://www.googleapis.com/auth/drive", "token_type": "Bearer"}, "scopes": ["https://www.googleapis.com/auth/drive"], "token_info_uri": "https://oauth2.googleapis.com/tokeninfo", "invalid": false, "_class": "OAuth2Credentials", "_module": "oauth2client.client"}'
+ gauth.credentials = client.Credentials.new_from_json(content)
+ if gauth.access_token_expired:
+ # Refresh them if expired
+ gauth.Refresh()
+ else:
+ gauth.Authorize()
+ DRIVE = GoogleDrive(gauth)
+
+ def download_file(response):
+ print("Started Streamming")
+ for chunk in response.iter_content(4096):
+ yield chunk
+
+ def get_confirm_token(response):
+ for key, value in response.cookies.items():
+ if key.startswith("download_warning"):
+ return value
+
+ return None
+
+ if (
+ datetime.datetime.strptime(
+ config.get("token_expiry", datetime.datetime.utcnow()),
+ "%Y-%m-%d %H:%M:%S.%f",
+ )
+ <= datetime.datetime.utcnow()
+ ):
+ config, drive = src.functions.credentials.refreshCredentials(config)
+ with open("config.json", "w+") as w:
+ json.dump(obj=config, fp=w, sort_keys=True, indent=4)
+
+ file_id = flask.request.args.get("id")
+ file_obj = DRIVE.CreateFile({'id': file_id})
+ file_obj.Upload()
+ download_url = file_obj.metadata.get('downloadUrl')
+ # download_url = download_url.replace("v2", "v3").replace("&source=downloadUrl", "") + "&supportsAllDrives=true&key=AIzaSyDF0v4AzL3y0beyAadnhbF131CGVlFpFOo"
+ print(download_url)
+ try:
+ file_obj.http = file_obj.auth.Get_Http_Object()
+ credentials = file_obj.http.request.credentials.__dict__
+ # response = requests.get(download_url, stream=True)
+ response = requests.get(download_url, headers={'Authorization': f'{credentials["token_response"]["token_type"]} {credentials["access_token"]}'}, stream=True)
+
+ return download_file(response), {"Content-Type": "video/mp4"}
+ # return flask.Response(
+ # flask.stream_with_context(download_file(response))
+ # )
+ except Exception as e:
+ print("error", e)
diff --git a/src/routes/environment.py b/src/routes/environment.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d7335fe267c27c4e9249dfd78959602b18b65c4
--- /dev/null
+++ b/src/routes/environment.py
@@ -0,0 +1,89 @@
+import flask
+import src.functions.config
+
+environmentBP = flask.Blueprint("environment", __name__)
+
+
+@environmentBP.route("/api/v1/environment")
+async def environmentFunction():
+ a = flask.request.args.get("a") # AUTH
+ config = src.functions.config.readConfig()
+
+ if (
+ any(a == account["auth"] for account in config["account_list"])
+ or config.get("auth") == False
+ ):
+ account = next((i for i in config["account_list"] if i["auth"] == a), None)
+ if account:
+ if account.get("whitelist"):
+ category_list = []
+ for category in config["category_list"]:
+ if any(
+ category["id"] == whitelist
+ for whitelist in account["whitelist"]
+ ):
+ category_list.append(category)
+ else:
+ pass
+ tmp_environment = {
+ "account_list": account,
+ "category_list": category_list,
+ "ui_config": config.get("ui_config"),
+ }
+ return (
+ flask.jsonify(
+ {
+ "code": 200,
+ "content": tmp_environment,
+ "message": "Environment permissions sent successfully.",
+ "success": True,
+ }
+ ),
+ 200,
+ )
+ else:
+ tmp_environment = {
+ "account_list": account,
+ "category_list": config["category_list"],
+ "ui_config": config.get("ui_config"),
+ }
+ return (
+ flask.jsonify(
+ {
+ "code": 200,
+ "content": tmp_environment,
+ "message": "Environment permissions sent successfully.",
+ "success": True,
+ }
+ ),
+ 200,
+ )
+ else:
+ tmp_environment = {
+ "account_list": {"pic": "k"},
+ "category_list": config["category_list"],
+ "ui_config": config.get("ui_config"),
+ }
+ return (
+ flask.jsonify(
+ {
+ "code": 200,
+ "content": tmp_environment,
+ "message": "Environment permissions sent successfully.",
+ "success": True,
+ }
+ ),
+ 200,
+ )
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 401,
+ "content": None,
+ "message": "Your credentials are invalid.",
+ "success": False,
+ }
+ ),
+ 401,
+ )
diff --git a/src/routes/image.py b/src/routes/image.py
new file mode 100644
index 0000000000000000000000000000000000000000..fb3944a810f0d09a94f900b152c09637207e9132
--- /dev/null
+++ b/src/routes/image.py
@@ -0,0 +1,106 @@
+import io
+import re
+
+import flask
+import src.functions.config
+from PIL import Image, ImageDraw, ImageFont
+
+imageBP = flask.Blueprint("image", __name__)
+
+
+@imageBP.route("/api/v1/image/")
+async def imageFunction(image_type):
+ text = flask.request.args.get("text") # TEXT
+ extention = flask.request.args.get("extention") # EXTENTION
+ if image_type == "poster":
+ img = Image.new("RGB", (342, 513), color=(255, 255, 255))
+ draw = ImageDraw.Draw(img)
+
+ font_size = 1
+ font = ImageFont.truetype(
+ font="./build/fonts/Roboto-Regular.ttf", size=font_size
+ )
+ img_fraction = 0.9
+ breakpoint = img_fraction * img.size[0]
+ jumpsize = 75
+ while True:
+ if font.getsize(text)[0] < breakpoint:
+ font_size += jumpsize
+ else:
+ jumpsize = jumpsize // 2
+ font_size -= jumpsize
+ font = ImageFont.truetype(
+ font="./build/fonts/Roboto-Regular.ttf", size=font_size
+ )
+ if jumpsize <= 1:
+ break
+
+ width, height = draw.textsize(text, font=font)
+ draw.text(
+ ((342 - width) / 2, (513 - height) / 2), text, fill="black", font=font
+ )
+ output = io.BytesIO()
+ img.save(output, format=extention)
+ output.seek(0, 0)
+ return flask.send_file(
+ output, mimetype="image/%s" % (extention), as_attachment=False
+ )
+ elif image_type == "backdrop":
+ img = Image.new("RGB", (1280, 720), color=(255, 255, 255))
+ draw = ImageDraw.Draw(img)
+
+ font_size = 1
+ font = ImageFont.truetype(
+ font="./build/fonts/Roboto-Regular.ttf", size=font_size
+ )
+ img_fraction = 0.9
+ breakpoint = img_fraction * img.size[0]
+ jumpsize = 75
+ while True:
+ if font.getsize(text)[0] < breakpoint:
+ font_size += jumpsize
+ else:
+ jumpsize = jumpsize // 2
+ font_size -= jumpsize
+ font = ImageFont.truetype(
+ font="./build/fonts/Roboto-Regular.ttf", size=font_size
+ )
+ if jumpsize <= 1:
+ break
+
+ width, height = draw.textsize(text, font=font)
+ draw.text(
+ ((1280 - width) / 2, (720 - height) / 2), text, fill="black", font=font
+ )
+ output = io.BytesIO()
+ img.save(output, format=extention)
+ output.seek(0, 0)
+ return flask.send_file(
+ output, mimetype="image/%s" % (extention), as_attachment=False
+ )
+ elif image_type == "thumbnail":
+ id = flask.request.args.get("id")
+ config, drive = src.functions.credentials.refreshCredentials(
+ src.functions.config.readConfig()
+ )
+ params = {
+ "fileId": id,
+ "fields": "thumbnailLink",
+ "supportsAllDrives": True,
+ }
+ res = drive.files().get(**params).execute()
+ if res.get("thumbnailLink"):
+ thumbnail = re.sub(r"(s[^s]*)$", "s3840", res["thumbnailLink"])
+ return flask.redirect(thumbnail, code=302)
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 500,
+ "content": None,
+ "message": "The thumbnail does not exist on Google's servers.",
+ "success": False,
+ }
+ ),
+ 500,
+ )
diff --git a/src/routes/metadata.py b/src/routes/metadata.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd2d80767e99ccdd672bf3055a3427a5e8b4eed3
--- /dev/null
+++ b/src/routes/metadata.py
@@ -0,0 +1,310 @@
+import random
+
+import flask
+import src.functions.config
+import src.functions.credentials
+import src.functions.drivetools
+import src.functions.metadata
+
+metadataBP = flask.Blueprint("metadata", __name__)
+
+
+@metadataBP.route("/api/v1/metadata")
+async def metadataFunction():
+ a = flask.request.args.get("a") # AUTH
+ c = flask.request.args.get("c") # CATEGORY
+ g = flask.request.args.get("g") # GENRE
+ id = flask.request.args.get("id") # ID
+ q = flask.request.args.get("q") # QUERY
+ r = flask.request.args.get("r") # RANGE
+ s = flask.request.args.get("s") # SORT-ORDER
+ rmdup = flask.request.args.get("rmdup") # REMOVE DUPLICATES
+ rmnobanner = flask.request.args.get("rmnobanner") # REMOVE NO BANNER
+ config = src.functions.config.readConfig()
+ tmp_metadata = src.functions.metadata.readMetadata(config)
+
+ if (
+ any(a == account["auth"] for account in config["account_list"])
+ or config.get("auth") == False
+ ):
+ account = next((i for i in config["account_list"] if i["auth"] == a), None)
+ whitelisted_categories_metadata = []
+ for category in tmp_metadata:
+ category_config = next(
+ (i for i in config["category_list"] if i["id"] == category["id"]), None
+ )
+ if category_config:
+ if category_config.get("whitelist"):
+ if account["auth"] in category_config.get("whitelist"):
+ whitelisted_categories_metadata.append(category)
+ else:
+ whitelisted_categories_metadata.append(category)
+ else:
+ whitelisted_categories_metadata.append(category)
+ tmp_metadata = whitelisted_categories_metadata
+ whitelisted_accounts_metadata = []
+ if account:
+ if account.get("whitelist"):
+ for x in tmp_metadata:
+ if any(x["id"] == whitelist for whitelist in account["whitelist"]):
+ whitelisted_accounts_metadata.append(x)
+ tmp_metadata = whitelisted_accounts_metadata
+ if c:
+ tmp_metadata = [
+ next((i for i in tmp_metadata if i["categoryInfo"]["name"] == c), None)
+ ]
+ if tmp_metadata:
+ pass
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 400,
+ "content": None,
+ "message": "The category provided could not be found.",
+ "success": False,
+ }
+ ),
+ 400,
+ )
+ if g:
+ index = 0
+ for category in tmp_metadata:
+ tmp_metadata[index]["children"] = [
+ item for item in category["children"] if g in item["genres"]
+ ]
+ index += 1
+ if q:
+ index = 0
+ for category in tmp_metadata:
+ tmp_metadata[index]["children"] = [
+ item
+ for item in category["children"]
+ if q.lower() in item["title"].lower()
+ ]
+ index += 1
+ if s:
+ index = 0
+ for category in tmp_metadata:
+ if s == "alphabet-asc":
+ try:
+ tmp_metadata[index]["children"] = sorted(
+ category["children"], key=lambda k: k["title"]
+ )
+ except:
+ pass
+ elif s == "alphabet-des":
+ try:
+ tmp_metadata[index]["children"] = sorted(
+ category["children"], key=lambda k: k["title"], reverse=True
+ )
+ except:
+ pass
+ elif s == "date-asc":
+ try:
+ tmp_metadata[index]["children"] = sorted(
+ category["children"],
+ key=lambda k: tuple(
+ map(int, k.get("releaseDate", "1900-01-01").split("-"))
+ ),
+ )
+ except:
+ pass
+ elif s == "date-des":
+ try:
+ tmp_metadata[index]["children"] = sorted(
+ category["children"],
+ key=lambda k: tuple(
+ map(int, k.get("releaseDate", "1900-01-01").split("-"))
+ ),
+ reverse=True,
+ )
+ except:
+ pass
+ elif s == "popularity-asc":
+ try:
+ tmp_metadata[index]["children"] = sorted(
+ category["children"],
+ key=lambda k: float(k.get("popularity", 0.0)),
+ )
+ except:
+ pass
+ elif s == "popularity-des":
+ try:
+ tmp_metadata[index]["children"] = sorted(
+ category["children"],
+ key=lambda k: float(k.get("popularity", 0.0)),
+ reverse=True,
+ )
+ except:
+ pass
+ elif s == "vote-asc":
+ try:
+ tmp_metadata[index]["children"] = sorted(
+ category["children"],
+ key=lambda k: float(k.get("voteAverage", 0.0)),
+ )
+ except:
+ pass
+ elif s == "vote-des":
+ try:
+ tmp_metadata[index]["children"] = sorted(
+ category["children"],
+ key=lambda k: float(k.get("voteAverage", 0.0)),
+ reverse=True,
+ )
+ except:
+ pass
+ elif s == "random":
+ try:
+ random.shuffle(tmp_metadata[index]["children"])
+ except:
+ pass
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 400,
+ "content": None,
+ "message": "Bad request! Sorting parameter '%s' does not exist."
+ % (s),
+ "success": False,
+ }
+ ),
+ 400,
+ )
+ index += 1
+ if rmnobanner == "true" or config.get("remove_no_poster") == True:
+ for category in tmp_metadata:
+ tmp_children = []
+ for item in category["children"]:
+ try:
+ if item.get("posterPath") not in ["", None]:
+ tmp_children.append(item)
+ except:
+ pass
+ category["children"] = tmp_children
+ if rmdup == "true" or config.get("remove_duplicates") == True:
+ for category in tmp_metadata:
+ unique = ["null"]
+ tmp_children = []
+ for item in category["children"]:
+ try:
+ if item.get("apiId", "null") not in unique:
+ unique.append(item["apiId"])
+ tmp_children.append(item)
+ elif item.get("apiId") == None:
+ tmp_children.append(item)
+ except:
+ pass
+ category["children"] = tmp_children
+ for x in tmp_metadata:
+ x["length"] = len(x["children"])
+ if id:
+ tmp_metadata = src.functions.metadata.jsonExtract(
+ tmp_metadata, "id", id, False
+ )
+ config, drive = src.functions.credentials.refreshCredentials(config)
+ if tmp_metadata:
+ if config.get("build_type") == "full":
+ if tmp_metadata.get("type") == "directory":
+ tmp_metadata["parent_children"] = []
+ for item in src.functions.drivetools.driveIter(
+ {"id": tmp_metadata["parents"][0]}, drive, "PLACEHOLDER-X"
+ ):
+ if item["mimeType"] == "application/vnd.google-apps.folder":
+ item["type"] = "directory"
+ tmp_metadata["parent_children"].append(item)
+ else:
+ if (
+ tmp_metadata.get("title")
+ and tmp_metadata.get("type") == "directory"
+ ):
+ tmp_metadata["children"] = []
+ for item in src.functions.drivetools.driveIter(
+ tmp_metadata, drive, "video"
+ ):
+ if item["mimeType"] == "application/vnd.google-apps.folder":
+ item["type"] = "directory"
+ tmp_metadata["children"].append(item)
+ else:
+ item["type"] = "file"
+ tmp_metadata["children"].append(item)
+ elif tmp_metadata.get("type") == "directory":
+ tmp_metadata["parent_children"] = []
+ for item in src.functions.drivetools.driveIter(
+ {"id": tmp_metadata["parents"][0]}, drive, "PLACEHOLDER-X"
+ ):
+ if item["mimeType"] == "application/vnd.google-apps.folder":
+ item["type"] = "directory"
+ tmp_metadata["parent_children"].append(item)
+ return (
+ flask.jsonify(
+ {
+ "code": 200,
+ "content": tmp_metadata,
+ "message": "Metadata parsed successfully.",
+ "success": True,
+ }
+ ),
+ 200,
+ )
+ tmp_metadata = (
+ drive.files()
+ .get(
+ fileId=id, supportsAllDrives=True, fields="id,name,mimeType,parents"
+ )
+ .execute()
+ )
+ if tmp_metadata["mimeType"] == "application/vnd.google-apps.folder":
+ tmp_metadata["type"] = "directory"
+ tmp_metadata["children"] = []
+ tmp_metadata["parent_children"] = []
+ for item in src.functions.drivetools.driveIter(
+ tmp_metadata, drive, "video"
+ ):
+ if (
+ tmp_metadata.get("mimeType")
+ == "application/vnd.google-apps.folder"
+ ):
+ tmp_metadata["type"] = "directory"
+ tmp_metadata["children"].append(item)
+ else:
+ tmp_metadata["type"] = "file"
+ tmp_metadata["children"].append(item)
+ for item in src.functions.drivetools.driveIter(
+ {"id": tmp_metadata["parents"][0]}, drive, "PLACEHOLDER-X"
+ ):
+ if item["mimeType"] == "application/vnd.google-apps.folder":
+ item["type"] = "directory"
+ tmp_metadata["parent_children"].append(item)
+ if r:
+ index = 0
+ for category in tmp_metadata:
+ tmp_metadata[index]["children"] = eval(
+ "category['children']" + "[" + r + "]"
+ )
+ index += 1
+ return (
+ flask.jsonify(
+ {
+ "code": 200,
+ "content": tmp_metadata,
+ "message": "Metadata parsed successfully.",
+ "success": True,
+ }
+ ),
+ 200,
+ )
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 401,
+ "content": None,
+ "message": "Your credentials are invalid.",
+ "success": False,
+ }
+ ),
+ 401,
+ )
diff --git a/src/routes/ping.py b/src/routes/ping.py
new file mode 100644
index 0000000000000000000000000000000000000000..4b1584bec383675f27ec702346156820a2707270
--- /dev/null
+++ b/src/routes/ping.py
@@ -0,0 +1,33 @@
+import datetime
+
+import flask
+
+pingBP = flask.Blueprint("ping", __name__)
+
+
+@pingBP.route("/api/v1/ping")
+async def pingFunction():
+ date = flask.request.args.get("date")
+ if date:
+ send = datetime.datetime.strptime(date, "%Y-%m-%dT%H:%M:%S.%fZ")
+ receive = datetime.datetime.utcnow()
+ diff = receive - send
+ return {
+ "code": 200,
+ "content": {
+ "ping": diff.total_seconds(),
+ "send_time": send.strftime("%Y-%m-%dT%H:%M:%S.%fZ"),
+ "receive_time": receive.strftime("%Y-%m-%dT%H:%M:%S.%fZ"),
+ },
+ "message": "You have a one way ping of %s seconds" % (diff.total_seconds()),
+ }
+ else:
+ return (
+ {
+ "code": 200,
+ "content": "Pong",
+ "message": "Ping received.",
+ "success": True,
+ },
+ 200,
+ )
diff --git a/src/routes/rebuild.py b/src/routes/rebuild.py
new file mode 100644
index 0000000000000000000000000000000000000000..a8f59a63c32fd97d0725724d9f273a428b2799cc
--- /dev/null
+++ b/src/routes/rebuild.py
@@ -0,0 +1,28 @@
+import flask
+import src.functions.config
+
+rebuildBP = flask.Blueprint("rebuild", __name__)
+
+import main
+
+
+@rebuildBP.route("/api/v1/rebuild")
+def rebuildFunction():
+ secret = flask.request.args.get("secret") # SECRET
+ config = src.functions.config.readConfig()
+
+ if secret == config.get("secret_key"):
+ res, code = main.threaded_metadata()
+ return flask.jsonify(res), code
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 401,
+ "content": None,
+ "message": "The secret key provided was incorrect.",
+ "success": False,
+ }
+ ),
+ 401,
+ )
diff --git a/src/routes/redirectdownload.py b/src/routes/redirectdownload.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d56def24829d23e9f3c260ad87e28820c383421
--- /dev/null
+++ b/src/routes/redirectdownload.py
@@ -0,0 +1,90 @@
+import base64
+import datetime
+import json
+import urllib
+
+import flask
+import requests
+import src.functions.config
+
+redirectdownloadBP = flask.Blueprint("redirectdownload", __name__)
+
+
+@redirectdownloadBP.route("/api/v1/redirectdownload/")
+async def redirectdownloadFunction(name):
+ id = flask.request.args.get("id")
+ itag = flask.request.args.get("itag")
+
+ config = src.functions.config.readConfig()
+ if config.get("kill_switch") == True:
+ return
+
+ if (
+ datetime.datetime.strptime(
+ config.get("token_expiry", datetime.datetime.utcnow()),
+ "%Y-%m-%d %H:%M:%S.%f",
+ )
+ <= datetime.datetime.utcnow()
+ ):
+ config, drive = src.functions.credentials.refreshCredentials(config)
+ with open("config.json", "w+") as w:
+ json.dump(obj=config, fp=w, sort_keys=True, indent=4)
+
+ tmp_metadata = src.functions.metadata.jsonExtract(
+ src.functions.metadata.readMetadata(config), "id", id, False
+ )
+ if tmp_metadata:
+ name = tmp_metadata.get("name", name)
+ args = "?"
+ for arg in flask.request.args:
+ args += "%s=%s&" % (
+ arg,
+ urllib.parse.quote(flask.request.args.get(arg, "").encode("utf-8")),
+ )
+ session = {
+ "access_token": config.get("access_token"),
+ "client_id": config.get("client_id"),
+ "client_secret": config.get("client_secret"),
+ "refresh_token": config.get("refresh_token"),
+ "token_expiry": config.get("token_expiry"),
+ }
+
+ session["url"] = "https://www.googleapis.com/drive/v3/files/%s?alt=media" % (id)
+ if itag and itag != "" and config.get("transcoded") == True:
+ req = requests.get(
+ "https://drive.google.com/get_video_info?docid=%s" % (id),
+ headers={"Authorization": "Bearer %s" % (config.get("access_token"))},
+ )
+ parsed = urllib.parse.parse_qs(urllib.parse.unquote(req.text))
+ if parsed.get("status") == ["ok"]:
+ for stream in parsed["url"]:
+ if ("itag=%s" % (itag)) in stream:
+ url = stream
+ break
+ cookie_string = "; ".join(
+ [str(x) + "=" + str(y) for x, y in req.cookies.items()]
+ )
+ session["cookie"] = cookie_string
+ session["transcoded"] = config.get("transcoded")
+ session["url"] = url
+
+ sessionB64 = base64.b64encode(json.dumps(session).encode("ascii")).decode("ascii")
+
+ if config.get("cloudflare") not in ["local", "", None]:
+ return flask.redirect(
+ config.get("cloudflare")
+ + "/api/v1/download/%s%ssession=%s&" % (name, args, sessionB64),
+ code=302,
+ )
+ elif config.get("cloudflare") == "local":
+ return flask.redirect(
+ "http://localhost:31146/api/v1/download/%s%ssession=%s&"
+ % (name, args, sessionB64),
+ code=302,
+ )
+ else:
+ return flask.redirect(
+ "/api/v1/download/%s%ssession=%s&"
+ % (urllib.parse.quote(name.encode("utf-8")), args, sessionB64),
+ code=302,
+ )
diff --git a/src/routes/restart.py b/src/routes/restart.py
new file mode 100644
index 0000000000000000000000000000000000000000..c181a8ab973a974ce820bf6374a8484a5c0da8e2
--- /dev/null
+++ b/src/routes/restart.py
@@ -0,0 +1,27 @@
+import os
+import sys
+
+import flask
+import src.functions.config
+
+restartBP = flask.Blueprint("restart", __name__)
+
+
+@restartBP.route("/api/v1/restart")
+def restartFunction():
+ config = src.functions.config.readConfig()
+ secret = flask.request.args.get("secret")
+ if secret == config.get("secret_key"):
+ os.execv(sys.executable, [sys.executable] + sys.argv)
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 401,
+ "content": None,
+ "message": "The secret key provided was incorrect.",
+ "success": False,
+ }
+ ),
+ 401,
+ )
diff --git a/src/routes/signup.py b/src/routes/signup.py
new file mode 100644
index 0000000000000000000000000000000000000000..99c85e7096b80c8d7b580241e552d0bdf01efcbc
--- /dev/null
+++ b/src/routes/signup.py
@@ -0,0 +1,57 @@
+import random
+
+import flask
+import src.functions.config
+
+signupBP = flask.Blueprint("signup", __name__)
+
+
+@signupBP.route("/api/v1/signup")
+async def signupFunction():
+ config = src.functions.config.readConfig()
+ u = flask.request.args.get("u") # USERNAME
+ p = flask.request.args.get("p") # PASSWORD
+
+ if config.get("signup"):
+ if any(u == account["username"] for account in config["account_list"]):
+ return (
+ flask.jsonify(
+ {
+ "code": 409,
+ "content": None,
+ "message": "An account with this username already exists.",
+ "success": False,
+ }
+ ),
+ 409,
+ )
+ else:
+ auth = "".join(
+ random.choices("abcdefghijklmnopqrstuvwxyz" + "0123456789", k=50)
+ )
+ account = {"username": u, "password": p, "pic": "", "auth": auth}
+ config["account_list"].append(account)
+ src.functions.config.updateConfig(config)
+ return (
+ flask.jsonify(
+ {
+ "code": 200,
+ "content": account,
+ "message": "Registration successful.",
+ "success": True,
+ }
+ ),
+ 200,
+ )
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 401,
+ "content": True,
+ "message": "This server has disabled user sign up.",
+ "success": False,
+ }
+ ),
+ 401,
+ )
diff --git a/src/routes/streammap.py b/src/routes/streammap.py
new file mode 100644
index 0000000000000000000000000000000000000000..1a37ec38decfb90bb3fcea9b169da1481199add8
--- /dev/null
+++ b/src/routes/streammap.py
@@ -0,0 +1,161 @@
+import pathlib
+import urllib
+
+import flask
+import requests
+import src.functions.config
+import src.functions.metadata
+
+streammapBP = flask.Blueprint("streammap", __name__)
+
+
+@streammapBP.route("/api/v1/streammap")
+async def streammapFunction():
+ a = flask.request.args.get("a") # AUTH
+ id = flask.request.args.get("id") # ID
+ name = flask.request.args.get("name") # NAME
+ parent = flask.request.args.get("parent") # PARENT
+ t = flask.request.args.get("t") # TYPE
+ server = flask.request.args.get("server") # SERVER
+ config = src.functions.config.readConfig()
+
+ if config.get("kill_switch") == True:
+ return flask.jsonify(
+ {
+ "code": 200,
+ "content": [{"name": "UNAVAILABLE", "url": "", "type": "auto"}],
+ "message": "Stream map was not generated because the kill_switch is enabled.",
+ "success": True,
+ }
+ )
+
+ if (
+ any(a == account["auth"] for account in config["account_list"])
+ or config.get("auth") == False
+ ):
+ videos = [
+ {
+ "name": "Original",
+ "url": "%s/api/v1/redirectdownload/%s?a=%s&id=%s"
+ % (server, urllib.parse.quote(name), a, id),
+ "type": "auto",
+ }
+ ]
+ if config.get("transcoded") == True:
+ req = requests.get(
+ "https://drive.google.com/get_video_info?docid=%s" % (id),
+ headers={"Authorization": "Bearer %s" % (config.get("access_token"))},
+ )
+ parsed = urllib.parse.parse_qs(urllib.parse.unquote(req.text))
+ if parsed.get("status") == ["ok"]:
+ for fmt in parsed["fmt_list"][0].split(","):
+ fmt_data = fmt.split("/")
+ videos.append(
+ {
+ "name": fmt_data[1],
+ "url": "%s/api/v1/redirectdownload/%s?a=%s&id=%s&itag=%s"
+ % (server, urllib.parse.quote(name), a, id, fmt_data[0]),
+ "type": "auto",
+ }
+ )
+
+ tracks = []
+ if (
+ config.get("fetch_assets") == True
+ and t != "directory"
+ and parent != None
+ and parent != ""
+ ):
+ config, drive = src.functions.credentials.refreshCredentials(
+ src.functions.config.readConfig()
+ )
+ og_title, og_year = src.functions.metadata.parseMovie(name)
+ if og_title == None:
+ og_name_path = pathlib.Path(name)
+ og_title = og_name_path.stem
+ params = {
+ "pageToken": None,
+ "supportsAllDrives": True,
+ "includeItemsFromAllDrives": True,
+ "fields": "files(id,name,mimeType,parents,videoMediaMetadata), incompleteSearch, nextPageToken",
+ "q": "'%s' in parents and trashed = false and ((mimeType contains 'video' and name contains '%s') or name contains '.srt' or name contains '.vtt')"
+ % (parent, og_title),
+ "orderBy": "name",
+ }
+ try:
+ response = drive.files().list(**params).execute()
+ except:
+ response = {"files": []}
+ for file in response["files"]:
+ title, year = src.functions.metadata.parseMovie(file["name"])
+ extention = pathlib.Path(file["name"]).suffix
+ if id != file["id"]:
+ if (
+ "video" in file["mimeType"]
+ and title == og_title
+ and year == og_year
+ ):
+ if file.get("videoMediaMetadata"):
+ videoMediaMetadata = file["videoMediaMetadata"]
+ else:
+ videoMediaMetadata = {"width": "null", "height": "null"}
+ videos.append(
+ {
+ "name": "%sx%s"
+ % (
+ videoMediaMetadata.get("width", "null"),
+ videoMediaMetadata.get("height", "null"),
+ ),
+ "url": "%s/api/v1/redirectdownload/%s?a=%s&id=%s"
+ % (server, urllib.parse.quote(file["name"]), a, id),
+ "type": "auto",
+ }
+ )
+ elif extention in [".srt", ".vtt"]:
+ tracks.append(
+ {
+ "name": file["name"],
+ "url": "%s/api/v1/subtitledownload/%s?a=%s&id=%s"
+ % (server, file["name"], a, file["id"]),
+ }
+ )
+ if (
+ config.get("prefer_mkv") == False
+ and config.get("prefer_mp4") == False
+ and len(videos) > 1
+ ):
+ default_video = 1
+ elif config.get("prefer_mp4", True) == True and name.endswith(".mp4"):
+ default_video = 0
+ elif config.get("prefer_mkv", False) == True and name.endswith(".mkv"):
+ default_video = 0
+ elif len(videos) > 1:
+ default_video = 1
+ else:
+ default_video = 0
+
+ return flask.jsonify(
+ {
+ "code": 200,
+ "content": {
+ "default_track": 0,
+ "default_video": default_video,
+ "tracks": tracks,
+ "videos": videos,
+ },
+ "message": "Stream map generated successfully.",
+ "success": True,
+ }
+ )
+ else:
+ return (
+ flask.jsonify(
+ {
+ "code": 401,
+ "content": None,
+ "message": "Your credentials are invalid.",
+ "success": False,
+ }
+ ),
+ 401,
+ )
diff --git a/src/routes/subtitledownload.py b/src/routes/subtitledownload.py
new file mode 100644
index 0000000000000000000000000000000000000000..923bc317d000354c75ad5d72d15c9ee1b1d28e30
--- /dev/null
+++ b/src/routes/subtitledownload.py
@@ -0,0 +1,78 @@
+import re
+
+import chardet
+import flask
+import requests
+import src.functions.config
+
+subtitledownloadBP = flask.Blueprint("subtitledownload", __name__)
+
+
+@subtitledownloadBP.route("/api/v1/subtitledownload/")
+async def subtitledownloadFunction(name):
+ a = flask.request.args.get("a") # AUTH
+ id = flask.request.args.get("id") # ID
+ config = src.functions.config.readConfig()
+
+ def download_file(streamable):
+ with streamable as stream:
+ stream.raise_for_status()
+ for chunk in stream.iter_content(chunk_size=4096):
+ if name.endswith("srt"):
+ encoding = chardet.detect(chunk).get("encoding")
+ replacement = "WEBVTT FILE\r\n\r\n" + str(chunk, encoding)
+ replacement = re.sub(
+ r"(\d\d:\d\d:\d\d),(\d\d\d)", r"\1.\2", replacement
+ )
+ lines = replacement.split("\n")
+ i = 0
+ output = ""
+ for line in lines:
+ if "-->" in line:
+ lines[i - 1] = ""
+ elif i == 0:
+ pass
+ else:
+ output += lines[i - 1] + "\n"
+ i += 1
+ chunk = output.encode(encoding)
+ yield chunk
+
+ if (
+ any(a == account["auth"] for account in config["account_list"])
+ or config.get("auth") == False
+ ):
+ config, drive = src.functions.credentials.refreshCredentials(
+ src.functions.config.readConfig()
+ )
+ headers = {
+ key: value for (key, value) in flask.request.headers if key != "Host"
+ }
+ headers["Authorization"] = "Bearer %s" % (config.get("access_token"))
+ resp = requests.request(
+ method=flask.request.method,
+ url="https://www.googleapis.com/drive/v3/files/%s?alt=media" % (id),
+ headers=headers,
+ data=flask.request.get_data(),
+ cookies=flask.request.cookies,
+ allow_redirects=False,
+ stream=True,
+ )
+ excluded_headers = [
+ "content-encoding",
+ "content-length",
+ "transfer-encoding",
+ "connection",
+ ]
+ headers = [
+ (name, value)
+ for (name, value) in resp.raw.headers.items()
+ if name.lower() not in excluded_headers
+ ]
+ headers.append(("cache-control", "no-cache, no-store, must-revalidate"))
+ headers.append(("pragma", "no-cache"))
+ return flask.Response(
+ flask.stream_with_context(download_file(resp)),
+ resp.status_code,
+ headers,
+ )
diff --git a/src/routes/trailer.py b/src/routes/trailer.py
new file mode 100644
index 0000000000000000000000000000000000000000..2fc50576b7f12ba5921816938d909a2275eb7623
--- /dev/null
+++ b/src/routes/trailer.py
@@ -0,0 +1,103 @@
+import flask
+import requests
+import src.functions.config
+
+trailerBP = flask.Blueprint("trailer", __name__)
+
+
+@trailerBP.route("/api/v1/trailer/")
+async def trailerFunction(id):
+ a = flask.request.args.get("a") # AUTH
+ t = flask.request.args.get("t") # TYPE
+ api = flask.request.args.get("api") # API
+ config = src.functions.config.readConfig()
+
+ if (
+ any(a == account["auth"] for account in config["account_list"])
+ or config.get("auth") == False
+ ):
+ if api == "tmdb":
+ trailers = requests.get(
+ "https://api.themoviedb.org/3/%s/%s/videos?api_key=%s&language=%s"
+ % (t, id, config.get("tmdb_api_key"), config.get("language", "en"))
+ ).json()
+ if trailers:
+ if len(trailers.get("results", [])) > 0:
+ trailer = next(
+ (
+ i
+ for i in trailers["results"]
+ if i["official"] == True
+ and i["type"] == "Trailer"
+ and i["site"] == "YouTube"
+ ),
+ next(
+ (
+ i
+ for i in trailers["results"]
+ if i["type"] == "Trailer" and i["site"] == "YouTube"
+ ),
+ trailers["results"][0],
+ ),
+ )
+ return (
+ {
+ "code": 200,
+ "content": trailer,
+ "message": "Trailer found successfully.",
+ "success": True,
+ },
+ 200,
+ )
+ return (
+ {
+ "code": 404,
+ "content": None,
+ "message": "Trailer could not be found.",
+ "success": False,
+ },
+ 404,
+ )
+ elif api == "anilist":
+ query = """
+ query ($id: Int) {
+ Media(id: $id, type: ANIME) {
+ trailer {
+ id
+ site
+ }
+ }
+ }
+ """
+ variables = {"id": id}
+ response = requests.post(
+ "https://graphql.anilist.co",
+ json={"query": query, "variables": variables},
+ ).json()
+ if response != None:
+ if response.get("data", {}).get("Media", {}).get("trailer"):
+ trailer = response["data"]["Media"]["trailer"]
+ if trailer.get("site") == "youtube":
+ trailer = {
+ "type": "trailer",
+ "site": "YouTube",
+ "key": trailer.get("id"),
+ }
+ return (
+ {
+ "code": 200,
+ "content": trailer,
+ "message": "Trailer found successfully.",
+ "success": True,
+ },
+ 200,
+ )
+ return (
+ {
+ "code": 404,
+ "content": None,
+ "message": "Trailer could not be found.",
+ "success": False,
+ },
+ 404,
+ )
diff --git a/templates/browser.html b/templates/browser.html
new file mode 100644
index 0000000000000000000000000000000000000000..90ec4b9bb13e96732a3290c73aecc085458a2b02
--- /dev/null
+++ b/templates/browser.html
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+ File System
+
+
+
+
+
+
+
+
+
+
+ {% for part in path.strip('/').split('/') %}
+ {{ part }}
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+ Name
+ Size
+ Modified
+
+
+
+
+
+ {{total.dir}} folders and {{total.file}} files, {{total.size | size_fmt}} in total
+
+
+
+
+ {% for entry in contents if entry.type == 'dir' %}
+
+ {{entry.name}}
+ —
+ {{entry.mtime | humanize}}
+
+ {% endfor %}
+ {% for entry in contents if entry.type == 'file' %}
+
+
+ {{entry.name}}
+
+ {{entry.size | size_fmt}}
+ {{entry.mtime | humanize}}
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file