🎥 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.
🚀 Features
-
User Management:
- Sign up new users with personalized collections.
-
Movie Management:
- Add and manage movies in your collection.
- Delete movies or collections.
-
Search Functionality:
- Search movies by keywords (e.g. father daughter story)
- Filter movies by custom filters (e.g. title, genre, director, or actor)
-
Recommendation System:
- Get personalized movie recommendations based on user preferences.
-
Data Analysis:
- Analyze user moive data such as:
- basic descriptive statistics.
- Top directors in the collection.
- Most popular genres.
- Analyze user moive data such as:
-
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.
- Visualize data trends, including:
📜 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 filtercondition(str) : The condition to applyvalues(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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.