:root{--bg:#080b14;--panel:#151c2d;--line:#2b3650;--muted:#aab3c5;--pink:#ed174c;--white:#f7f8fb} *{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--white);font-family:system-ui,-apple-system,"Noto Sans Malayalam",Arial,sans-serif} header{position:sticky;top:0;z-index:20;background:#080b14ed;backdrop-filter:blur(16px);border-bottom:1px solid #ffffff15;padding:12px 4.5%;display:flex;align-items:center;gap:24px} .logo{font-size:30px;font-weight:950;letter-spacing:-1.4px}.logo span{color:#ff426d}nav{display:flex;gap:22px;flex:1}nav a{color:#cbd3e2;text-decoration:none;font-size:14px;font-weight:700}.searchbar{display:flex;gap:8px;width:min(420px,48vw)} input{min-width:0;flex:1;background:#151e31;color:white;border:1px solid #35435e;border-radius:12px;padding:12px 14px;font:inherit;outline:none}input:focus{border-color:#f43f68} button{font:inherit;cursor:pointer;border:0;border-radius:11px;padding:11px 16px;font-weight:800}.primary{background:var(--pink);color:white}.secondary{background:#2a354b;color:white} .hero{min-height:330px;padding:54px 5%;display:flex;align-items:center;background:linear-gradient(90deg,#070b17 0%,#10172bde 45%,#10172b44 100%),url('https://image.tmdb.org/t/p/original/8bcoRx5h5q3i3zV2p4S4Yv6W8eG.jpg') center 28%/cover no-repeat;position:relative} .hero-inner{max-width:670px}.eyebrow{font-size:12px;font-weight:900;letter-spacing:2px;color:#ff91ac}.hero h1{font-size:clamp(34px,6vw,58px);line-height:1.05;margin:13px 0}.hero p{color:#d5dbea;line-height:1.7;max-width:580px}.hero button{margin-top:12px} main{padding:24px 4.5% 50px}.settings{background:#121a2a;border:1px solid #2b3650;border-radius:14px;padding:14px 16px;margin-bottom:22px}.settings summary{font-weight:800;cursor:pointer}.settings p{font-size:12px;color:var(--muted);line-height:1.6}.keyrow{display:flex;gap:8px;flex-wrap:wrap}.keyrow input{flex:1 1 260px}.hint{font-size:12px;color:#aab3c5} .chips{display:flex;gap:9px;overflow:auto;padding:6px 0 15px}.chip{white-space:nowrap;background:#151e30;border:1px solid #2b3650;color:#dbe2ee;padding:9px 16px;border-radius:999px;font-size:13px}.chip.active,.chip:hover{background:var(--pink);border-color:var(--pink);color:white} .sectionhead{display:flex;justify-content:space-between;align-items:end;margin:24px 0 14px;gap:10px}.sectionhead h2{margin:0;font-size:21px}.sectionhead small{color:var(--muted)} .grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px}.card{min-width:0;cursor:pointer;transition:transform .18s}.card:hover{transform:translateY(-4px)}.poster{position:relative;aspect-ratio:2/3;border-radius:12px;overflow:hidden;background:linear-gradient(145deg,#25304a,#171d2c);box-shadow:0 7px 20px #0006}.poster img{width:100%;height:100%;object-fit:cover;display:block}.noimg{height:100%;display:grid;place-items:center;text-align:center;padding:12px;color:#dbe2ee;font-weight:800}.card h3{font-size:13px;line-height:1.35;margin:9px 2px 3px;min-height:35px}.card .meta{font-size:11px;color:var(--muted);margin:0 2px}.rating{position:absolute;top:8px;left:8px;background:#080b14dd;padding:4px 7px;border-radius:6px;font-size:11px;font-weight:800} .status{padding:18px;background:#121a2a;border:1px solid #2b3650;border-radius:12px;color:#cbd5e1;line-height:1.7} .pages{display:flex;justify-content:center;align-items:center;gap:12px;margin:25px 0}.pages button:disabled{opacity:.35} .backdrop{display:none;position:fixed;inset:0;z-index:50;background:#000d;backdrop-filter:blur(7px);padding:16px;align-items:center;justify-content:center}.backdrop.show{display:flex}.modal{width:min(780px,100%);max-height:92vh;overflow:auto;background:#151d30;border:1px solid #34425d;border-radius:20px;padding:20px;position:relative}.modalgrid{display:grid;grid-template-columns:190px 1fr;gap:20px}.modalposter{width:100%;border-radius:12px;display:block}.modal h2{margin:4px 0 10px;font-size:26px}.modal p{color:#cbd5e1;line-height:1.7}.modalmeta{color:#ff8ba7!important;font-size:13px}.modalactions{display:flex;gap:9px;flex-wrap:wrap;margin-top:18px}.modalactions a{display:inline-block;text-decoration:none;padding:12px 15px;border-radius:10px;background:#fff;color:#111827;font-weight:850}.close{position:absolute;right:14px;top:14px;border-radius:50%;width:42px;height:42px;padding:0;font-size:22px} footer{border-top:1px solid #ffffff15;padding:24px 4.5%;font-size:12px;color:#8e99ad;line-height:1.7} @media(max-width:1050px){.grid{grid-template-columns:repeat(5,minmax(0,1fr))}} @media(max-width:760px){header{flex-wrap:wrap;padding:10px 4%;gap:10px}.logo{font-size:26px}nav{display:none}.searchbar{width:100%;order:2}.hero{min-height:285px;padding:38px 5%;background-position:60% center}.hero h1{font-size:38px}main{padding:18px 4% 38px}.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.card h3{font-size:12px}.modalgrid{grid-template-columns:112px 1fr;gap:14px}.modal{padding:16px}.modal h2{font-size:21px}} @media(max-width:420px){.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.hero h1{font-size:33px}.modalgrid{grid-template-columns:1fr}.modalposter{max-width:155px}.modal h2{padding-right:35px}}
FADS+
HomeMoviesAPI Setup
Search
FADS+ MOVIE DISCOVERY
നിങ്ങളുടെ സിനിമാ ലോകം.
യഥാർത്ഥ സിനിമാ പോസ്റ്ററുകളും ശരിയായ പേരുകളും വിവരങ്ങളും കണ്ടെത്തൂ. സിനിമ തിരഞ്ഞെടുക്കൂ, ട്രെയിലറും ഔദ്യോഗികമായി ലഭ്യമായ കാണാനുള്ള വഴികളും പരിശോധിക്കൂ.
▶ സിനിമകൾ കാണാം
ആദ്യമായി TMDB API Key ചേർക്കുക — യഥാർത്ഥ പോസ്റ്ററുകൾക്കായി
TMDB-യിൽ നിന്ന് സൗജന്യ non-commercial developer API key എടുക്കുക. താഴെ API Key (v3 auth) മാത്രം ചേർക്കുക; Bearer Read Access Token ചേർക്കരുത്. Key ഈ ബ്രൗസറിൽ മാത്രം സൂക്ഷിക്കും.
Save & Load PostersClear
API key എടുക്കാൻ: TMDB account → Settings → API → Request an API Key → Developer.
Trending Popular Malayalam Hindi Tamil English Animation
Trending Movies
TMDB-യിൽ നിന്നുള്ള യഥാർത്ഥ സിനിമാ പോസ്റ്ററുകൾ
യഥാർത്ഥ പോസ്റ്ററുകൾ കാണാൻ മുകളിൽ TMDB API Key ചേർത്ത് “Save & Load Posters” അമർത്തുക.
← PreviousPage 1Next →
▶ Full Movies on FADS+
Public Domain / Creative Commons സിനിമകൾ മാത്രം — ലഭ്യമായാൽ വെബ്സൈറ്റിൽ തന്നെ പ്ലേ ചെയ്യാം
TMDB സിനിമാ പോസ്റ്ററുകളും വിവരങ്ങളും നൽകുന്നു. മുഴുവൻ സിനിമകൾക്കായി താഴെ Internet Archive-ൽ ലൈസൻസ് വിവരമുള്ള വീഡിയോ തിരയുക. എല്ലാ സിനിമകൾക്കും പൂർണ്ണ പതിപ്പ് ലഭിക്കണമെന്നില്ല.
Find Full Movies
സിനിമയുടെ പേര് അല്ലെങ്കിൽ വിഭാഗം നൽകി Search അമർത്തുക.
Now Playing
Close
×

▶ Play Trailer on FADS+Where to watchPlay Full Movie on FADS+
Trailer FADS+ പ്ലെയറിൽ തന്നെ പ്ലേ ചെയ്യും. GitHub Pages പോലുള്ള HTTPS വെബ്സൈറ്റിൽ തുറക്കുക; ഡൗൺലോഡ് ചെയ്ത content:// ഫയലിൽ YouTube ചിലപ്പോൾ Error 153 കാണിക്കും.
TrailerClose Trailer
FADS+ — Movie discovery and poster catalogue. Movie metadata and images supplied by TMDB. This product uses the TMDB API but is not endorsed or certified by TMDB. TMDB supplies movie metadata and posters, not movie files. FADS+ embeds available TMDB YouTube trailers and checks Internet Archive items for exact title/year matches, stated Public Domain or Creative Commons licensing, and runtime before attempting in-page full-movie playback. Availability and playback compatibility are not guaranteed. const TMDB='https://api.themoviedb.org/3'; const IMG='https://image.tmdb.org/t/p/w500'; const $=id=>document.getElementById(id); let apiKey=localStorage.getItem('fads_tmdb_key')||''; let kind='trending',page=1,totalPages=1,activeMovie=null,busy=false,currentTrailerKey=''; $('apiKey').value=apiKey; function setStatus(msg){$('grid').innerHTML='
'+msg+'
';} function esc(s){return String(s??'').replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));} function titleOf(m){return m.title||m.name||m.original_title||'Untitled';} function imageUrl(path){return path?IMG+path:'';} async function tmdb(path,params={}){ const u=new URL(TMDB+path);u.searchParams.set('api_key',apiKey);Object.entries(params).forEach(([k,v])=>u.searchParams.set(k,v)); const r=await fetch(u);if(!r.ok){let msg='TMDB request failed ('+r.status+')';try{const j=await r.json();msg=j.status_message||msg;}catch(e){}throw new Error(msg);}return r.json(); } function endpoint(){ if(kind==='popular')return ['/movie/popular',{language:'en-US'}]; if(kind==='ml')return ['/discover/movie',{with_original_language:'ml',sort_by:'popularity.desc'}]; if(kind==='hi')return ['/discover/movie',{with_original_language:'hi',sort_by:'popularity.desc'}]; if(kind==='ta')return ['/discover/movie',{with_original_language:'ta',sort_by:'popularity.desc'}]; if(kind==='en')return ['/discover/movie',{with_original_language:'en',sort_by:'popularity.desc'}]; if(kind==='animation')return ['/discover/movie',{with_genres:'16',sort_by:'popularity.desc'}]; return ['/trending/movie/week',{}]; } function renderMovies(items){ if(!items.length){setStatus('ഈ തിരച്ചിലിൽ സിനിമകൾ കണ്ടെത്തിയില്ല. മറ്റൊരു പേര് പരീക്ഷിക്കുക.');return;} $('grid').innerHTML=items.map(m=>{ const title=esc(titleOf(m)),poster=imageUrl(m.poster_path),year=esc((m.release_date||m.first_air_date||'').slice(0,4)); const rating=Number(m.vote_average||0).toFixed(1); return `
`; }).join(''); $('grid').querySelectorAll('.card').forEach((el,i)=>el.addEventListener('click',()=>openMovie(items[i]))); } async function loadMovies(p=1){ if(!apiKey){setStatus('ആദ്യം TMDB API Key ചേർക്കുക. API key ഇല്ലാതെ TMDB-യിൽ നിന്ന് യഥാർത്ഥ poster-ുകൾ സ്വയം ലഭ്യമാക്കാൻ കഴിയില്ല.');return;} if(busy)return;busy=true;page=p;setStatus('യഥാർത്ഥ സിനിമാ പോസ്റ്ററുകൾ ലോഡ് ചെയ്യുന്നു…'); try{ const [path,params]=endpoint();const data=await tmdb(path,{...params,page:p}); totalPages=Math.min(Number(data.total_pages||1),500);$('count').textContent=Number(data.total_results||0).toLocaleString()+' titles'; $('page').textContent='Page '+page+' / '+totalPages;$('prev').disabled=page<=1;$('next').disabled=page>=totalPages; renderMovies(data.results||[]); }catch(e){setStatus('പോസ്റ്ററുകൾ ലോഡ് ചെയ്യാനായില്ല: '+esc(e.message)+' API key ശരിയാണോ എന്ന് പരിശോധിക്കുക.');$('count').textContent='';} finally{busy=false;} } async function searchMovies(q,p=1){ if(!apiKey){setStatus('Search ഉപയോഗിക്കാൻ ആദ്യം TMDB API Key ചേർക്കുക.');return;} if(!q.trim()){loadMovies(1);return;} if(busy)return;busy=true;page=p;setStatus('സിനിമ തിരയുന്നു…'); try{ const data=await tmdb('/search/movie',{query:q,include_adult:'false',language:'en-US',page:p}); totalPages=Math.min(Number(data.total_pages||1),500);$('count').textContent=Number(data.total_results||0).toLocaleString()+' results'; $('page').textContent='Page '+page+' / '+totalPages;$('prev').disabled=page<=1;$('next').disabled=page>=totalPages;renderMovies(data.results||[]); }catch(e){setStatus('Search പ്രവർത്തിച്ചില്ല: '+esc(e.message));} finally{busy=false;} } async function openMovie(m){ activeMovie=m;currentTrailerKey=''; $('modalPoster').src=imageUrl(m.poster_path);$('modalTitle').textContent=titleOf(m); $('modalMeta').textContent=[(m.release_date||'').slice(0,4),m.original_language?.toUpperCase(),m.vote_average?'★ '+Number(m.vote_average).toFixed(1)+'/10':''].filter(Boolean).join(' · '); $('modalOverview').textContent=m.overview||'വിവരണം ലഭ്യമല്ല.'; $('modalExtra').textContent='കൂടുതൽ വിവരങ്ങൾ ലോഡ് ചെയ്യുന്നു…'; $('watchLink').href='https://www.justwatch.com/in/search?q='+encodeURIComponent(titleOf(m)); $('playTrailer').disabled=true; $('playTrailer').textContent='▶ Trailer loading…'; $('trailerPlayerBox').style.display='none'; $('trailerFrame').src='about:blank'; $('modal').classList.add('show'); try{ const d=await tmdb('/movie/'+m.id,{append_to_response:'videos,watch/providers',language:'en-US'}); $('modalExtra').textContent=d.runtime?'ദൈർഘ്യം: '+d.runtime+' മിനിറ്റ്':''; const trailers=(d.videos?.results||[]).filter(v=>v.site==='YouTube'&&v.type==='Trailer'&&v.key); const chosen=trailers.find(v=>v.official)||trailers[0]; if(chosen){ currentTrailerKey=chosen.key; $('playTrailer').disabled=false; $('playTrailer').textContent='▶ Play Trailer on FADS+'; }else{ $('playTrailer').textContent='Trailer ലഭ്യമല്ല'; } const providers=d['watch/providers']?.results?.IN; if(providers){ const names=[...(providers.flatrate||[]),...(providers.rent||[]),...(providers.buy||[])].map(x=>x.provider_name); if(names.length)$('modalExtra').textContent+=' · ഇന്ത്യയിൽ ലഭ്യമായ സേവനങ്ങൾ: '+[...new Set(names)].join(', '); } }catch(e){ $('modalExtra').textContent='വിവരങ്ങൾ ലോഡ് ചെയ്യാനായില്ല.'; $('playTrailer').textContent='Trailer ലഭ്യമല്ല'; } } function closeModal(){ $('modal').classList.remove('show'); $('trailerFrame').src='about:blank'; $('trailerPlayerBox').style.display='none'; } $('playTrailer').addEventListener('click',()=>{ if(!currentTrailerKey)return; const pageOrigin = (location.protocol === 'https:' || location.protocol === 'http:') ? location.origin : ''; $('trailerFrame').src='https://www.youtube.com/embed/'+encodeURIComponent(currentTrailerKey)+'?autoplay=1&playsinline=1&rel=0&modestbranding=1'+(pageOrigin?'&origin='+encodeURIComponent(pageOrigin):''); $('trailerPlayerBox').style.display='block'; $('trailerPlayerBox').scrollIntoView({behavior:'smooth',block:'nearest'}); }); $('closeTrailer').addEventListener('click',()=>{ $('trailerFrame').src='about:blank'; $('trailerPlayerBox').style.display='none'; }); $('saveKey').addEventListener('click',()=>{apiKey=$('apiKey').value.trim();if(!apiKey){setStatus('API Key നൽകുക.');return;}localStorage.setItem('fads_tmdb_key',apiKey);$('settings').open=false;loadMovies(1);}); $('clearKey').addEventListener('click',()=>{apiKey='';localStorage.removeItem('fads_tmdb_key');$('apiKey').value='';setStatus('API key നീക്കി. പുതിയ key ചേർക്കുക.');}); $('searchBtn').addEventListener('click',()=>searchMovies($('searchInput').value.trim(),1)); $('searchInput').addEventListener('keydown',e=>{if(e.key==='Enter')searchMovies(e.target.value.trim(),1);}); $('exploreBtn').addEventListener('click',()=>{$('movies').scrollIntoView({behavior:'smooth'});}); $('chips').querySelectorAll('.chip').forEach(b=>b.addEventListener('click',()=>{ $('chips').querySelectorAll('.chip').forEach(x=>x.classList.remove('active'));b.classList.add('active');kind=b.dataset.kind; const labels={trending:'Trending Movies',popular:'Popular Movies',ml:'Popular Malayalam Movies',hi:'Popular Hindi Movies',ta:'Popular Tamil Movies',en:'Popular English Movies',animation:'Animation Movies'}; $('sectionTitle').textContent=labels[kind];$('searchInput').value='';loadMovies(1); })); $('prev').addEventListener('click',()=>{if(page>1){const q=$('searchInput').value.trim();q?searchMovies(q,page-1):loadMovies(page-1);}}); $('next').addEventListener('click',()=>{if(page{if(e.target===$('modal'))closeModal();}); window.addEventListener('DOMContentLoaded',()=>{if(apiKey){$('settings').open=false;loadMovies(1);}else{$('settings').open=true;}}); // Legal full-length movie search and in-page playback via Internet Archive. function archiveStatus(message){$('archiveStatus').textContent=message;} function archiveEscape(s){return String(s??'').replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));} function isTrailerFile(name){return /\b(trailer|teaser|preview|sample|clip|promo|behind[\s_-]?the[\s_-]?scenes)\b/i.test(String(name||''));} function runtimeSeconds(v){ if(v==null)return null; if(typeof v==='number')return v; if(typeof v==='object'){v=v['#text']||v.value||'';} const s=String(v).trim(); if(!s)return null; if(/^\d+(\.\d+)?$/.test(s))return Number(s); const a=s.split(':').map(Number); if(a.some(n=>!Number.isFinite(n)))return null; if(a.length===3)return a[0]*3600+a[1]*60+a[2]; if(a.length===2)return a[0]*60+a[1]; return null; } function normalizeMovieTitle(value){ return String(value||'').normalize('NFKD').toLowerCase() .replace(/[^a-z0-9]+/g,' ').trim().replace(/\s+/g,' '); } async function searchArchiveMovies(term, expectedMovie=null){ const q=term.trim(); if(!q){archiveStatus('സിനിമയുടെ പേര് നൽകുക.');return;} $('archiveGrid').innerHTML=''; $('archivePlayerBox').style.display='none'; archiveStatus('അതേ സിനിമയുടെ ലൈസൻസ് ഉള്ള മുഴുനീള പതിപ്പ് തിരയുന്നു…'); const safe=q.replace(/[+\-&|!(){}\[\]^"~*?:\\/]/g,' ').replace(/\s+/g,' ').trim(); const query=`mediatype:movies AND (licenseurl:*publicdomain* OR licenseurl:*creativecommons.org*) AND "${safe}"`; const params=new URLSearchParams({q:query,fl:'identifier,title,creator,year,licenseurl,runtime',rows:'50',page:'1',output:'json'}); params.append('sort[]','downloads desc'); try{ const response=await fetch('https://archive.org/advancedsearch.php?'+params.toString()); if(!response.ok)throw new Error('Internet Archive search error '+response.status); const data=await response.json(); let docs=data?.response?.docs||[]; if(expectedMovie){ const accepted=new Set([titleOf(expectedMovie),expectedMovie.original_title||''].map(normalizeMovieTitle).filter(Boolean)); const expectedYear=String(expectedMovie.release_date||'').slice(0,4); docs=docs.filter(d=>{ const title=normalizeMovieTitle(d.title); const exact=accepted.has(title); const archiveYear=String(d.year||'').slice(0,4); return exact&&(!expectedYear||!archiveYear||expectedYear===archiveYear); }); if(!docs.length){ archiveStatus('ഈ സിനിമയുടെ അതേ പേരും വർഷവും പൊരുത്തപ്പെടുന്ന, ലൈസൻസ് വിവരമുള്ള പൂർണ്ണ സിനിമ കണ്ടെത്തിയില്ല. മറ്റൊരു സിനിമ കാണിക്കാതെ ഇവിടെ നിർത്തിയിരിക്കുന്നു.'); return; } } if(!docs.length){archiveStatus('ഈ പേരിൽ ലൈസൻസ് വിവരങ്ങളുള്ള ഫലം കണ്ടെത്തിയില്ല. മറ്റൊരു പേര് പരീക്ഷിക്കുക.');return;} $('archiveGrid').innerHTML=docs.map((d,i)=>{ const title=archiveEscape(d.title||d.identifier); const creator=archiveEscape(d.creator||'Internet Archive'); const year=archiveEscape(d.year||''); const poster='https://archive.org/services/img/'+encodeURIComponent(d.identifier); return `
${title}
${creator}${year?' · '+year:''}
`; }).join(''); $('archiveGrid').querySelectorAll('[data-archive-index]').forEach((card,i)=>card.addEventListener('click',()=>playArchiveItem(docs[i],expectedMovie))); archiveStatus(expectedMovie?'അതേ സിനിമയുടെ പേരും വർഷവും പൊരുത്തപ്പെട്ട ഫലം ലഭിച്ചു. ഇപ്പോൾ ലൈസൻസും വീഡിയോ ദൈർഘ്യവും പരിശോധിക്കൂ.':`${docs.length} ഫലങ്ങൾ ലഭിച്ചു. ഓരോ ഫയലിന്റെയും ലൈസൻസും ദൈർഘ്യവും പരിശോധിച്ചശേഷം മാത്രമേ പ്ലേ ചെയ്യൂ.`); }catch(e){archiveStatus('തിരച്ചിൽ പൂർത്തിയാക്കാനായില്ല: '+e.message+'. ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക.');} } async function playArchiveItem(item, expectedMovie=null){ const id=item.identifier; if(expectedMovie){ const accepted=new Set([titleOf(expectedMovie),expectedMovie.original_title||''].map(normalizeMovieTitle).filter(Boolean)); if(!accepted.has(normalizeMovieTitle(item.title))){ archiveStatus('സിനിമയുടെ പേര് കൃത്യമായി പൊരുത്തപ്പെടുന്നില്ല. പ്ലേ ചെയ്യില്ല.'); return; } const expectedYear=String(expectedMovie.release_date||'').slice(0,4); const foundYear=String(item.year||'').slice(0,4); if(expectedYear&&foundYear&&expectedYear!==foundYear){ archiveStatus('സിനിമയുടെ വർഷം പൊരുത്തപ്പെടുന്നില്ല. പ്ലേ ചെയ്യില്ല.'); return; } } archiveStatus('വീഡിയോയും ലൈസൻസും പരിശോധിക്കുന്നു…'); try{ const response=await fetch('https://archive.org/metadata/'+encodeURIComponent(id)); if(!response.ok)throw new Error('Item metadata unavailable'); const meta=await response.json(); const license=String(meta?.metadata?.licenseurl||item.licenseurl||''); if(!(/publicdomain|creativecommons\.org/i.test(license))){ archiveStatus('ഈ ഇനത്തിന് വ്യക്തമായ Public Domain / Creative Commons ലൈസൻസ് കണ്ടെത്താനായില്ല. പ്ലേ ചെയ്യില്ല.'); return; } const duration=runtimeSeconds(meta?.metadata?.runtime); if(duration===null||duration<2400){ archiveStatus('മുഴുനീള സിനിമയെന്ന് സ്ഥിരീകരിക്കാനായില്ല (ദൈർഘ്യവിവരം ലഭ്യമല്ല അല്ലെങ്കിൽ 40 മിനിറ്റിൽ കുറവ്). ട്രെയിലർ/ക്ലിപ്പ് പ്ലേ ചെയ്യില്ല.'); return; } const files=Array.isArray(meta.files)?meta.files:[]; const candidates=files.filter(f=>{ const name=String(f.name||''); return /\.(mp4|m4v|webm|ogv|ogg)$/i.test(name)&&!f.private&&f.source!=='metadata'&&!isTrailerFile(name); }).sort((a,b)=>{ const score=f=>/\.mp4$/i.test(f.name)?0:/\.webm$/i.test(f.name)?1:2; return score(a)-score(b); }); if(!candidates.length){archiveStatus('ലൈസൻസും ദൈർഘ്യവും ലഭിച്ചു, പക്ഷേ പ്ലേ ചെയ്യാവുന്ന വീഡിയോ ഫയൽ കണ്ടെത്തിയില്ല.');return;} const file=candidates[0]; const url='https://archive.org/download/'+encodeURIComponent(id)+'/'+file.name.split('/').map(encodeURIComponent).join('/'); $('archivePlayerTitle').textContent=item.title||id; $('archiveVideo').src=url; $('archiveLicense').textContent='ലൈസൻസ്: '+license+' · ദൈർഘ്യം: ഏകദേശം '+Math.round(duration/60)+' മിനിറ്റ് · Internet Archive item: https://archive.org/details/'+id+'. വീഡിയോയുടെ ഉപയോഗം ഓരോ ഇനത്തിന്റെയും ലൈസൻസ് നിബന്ധനകൾക്ക് വിധേയമാണ്.'; $('archivePlayerBox').style.display='block'; $('archivePlayerBox').scrollIntoView({behavior:'smooth',block:'start'}); const playPromise=$('archiveVideo').play(); if(playPromise&&playPromise.catch)playPromise.catch(()=>{archiveStatus('പ്ലെയർ തയ്യാറായി. ബ്രൗസർ നിയന്ത്രണം കാരണം Play അമർത്തി തുടങ്ങുക.');}); archiveStatus('വീഡിയോ പ്ലെയറിൽ ലോഡ് ചെയ്തു. Play പ്രവർത്തിക്കാത്ത പക്ഷം ഫയൽ ബ്രൗസർ പിന്തുണയ്ക്കാത്തതാകാം.'); }catch(e){archiveStatus('ഈ സിനിമ പരിശോധിക്കാനായില്ല: '+e.message);} } $('archiveSearch').addEventListener('click',()=>searchArchiveMovies($('archiveQuery').value)); $('archiveQuery').addEventListener('keydown',e=>{if(e.key==='Enter')searchArchiveMovies(e.target.value);}); $('closeArchivePlayer').addEventListener('click',()=>{$('archiveVideo').pause();$('archiveVideo').removeAttribute('src');$('archiveVideo').load();$('archivePlayerBox').style.display='none';}); $('findFullMovie').addEventListener('click',()=>{ const title=activeMovie?titleOf(activeMovie):''; closeModal(); $('archiveQuery').value=title; $('fullMovies').scrollIntoView({behavior:'smooth'}); searchArchiveMovies(title,activeMovie); });