Skip to main content

A Python-powered movie collection management system

Project description

🎥 GemFlix

A Python-powered movie collection management system designed to organize, analyze, and discover movies effortlessly. With seamless Couchbase integration, GemFlix efficiently manages data for 1000+ movies and personal user collections. Users can rate, review, and create custom collections, while tailored filters and suggestions, powered by Gemini, enhance movie discovery. Additionally, built-in analysis tools provide deeper insights into viewing habits and collection trends.

Build Status

🚀 Features

  1. User Management:

    • Sign up new users with personalized collections.
  2. Movie Management:

    • Add and manage movies in your collection.
    • Delete movies or collections.
  3. Search Functionality:

    • Search movies by keywords (e.g. father daughter story)
    • Filter movies by custom filters (e.g. title, genre, director, or actor)
  4. Recommendation System:

    • Get personalized movie recommendations based on user preferences.
  5. Data Analysis:

    • Analyze user moive data such as:
      • basic descriptive statistics.
      • Top directors in the collection.
      • Most popular genres.
  6. Visualization:

    • Visualize data trends, including:
      • Summary reports.
      • Top directors with details.
      • Annual or Monthly genre trends.
    • Display an interactive dashboard for easy access to insights.

📜 Function Details

Below are the key functions in GemFlix and how they work:

sign_up

Creates a user account

Parameters:

  • user_id (str): The user ID

Example:

collection.user_id(user_id="julia")

create_collection

Adds a new colection to the user's document

Parameters:

  • collection_name (str): The name of the collection.

Example:

collection.create_collection(collection_name="sci-fi")

display_collection

Displays all collections or movies within a specified collection.

Parameters:

  • collection_name (str): The name of the collection. (optional)

Example:

collection.display_collection(collection_name="sci-fi")

add_log

Adds a movie to a collection by its title, including details like rating, watched date, and notes.

Parameters:

  • collection_name (str): The name of the collection.
  • movie_title (str): The title of the movie to add.
  • rate (int): The user's rating for the movie.
  • watched_date (str): The date the movie was watched (optional).
  • notes (str): Additional notes about the movie (optional).

Example:

collection.add_log(collection_name = "sci-fi", 
                   movie_title = "Interstellar",
                   rate = 10, 
                   watched_data = "2024-11-28",
                   notes =  "touching")

keyword_search

Perform a keyword search using Couchbase, and generate an HTML page displaying movie results based on the search text.

Parameters:

  • search_text (str): The search query used for fetching the movie results.

Example:

keyword_search("christmas family movies")

filter_results

Filter documents with dynamic conditions passed by the user.

Parameters:

  • filters (str): A list of custom filter conditions. Each filter is a dictionary with the following keys:
    • field (str) : The field to filter
    • condition (str) : The condition to apply
    • values (list) : The values to match against the condition.
  • limit (int) : The maximum number of movies to return.
  • sort_by (tuple) : The sorting criteria, specified as (field, order)

Example:

filters = [
    {"field": "Released_Year", "condition": "BETWEEN", "values": [1960, 1980]},
    {"field": "Genre", "condition": "LIKE", "values": ["Romance"]},
]
sort_by = ("IMDB_Rating", "DESC")
filter_results(filters, 5, sort_by)

recommend

Generates top 'k' movie recommendations based on a collection of movies.

Parameters:

  • collection (MovieCollection) : MovieCollection object to retrieve data.
  • collection_name (str): The name of the collection base recommendations on (optional).
  • k (int): The number of top recommendations to return.

Example:

recommend(collection, 7)

display_dashboard

Combine all visualizations into a single HTML dashboard and display it in the browser.

Parameters:

  • user_collection (MovieCollection): The user's collection.
  • collection_name (str): The name of the collection.
  • period (str) : The period criterion ('month' or 'year').
  • year (int) : The specific year to filter the data (optional).

Example:

display_dashboard(collection, None, "Year")

Prerequisites

  • Python 3.11 or higher
  • Couchbase Server
  • Couchbase Python SDK
  • poetry

Contact

For questions or feedback, please contact:

Jane

Email: janexshen@gmail.com

Jenny

Email: je.chung301@gmail.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gemflix-0.0.1.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gemflix-0.0.1-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file gemflix-0.0.1.tar.gz.

File metadata

  • Download URL: gemflix-0.0.1.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for gemflix-0.0.1.tar.gz
Algorithm Hash digest
SHA256 9ff953ace9129b75114f782623605dc43e21db79cbc338a41d76979945529c21
MD5 1ab92a02df6d11bc0305ab2c21319e92
BLAKE2b-256 5d0096ea906350383c2a18f5e160ab066e4fc563d1d6dde4b3350b2818ea28e6

See more details on using hashes here.

File details

Details for the file gemflix-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: gemflix-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 17.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for gemflix-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 08dd57994a38c00e2616dc49555f7bbb72befd3a9c03f553396d733589ee05d1
MD5 7e0862bd421eaf66edf64ceaca744fe4
BLAKE2b-256 f2e2307ef017d0139a6c5af7bc462c0d8266cc790f1beb74596ce53bd64a94a6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page