List Of New Malayalam Movies
import React, useState, useEffect from 'react'; import './MovieList.css';const MovieList = () => const [movies, setMovies] = useState([]); const [filteredMovies, setFilteredMovies] = useState([]); const [search, setSearch] = useState(''); const [sortBy, setSortBy] = useState('newest');
useEffect(() => fetch('http://localhost:5000/api/new-malayalam-movies') .then(res => res.json()) .then(data => setMovies(data); setFilteredMovies(data); ) .catch(err => console.error(err)); , []);
useEffect(() => let result = [...movies];
// Search filter if (search) result = result.filter(m => m.title.toLowerCase().includes(search.toLowerCase()) ); // Sorting if (sortBy === 'newest') result.sort((a, b) => new Date(b.releaseDate) - new Date(a.releaseDate)); else if (sortBy === 'oldest') result.sort((a, b) => new Date(a.releaseDate) - new Date(b.releaseDate)); else if (sortBy === 'rating') result.sort((a, b) => b.voteAverage - a.voteAverage); setFilteredMovies(result);, [search, sortBy, movies]);
return ( <div className="movie-list-container"> <h1>🎬 New Malayalam Movies</h1> list of new malayalam movies
<div className="controls"> <input type="text" placeholder="Search movies..." value=search onChange=(e) => setSearch(e.target.value) /> <select value=sortBy onChange=(e) => setSortBy(e.target.value)> <option value="newest">Newest First</option> <option value="oldest">Oldest First</option> <option value="rating">Top Rated</option> </select> </div> <div className="movie-grid"> filteredMovies.map(movie => ( <div key=movie.id className="movie-card"> movie.posterPath ? ( <img src=movie.posterPath alt=movie.title /> ) : ( <div className="no-poster">No Poster</div> ) <h3>movie.title</h3> <p>📅 new Date(movie.releaseDate).toDateString()</p> <p>⭐ movie.voteAverage ? movie.voteAverage.toFixed(1) : 'N/A'/10</p> <p className="overview">movie.overview?.substring(0, 100)...</p> </div> )) </div> </div>); ;
export default MovieList;
const express = require('express'); const axios = require('axios'); const NodeCache = require('node-cache'); const app = express(); const cache = new NodeCache( stdTTL: 3600 ); // 1 hourconst TMDB_API_KEY = 'your_tmdb_api_key_here'; const TMDB_BASE = 'https://api.themoviedb.org/3'; import React, useState, useEffect from 'react'; import '
// Fetch new Malayalam movies (released in last 180 days) app.get('/api/new-malayalam-movies', async (req, res) => const cacheKey = 'malayalam_new_movies'; let movies = cache.get(cacheKey);
if (!movies) try const today = new Date(); const sixMonthsAgo = new Date(); sixMonthsAgo.setMonth(today.getMonth() - 6);
const fromDate = sixMonthsAgo.toISOString().split('T')[0]; const toDate = today.toISOString().split('T')[0]; // Discover movies with language = ml, region = IN, primary release date range const response = await axios.get(`$TMDB_BASE/discover/movie`, params: api_key: TMDB_API_KEY, language: 'ml', region: 'IN', with_original_language: 'ml', 'primary_release_date.gte': fromDate, 'primary_release_date.lte': toDate, sort_by: 'release_date.desc', include_adult: false ); movies = response.data.results.map(movie => ( id: movie.id, title: movie.title, originalTitle: movie.original_title, releaseDate: movie.release_date, posterPath: movie.poster_path ? `https://image.tmdb.org/t/p/w500$movie.poster_path` : null, voteAverage: movie.vote_average, overview: movie.overview, genreIds: movie.genre_ids )); cache.set(cacheKey, movies); catch (error) return res.status(500).json( error: 'Failed to fetch movies' );res.json(movies); );
app.listen(5000, () => console.log('Server running on port 5000'));
Directed by Vishnu Narayan, this film starring Saiju Kurup and Priyamvada Krishna is a haunting thriller about a mother's desperate search for her missing daughter in a hill station. It stands out for its atmospheric tension and sound design.