Skip to content

This is a project from Software Development course. I developed a digital film library importing real movies data from this dataset MovieLens + IMDb/Rotten Tomatoes

Notifications You must be signed in to change notification settings

gmitaros/DigitalFilmLibrary

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

Ηλεκτρονική Ταινιοθήκη

Θέλουμε να φτιάξουμε με ηλεκτρονική ταινιοθήκη. Για να μπορέσουμε να δουλέψουμε με πραγματικά δεδομένα, θα χρησιμοποιήσουμε το data set hetrec2011-movielens-2k από το GroupLeans research group (http://www.grouplens.org) και συγκεκριμένα το dataset “MovieLens + IMDb/Rotten Tomatoes” από το σύνδεσμο https://grouplens.org/datasets/hetrec- 2011/.

Για τις ταινίες κρατάμε στοιχεία όπως: ένα id, τίτλο, το id και το URL φωτογραφιών από (α) την IMDB και (β) το Rotten Tomatoes, καθώς και διάφορα στοιχεία από το Rotten Tomatoes, όπως τον αριθμών των σχολίων που έλαβε μια ταινία, το μέσο σκορ, …, από (α) τους κριτικούς και (β) το κοινό. Μια ταινία μπορεί να ανήκει σε περισσότερα από ένα «είδη» (genres) και φυσικά, κάθε είδος έχει πολλές ταινίες που εμπίπτουν σε αυτό. Ένας σκηνοθέτης παρατίθεται για κάθε ταινία (για την ακρίβεια, μία συμβολοσειρά που μπορεί να έχει τα ονόματα όλων των σκηνοθετών της ταινίας, αν αυτοί είναι πολλοί). Παρατίθενται επίσης όλοι οι σημαντικοί ηθοποιοί μιας ταινίας. Μια ταινία έχει μία χώρα προέλευσης και πολλές τοποθεσίες στις οποίες γυρίστηκε.

Η λίστα των πράξεων που μπορεί να κάνει ο χρήστης του συστήματός σας είναι η εξής.

ΠΡΑΞΕΙΣ ΦΟΡΤΩΣΗΣ ΔΕΔΟΜΕΝΩΝ

  • Ο χρήστης μπορεί να φορτώσει όλη την πληροφορία για τις ταινίες στο σύστημα, εκτός από ratings και tags. Αυτό σημαίνει ότι έχετε σχεδιάσει τις κλάσεις αναπαράστασης για τις πληροφορίες που είναι μέσα στα αρχεία και φορτώνετε όλα τα στοιχεία στο πρόγραμμά σας. Η πράξη αυτή είναι προαπαιτούμενο για όλες τις επόμενες πράξεις. Προσοχή: δεν αρκεί να φορτώσετε τα σχετικά αρχεία. Πρέπει ΥΠΟΧΡΕΩΤΙΚΑ να μπορείτε να διασυνδέσετε τα επί μέρους στοιχεία μεταξύ τους (π.χ., για κάθε ταινία θέλουμε μια συλλογή από τα είδη στα οποία ανήκει και για κάθε είδος μια συλλογή από τις ταινίες που εμπίπτουν σε αυτό. Αντίστοιχα με τους ηθοποιούς, σκηνοθέτες και τις χώρες προέλευσης και γυρισμάτων. Τα νούμερα από τα ratings, as well as the detailed filming locations μπορούν να είναι απλά πεδία. Οι ηθοποιοί και οι σκηνοθέτες έχουν και ένα μοναδικό χαρακτηριστικό στα σχετικά αρχεία, που μπορεί να χρησιμοποιηθεί για να αναπαρασταθούν μοναδικά.

ΕΡΩΤΗΣΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ

Ο χρήστης μπορεί να κάνει ερωτήσεις διαφόρων ειδών. Οι απαντήσεις υπολογίζονται από το σύστημά σας όπως προδιαγράφεται εδώ (πρέπει να αποφασίσετε εσείς πώς αναπαριστώνται) αλλά ανακτώνται από τον χρήστη όπως φαίνεται στην υποενότητα «ΠΑΡΑΓΩΓΗ ΚΕΙΜΕΝΟΥ».
  • Αναζήτηση συνοπτικής περιγραφής ταινίας. Ο χρήστης ερωτάται και πρέπει να προσδιορίσει για ποια ταινία ενδιαφέρεται (by Id ή by title). Ανακτώνται τα στοιχεία που φορτώθηκαν στην πράξη (1) με οργανωμένο τρόπο (διαλέγετε εσείς πώς) ώστε να εξυπηρετηθεί η μετέπειτα παραγωγή κειμένου.
  • Αναζήτηση όλων των ταινιών ενός είδους. Ο χρήστης ερωτάται για το είδος για το οποίο ενδιαφέρεται. Στην αρχή χρειάζεται να κατασκευαστεί μια συμβολοσειρά με μια πρόταση που περιγράφει τον αριθμό των ταινιών που ανακτήθηκαν. Μετά ακολουθεί η λίστα με τις ταινίες. Για κάθε ταινία επιστρέφεται τίτλος, ημερομηνία, σκηνοθέτης.
  • Αναζήτηση όλων των ταινιών μιας χώρας προέλευσης, ή ενός ηθοποιού, ή κάποιου σκηνοθέτη (by name). Ως άνω.

Σε κάθε απάντηση που παράγετε, χρειάζεται τίτλος και ένα αρχικό συνοδευτικό κείμενο.

ΠΑΡΑΓΩΓΗ ΚΕΙΜΕΝΟΥ

  1. Ο χρήστης μπορεί να ανακτήσει την απάντηση στην ερώτηση ως δομημένο κείμενο. Ο χρήστης, κατά την υποβολή της ερώτησης (και όχι κατά την παραγωγή του κειμένου) ερωτάται και πρέπει να προσδιορίσει σε ποιο από τους παρακάτω τρόπους θέλει την απάντηση:
    • αρχείο κειμένου,
    • αρχείο html,
    • αρχείο σε ένα υποσύνολο της γλώσσας Markdown (βλ. παρακάτω) που περιλαμβάνει (α) τα 2 πρώτα είδη headings, (β) παραγράφους, και ενδεχομένως, (γ) bullet lists.
    • αρχείο pdf (βλ. ευθύς αμέσως) Ο χρήστης ερωτάται επίσης και για το όνομα του αρχείου που θα παραχθεί.
  2. Ο χρήστης μπορεί να κατασκευάσει ένα pdf για το αποτέλεσμα μιας ερώτησης. Αυτό μπορεί να γίνει είτε ανακτώντας ένα από τα παραγχθέντα αρχεία της πράξης (1) και μετατρέποντάς σε pdf, είτε (β) εξάγοντας pdf από το αποτέλεσμα της ερώτησης. Συγκεκριμένα η είσοδος μπορεί να είναι:
    • Συλλογή από συμβολοσειρές. Ο σχετικός κώδικας λαμβάνει ως παραμέτρους εισόδου μια λίστα από συμβολοσειρές, και το όνομα του αρχείου pdf που θα δημιουργηθεί.
    • Αρχείο κειμένου. Ο σχετικός κώδικας λαμβάνει ως παραμέτρους εισόδου ένα αρχείο κειμένου που θα μετατραπεί σε pdf, και, ενδεχομένως, και το όνομα του αρχείου pdf που θα δημιουργηθεί. Αν δεν δοθεί όνομα, το αρχείο προορισμού έχει το ίδιο όνομα με το αρχείο κειμένου, αλλά το επίθεμά του είναι “.pdf”.

ΕΠΙΠΛΕΟΝ ΣΤΟΙΧΕΙΑ

Προφανώς, ο χρήστης θα πρέπει επίσης να μπορεί να αποχωρήσει ομαλά από το πρόγραμμα. Σε όλα τα παραπάνω, εκτός κι αν προσδιορίζεται αλλιώς, το σύστημα επιστρέφει ένα κωδικό λάθους μικρότερο της μονάδας αν κάτι δεν πάει καλά (π.χ., το αρχείο εισόδου δεν υπάρχει, ή δεν γίνεται να αναγνωσθεί, ή το αρχείο προορισμού δεν μπορεί να γραφεί, κλπ) ή επιστρέφει κάποιο μη αρνητικό ακέραιο αν η πράξει εκτελεσθεί σωστά. Η τιμή επιστροφής πρέπει να έχει ένα νόημα (π.χ., πόσες εγγραφές αναγνώσθηκαν ή καταγράφηκαν) ή έστω 0 αν αυτό δεν είναι εύκολο. Ο περιορισμός αυτός στην τιμή επιστροφής, πάντως, σημαίνει ότι οι λίστες παραμέτρων των σχετικών μεθόδων θα περιλαμβάνουν και τα όποια αποτελέσματα πρέπει να περάσουν στην κύρια μνήμη.

Διαχείριση αρχείων Pdf προγραμματιστικά

Θα χρησιμοποιήσετε τη βιβλιοθήκη itext5 που διατίθεται ως free/open source software (F/OSS) κάτω από την AGPL license (https://itextpdf.com/Products/itext-core ) και την οποία θα βρείτε στο https://github.com/itext/itextpdf μέσω του https://developers.itextpdf.com/itext-java. Ο σύνδεσμος https://github.com/itext/itextpdf/releases/latest έχει ίσως την πιο ολοκληρωμένη εκδοχή για να κατεβάσετε. Το βασικό jar που θα πρέπει να προσθέσετε στο build path της εφαρμογής σας είναι το itext5- itextpdf-5.5.12.jar. Για να μπορέσετε να μπείτε στο πνεύμα, από το βιβλίο https://www.manning.com/books/itextin- action-second-edition μπορείτε να χρησιμοποιήσετε τα κεφάλαια 1 και 6 και κυρίως τα παραδείγματα που δίδονται στο https://manningcontent. s3.amazonaws.com/download/b/e71cc48-85e7-4530-ace6- e8bd1a92e08c/SourceCodeiText.zip καθώς και στο https://developers.itextpdf.com/examplesitext5.

About

This is a project from Software Development course. I developed a digital film library importing real movies data from this dataset MovieLens + IMDb/Rotten Tomatoes

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages