Skip to content

tomisanhues2/Final_Udacity

Repository files navigation

 

Mediabase

Github top language Github language count Repository size License

🚧 Mediabase 🚀 Under construction... 🚧


About   |   Features   |   Technologies   |   Requirements   |   Starting   |   Usage   |   Documentation


🎯 About

Mediabase is a c++ Application which allows you to search for any movie using it's name and will give you many relevant information regarding the movie you have entered. This project was made for the Udacity Nanodegree Program Capstone final project.

This application utilizes OMDbAPI to generate GET requests to IMDB and obtain all the movie data.

✨ Features

Obtain the following information for any movie;
✔️ Title
✔️ Year
✔️ Runtime
✔️ Director
✔️ Genre
✔️ Actors
✔️ Plot
✔️ Awards
✔️ Metascore
✔️ IMDBRating

image.png

🚀 Technologies

The following tools were used in this project:

✅ Requirements

Before starting 🏁, you need to have CURL, OpenCV, wxWidgets and LibCURL installed.

**CMAKE required version 3.14+ **C++ standard 17 or above

cmake will attempt to download nlohmann_json and HTTPRequest on its own

🏁 Starting

# Clone this project
$ git clone https://github.com/tomisanhues2/final_udacity

# Access
$ cd final_udacity

# Make build directory
$ mkdir build && cd build

# Compile the project to check dependencies
$ cmake ..
$ make

#Run the app
$./FinalProjectTest1/FinalProjectTest1

Usage

Once the program has been executed you will be greeted with the following.

Program Main Menu]

All you have to do is enter a movie name and press the search button to have all the information displayed!

Documentation

**Rubric Criteria** **Specifications** **Related file** **Description**
The project demonstrates an understanding of C++ functions and control structures.
  • A variety of control structures are used in the project.
  • The project code is clearly organized into functions.
The program utilizes Classes, struct, funtions, header files and many more to ensure it is organized and works accordingly
The project reads data from a file and process the data, or the program writes data to a file. The project reads data from an external file or writes data to a file as part of the necessary operation of the program. It will save the img to display to the user in your user tmp folder, then access it, resize it and save it again to be displayed.
The project accepts user input and processes the input. The project accepts input from a user as part of the necessary operation of the program. The program uses wxWidgets TextCtrl element to allow the user to input the name of the movie to be searched
The project uses Object Oriented Programming techniques. The project code is organized into classes with class attributes to hold the data, and class methods to perform tasks. Self descriptive
Classes use appropriate access specifiers for class members. All class data members are explicitly specified as public, protected, or private. All the classes have all of their data members specificed in the header file
Class constructors utilize member initialization lists. All class members that are set to argument values are initialized through member initialization lists. All constructors meet this requirement
Classes abstract implementation details from their interfaces. All class member functions document their effects, either through function names, comments, or formal documentation. Member functions do not change program state in undocumented ways. Many comments are used to outline all the operations in the program
Classes encapsulate behavior. Appropriate data and functions are grouped into classes. Member data that is subject to an invariant is hidden from the user. State is accessed via member functions. There are private data members which hidden for the user and ensure the program runs accordingly
Classes follow an appropriate inheritance hierarchy. Inheritance hierarchies are logical. Composition is used instead of inheritance when appropriate. Abstract classes are composed of pure virtual functions. Override functions are specified. The functionality of wxWidgets is essential in inheritance allowing the program to create it's own class objects to modify
Overloaded functions allow the same function to operate on different parameters. One function is overloaded with different signatures for the same function name. The functionality of wxWidgets is essential in inheritance allowing the program to create it's own class objects to modify
The project uses destructors appropriately. At least one class that uses unmanaged dynamically allocated memory, along with any class that otherwise needs to modify state upon the termination of an object, uses a destructor. There are no pointers left hanging, all memory management is done by either the library or the program itself.
The project uses multithreading. The project uses multiple threads in the execution. Progress bar to prevent the ability to spam search running in a different thread so the program can keep managing data
A mutex or lock is used in the project. A mutex or lock (e.g. std::lock_guard or `std::unique_lock) is used to protect data that is shared across multiple threads in the project code.
A condition variable is used in the project. A std::condition_variable is used in the project code to synchronize thread execution. Wait until the time has passed to enable the SEARCH button again

 

Made with ❤️ by Tomisanhues2

Back to top

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published