Skip to main content

🎥 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

Metadata

Release files for gemflix 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gemflix 0.0.1
File Size Uploaded Provenance Actions
gemflix-0.0.1.tar.gz 16.6 kB Without provenance Details for gemflix-0.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gemflix 0.0.1
File Interpreter ABI Platform Actions
gemflix-0.0.1-py3-none-any.whl Python 3 none any Details for gemflix-0.0.1-py3-none-any.whl

Total release size: 34.5 kB

Release files / gemflix-0.0.1.tar.gz

Download URL gemflix-0.0.1.tar.gz
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9ff953ace9129b75114f782623605dc43e21db79cbc338a41d76979945529c21
BLAKE2b-256 checksum
How to use checksums
5d0096ea906350383c2a18f5e160ab066e4fc563d1d6dde4b3350b2818ea28e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.11.9

Release files / gemflix-0.0.1-py3-none-any.whl

Download URL gemflix-0.0.1-py3-none-any.whl
Size 17.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
08dd57994a38c00e2616dc49555f7bbb72befd3a9c03f553396d733589ee05d1
BLAKE2b-256 checksum
How to use checksums
f2e2307ef017d0139a6c5af7bc462c0d8266cc790f1beb74596ce53bd64a94a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.11.9

Security for gemflix 0.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page