Filmology is a movie recommendation web application that provides tailored movie suggestions based on user input. It leverages a combination of a content-based filtering approach and the TMDb API to deliver accurate movie details, including posters and recommendations.
- Tailored Recommendations: Get movie recommendations based on similar titles.
- Trending Movies: Stay updated with the latest popular films.
- Detailed Movie Insights: Access comprehensive information about a movie, including cast, overview, and poster images.
Before you can run Filmology, ensure you have the following installed:
- Python 3.x
- Flask
- Pandas
- Scikit-learn
- TMDbv3 API
- CountVectorizer (from
sklearn.feature_extraction.text
) - TMDb API Key (available at TMDb)
-
Clone the repository:
git clone https://github.com/Alogyn/filmology.git cd filmology
-
Install the required dependencies: If
requirements.txt
is provided, install dependencies with:pip install -r requirements.txt
-
Add your TMDb API key: Update the app.py file with your TMDb API key:
tmdb.api_key = 'your_tmdb_api_key_here'
-
Run the application:
python app.py
-
Access the app: Open your browser and navigate to
http://127.0.0.1:5000/
.
.
├── dataset/
│ └── movies2.csv # Movie dataset
├── preprocessing/
│ └── preprocessing.ipynb # Preprocessing notebook
├── static/ # Static assets (CSS, JS, images)
│ ├── styles/
│ ├── images/
│ └── scripts/
├── templates/ # HTML templates for Flask
│ ├── index.html # Home page
│ ├── recommendation.html # Recommendations page
│ └── movie_details.html # Movie details page
├── app.py # Flask backend
├── README.md # Project documentation
├── requirements.txt # Python dependencies
└── .env # Environment variables (e.g., API keys)
Filmology uses content-based filtering to recommend movies based on their metadata (genre, director, cast, etc.). The system calculates the cosine similarity between movies and returns a list of recommendations based on the user's input.
- Data Preprocessing: The preprocessing steps are outlined in the
preprocessing/preprocessing.ipynb
file. - Recommendation Algorithm: The application uses
CountVectorizer
to process text data and calculate similarity scores usingcosine_similarity
.
Filmology integrates with the TMDb API to fetch and display movie posters, ratings, and details.
/
(GET): Renders the homepage./recommendation
(POST): Provides movie recommendations based on user input./movie/<title>
(GET): Displays detailed information about a specific movie.
- Backend: Flask (Python)
- Data Processing: Pandas, Scikit-learn
- Frontend: HTML, CSS, JavaScript
- API: TMDb API for movie details
Watch the demo video of Filmology on YouTube:
- Name: Mohamed Derfoufi
- GitHub: Alogyn
- Email: mohamed.derfoufi.dev@gmail.com
This project is licensed under the MIT License. See the [LICENSE] file for more details.