Soroushsbr / Second-Assignment-CineScribe

AP Second Assignment: CineScribe, a movie information aggregator app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Second Assignment: CineScribe πŸŽ₯

Welcome to your second assignment in the Advanced Programming course! In this project, you'll be tasked with building a Java application that acts as a simple movie aggregator, fetching data from both the IMDB and Actor API to provide information about movies and actors/actresses.

Objectives ✏️

By completing this assignment, you will:

  • Reinforce your understanding of Object-Oriented Programming (OOP) principles and apply them effectively.
  • Gain familiarity with the process of issuing HTTP requests to APIs and parsing JSON data in Java.
  • Learn to manage and track changes in your project using Git.

Prerequisites βœ…

Before getting started, ensure you have the following installed:

  • Java 21
  • Git
  • Gradle as a package manager

Tasks πŸ“

  1. Fork this repository and clone it to your local machine.

  2. Create a new branch named develop and switch to it. All development should be done in this branch.

  3. Get an API key from https://omdbapi.com (for Movie class) and https://api-ninjas.com/api/celebrity (for actor class). You need to sign up and verify your account.

  4. Design Movie and Actor classes with appropriate methods and attributes. Complete the methods in the code and add at least one new attribute for each class, then write a new method to get the attribute's proper value using JSON string.

  5. Implement a menu in your Main class. This menu should allow users to:

    • Enter the name of a movie and display information extracted from the JSON object in the console, including the list of actors.
    • Choose an actor from the displayed list and view their information in the console. If the actor is deceased, display him/her date of death.
  6. Add error handling to handle cases where the API returns an error or the movie/actor name is not found. For instance, if the user enters the movie name "Tis Is Us," and the API responds with {"Response":"False","Error":"Movie not found!"}, the program should prompt the user to enter a new movie name until a valid one is provided.

  7. Write a comprehensive report detailing the tasks you have completed and any challenges you encountered. Your report should be written in Markdown format. You can write your report in the provided Report-Template.md file located within the repository, which serves as a simple template for structuring your report.

  8. Commit your changes and push them to your GitHub repository.

  9. Submit a pull request from your develop branch to your main branch. Your mentor will review the pull request and merge it upon approval.

Evaluation πŸ“ƒ

Your submission will be evaluated based on the following criteria:

  • Your code should pass all the tests provided in the test directory.
  • Error-free compilation and execution of your code.
  • Accurate retrieval and presentation of movie and actor data through the methods written.
  • Clear code structure, readability, thorough commenting, and adherence to clean code principles.

Note: Usage of ChatGPT or any other AI generative model to complete any part of this assignment is strictly prohibited. Violation will result in a score of 0 without warnings.

Bonus Objectives βœ’οΈ

For additional challenges and learning opportunities, consider the following bonus objectives:

  • Enhance your classes to display more comprehensive information about movies and actors.
  • Revise your report to provide more detailed insights into your approach and challenges faced.
  • Utilize Postman for API testing and exploration. Postman is a powerful API client that simplifies the process of testing, documenting, and sharing APIs. It provides an intuitive interface for sending HTTP requests, allowing developers to explore and interact with APIs effortlessly.
  • Provide a simple GUI (Graphical User Interface) for your project. The recommended library to do so is JavaFX. JavaFX empowers developers to create dynamic and engaging user interfaces for their Java applications, offering a modern and versatile platform for building cross-platform desktop, web, and mobile applications

Submission βŒ›

The deadline for submitting your code is Thursday, March 7 (17th of Esfand).

Resources πŸ“š

For assistance with this assignment, you may refer to the following resources:

πŸ”— How to Write a Good README File for Your GitHub Project

πŸ”— A Simple Readme Template

πŸ”— Markdown Cheet Sheet

πŸ”— Getting Json Data From A RESTFUL API Using Java

πŸ”— Uploading a File and JSON Data in Postman

πŸ”— Send API requests and get response data in Postman

πŸ”— Getting Started With Javafx

πŸ”— JavaFX Tutorial by Jenkov

About

AP Second Assignment: CineScribe, a movie information aggregator app


Languages

Language:Java 100.0%