Question

pm,

Important Information

You do NOT need a YouTube/Google account to complete and achieve a high mark for this

assignment. You will only be required to read YouTube video data from a file.

You can do this assignment in pairs. You must let me know who you are pairing with and only one

submission is required.

The assignment is worth 40% of the overall topic mark. The 40% is broken down into three phases

as discussed below.

Specification

The assignment is to design, implement, test, and document a command line application to analyse

the results of a YouTube search using the YouTube Data API: e.g. "Trending Topics" of YouTube

videos.

YouTube is a global video-sharing website headquartered in San Bruno, California, United States. The

site allows users to upload, view, rate, share, and comment on videos. Available content includes

video clips, TV clips, music videos, movie trailers, and other content such as video blogging, short

original videos, and educational videos. User can also add a title and description to the videos and

by examining the contents of and detecting which words appear frequently across titles and

descriptions we can detect "trending topics." See below for more information on YouTube and the

YouTube Data API that generate the list of videos used in this assignment:

YouTube: https://www.youtube.com/yt/about/en-GB/

Wikipedia on Youtube: https://en.wikipedia.org/wiki/YouTube

YouTube Data API: https://developers.google.com/youtube/v3/getting-started

YouTube Data API for listing videos: https://developers.google.com/youtube/v3/docs/videos/list

It is your job to develop a command line application that can detect the YouTube Trending Topics./nAssignment Phases Overview

The assignment is broken down into three phases:

1. Parse a YouTube video data string in into a YouTube video object

[40% ]

2. Sort Video objects by different features (e.g. title, channel title, views, date, etc.) [20%]

3. Index the list of videos for word usage, aka "Trending Topics"

[20%]

You must also submit a document that describes what you have done, how it relates to the theory

sections of the topic and any extra features that you have built for your application. You will also

include the final revision number for your code in the repository. This document will be submitted

via Canvas.

4. Application description document

[20%]

At each phase you should extend at the command line interface to display the results of your

improvement and allow the user to interact with the underlying data structures and algorithms.

Each phase will have marks allocated as follows:

• 70% Correctness

• 15% In Code Documentation

• 15% Demonstration and Testing Code

Your submission will be the contents of your repository directory for the assignment and

a PDF of your Application Description document submitted via Canvas

In Code Documentation

Your code should be documented. That is, it should contain Javadoc comments that describe

methods, classes, instance and class variables, etc., which you have written.

Use Javadoc (see http://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/index.html)./nPhase 1 Detailed Description [up to 40%]

The goal of phase 1 is to parse a YouTube data string in into a video object. You will need to at least:

• Create a Java class called YouTube video to represent the contents of a video (minimum

of):

o channelld, channelTitle, publishedAt (date), title, description, viewCount

• Create a Java class called YouTube DataParser that can take a file name and extract a list

of videos from the given JSON file

• Create a Java class called YouTube DataParserException that extends Exception to

indicate a parsing error. The YouTube DataParser should throw this exception when it

encounters an error during the parsing of a JSON file (e.g. the file not found, malformed

JSON file)

• Document the code using Javadoc.

Phase 2 Detailed Description [up to 20%]

Phase 2 is to sort Videos by different features of your newly created YouTubeVideo object (e.g.

Channel, Date, etc.). You will need to at least be able to sort videos based on

the channel title,

the published at date,

the number of views,

•

• something to do with the description of the video (e.g. its length).

You can use the static methods of the utility class Collections to sort your videos. Add Javadoc to

your code to document the added functionality.

Phase 3 Detailed Description [up to 20%]

The task of phase 3 is to implement a trending topic analyser for the list of videos. This amounts to

indexing the word usage across the title and description of the videos. A simple way to do this is to

count the number of times a single word appears in the list of videos. Figure 1 lists a pseudo code

example for indexing the words used in videos.

SomeCollection words (this could be a set, list, map, etc)

for each ideo

Question image 1Question image 2Question image 3