[CSV] Comma Separated Values

Πριν το βάψεις μπλε και το ρίξεις στη θάλασσα γιατί δεν ρίχνεις μια ματιά εδώ;

Συντονιστές: kostas213, markelos

Απάντηση
Neo
Δημοσιεύσεις: 633
Εγγραφή: Τετ Νοέμ 01, 2006 2:46 pm
Real Name: Thomas Anderson
Gender: Male
Facebook ID: 0
Τοποθεσία: Η μόνη μου πατρίδα είναι ο χρόνος!!!

[CSV] Comma Separated Values

Δημοσίευση από Neo »

Είχα σήμερα λίγο χρόνο για να ασχοληθώ με το καινούριο μου κινητό (αφού το παλιό αρνούταν να κάνει έστω απλά πράγματα όπως πχ να... δουλέψει)...

Είχα αμανάτι από την εποχή που το ξεκλείδωσα ένα καλώδιο USB (χρυσοπληρωμένο) ενώ το καινούριο κινητό είχε μέσα στο πακέτο του και το καλώδιο. Επίσης, είχα αποθηκευμένες τις "επαφές" (αλήθεια, δεν μπορούσαν να βρουν μια άλλη λέξη; ), το πρόβλημα όμως ήταν ότι ο Manager του παλιού τηλεφώνου μπορούσε να εξάγει τα ονόματα, μόνο ως CSV.

Αναγκαστικά λοιπόν, έπρεπε να δουλέψω έτσι, ή να περάσω όλα τα τηλέφωνα ένα-ένα, με το χέρι (έστω και μέσω υπολογιστή).

Άνοιξα το συγκεκριμένο αρχείο και έβγαλε ένα σωρό βλακείες. Γινόταν της κακομοίρας. Πήγα να το παίξω έξυπνος και ζήτησα από τον Manager του καινούριου κινητού να τα εισάγει από το παλιό αρχείο...

Αμ δε! Το μπούλο πήρα!

Από τα "συμφραζόμενα", κατάλαβα ότι έπρεπε να συμφωνούν οι στήλες των δύο αρχείων. Πώς όμως να κάτσω να αλλάξω 500 τηλέφωνα με 50 στήλες το καθένα χωρίς να γίνει μ@λ@κί@; Τι σου είναι το internet ρε παιδί μου...

Βρήκα ένα προγραμματάκι, το οποίο παίρνει το αρχείο .csv και σου δίνει τη δυνατότητα να το επεξεργαστείς. Να κάνεις ό,τι θέλεις!!!

CSVeditor λέγεται, τζάμπα είναι... Έκατσα λοιπόν και έπαιξα! Τρεις ωρίτσες έφταναν.

Καταρχήν χρειάστηκε να κρατήσω από το αρχείο του παλιού τηλεφώνου μόνο τόσες λίστες, όσες χρειαζόταν το καινούριο. Πώς όμως θα ήξερα πόσες και ποιες λίστες ήθελε το καινούριο;

Η αλήθεια είναι ότι το παλιό φάνηκε να έχει περισσότερες λειτουργίες από το καινούριο, όμως ήταν ως επί το πλείστον άχρηστες. Τι να κάνω το "θέση στην εταιρεία" πχ; Σιγά μην το χρησιμοποιούσα ποτέ. Κι εδώ τίθεται ένα θέμα όσον αφορά τη φιλοσοφία που χρησιμοποιεί ο κάθε κατασκευαστής.

[Eθνικιστής_Mode]Γιαπωνέζοι και οι δύο, αλλά μάλλον δεν έχουν αυτοί κοινά χαρακτηριστικά μεταξύ τους όπως οι Ελληνάρες [/Eθνικιστής_Mode]

Αφού είδα λοιπόν τι θέλει το καθένα, άρχισα να τα φτιάχνω... Πλάκα είχε!

Και μετά από 2 ώρες δουλειάς, ξαφνικά... ΠΕΦΤΕΙ ΤΟ ΡΕΥΜΑ!!!

(Πλάκα κάνω ντε!)

Δεν έπεσε το ρεύμα. Ήμουν σίγουρος ότι ήμουν στη σωστή κατεύθυνση. Και μπορεί να είχα χάσει χρόνο (ίσως τόσο όσο θα χρειαζόμουν για να τα περάσω με το χέρι) αλλά έμαθα αρκετά πράγματα. Κάτι έλειπε όμως... Κι αυτό ήταν μία στήλη με "-1" που ζήταγε στην αρχή του ".csv"  το καινούριο κινητό.

Αφού λοιπόν την έβαλα, πήγα να το δοκιμάσω.

Κι έπεσα από τα σύννεφα. Οι "επαφές" είχαν μπει, όμως εμφανίστηκε ξανά ένα πρόβλημα που περίμενα ότι θα είχε λυθεί. Η αλφαβιτική σειρά ήταν Γ.Τ.Π. καβάλα. Γινόταν της κακομοίρας. Την ψιλιάστηκα όμως τη δουλειά. Ας είναι καλά οι υστερίες του drcypher με την ονοματοδοσία.

Ενώ λοιπόν μέχρι ένα σημείο (προφανώς μέχρι τότε που μου έκλεψαν το πιο παλιό κινητό) τα ονόματα ήταν μια χαρά, όλα τα υπόλοιπα έκαναν πάρτυ. Εδώ, θέλω να τονίσω ότι τα δύο παλιότερα κινητά ήταν της ίδιας εταιρείας και μάλιστα πολύ συγγενικά μοντέλα (εμφανισιακά ίδια) :P

Ο σωτήρας μου λοιπόν (το μικρό εκείνο προγραμματάκι) είχε μια επειλογή, με την οποία έκανε όλα τα γράμματα lower_case. Μπόρεσα λοιπόν να δω ότι το προηγούμενο κινητό ενώ υποτίθεται ότι εγώ έγραφα ελληνικά, αυτό καταλάβαινε αιωνίως ένα μείγμα από ελληνικά, αγγλικά και greeklish. Κοινώς... Γινόταν της επί χρήμασι εκδικομένης γυναικός το σιδηρούν κιγκλίδωμα...

Είχε λοιπόν και μια επιλογή που μπορούσε να αντικαταστήσει χαρακτήρες μέσα στο .csv

Και την εκμεταλλεύτηκα δεόντως. Ήμουν βέβαια διστακτικός ως προς το να τα βάλω όλα ελληνικά, δεδομένου του ότι έχω κακές εμπειρίες, όμως αφού δούλεψε είμαι πανευτυχής.

Με προβληματίζει όμως το εξής...

Αυτός που έφτιαξε το πρόγραμμα, γιατί το έφτιαξε; Φαντάζομαι ότι κάτι παρόμοιο με εμένα θα ήθελε να κάνει. Όμως, πόσο καιρό του πήρε να το φτιάξει;

Προφανώς και η χρήση του προγράμματος δεν περιορίζεται μόνο σοτυς καταλόγους κινητών, αλλά και σε βάσεις δεδομένων γενικότερα. Απλά, το θέτω υπόψιν όσων επιχειρήσουν κάτι αντίστοιχο.

Ποτέ άλλωστε δεν ξέρεις τι πρόβλημα ταλαιπωρεί τους συμ-forumίτες σου!!!
Άβαταρ μέλους
drcypher
Portal Administrator
Portal Administrator
Δημοσιεύσεις: 2300
Εγγραφή: Τετ Νοέμ 01, 2006 7:33 am
Real Name: Κώτσος Φίλ
Gender: Male
Τοποθεσία: Μπροστά στην οθόνη

Re: [CSV] Comma Separated Values

Δημοσίευση από drcypher »

Neo έγραψε:Αυτός που έφτιαξε το πρόγραμμα, γιατί το έφτιαξε; Φαντάζομαι ότι κάτι παρόμοιο με εμένα θα ήθελε να κάνει. Όμως, πόσο καιρό του πήρε να το φτιάξει;

Προφανώς και η χρήση του προγράμματος δεν περιορίζεται μόνο σοτυς καταλόγους κινητών, αλλά και σε βάσεις δεδομένων γενικότερα. Απλά, το θέτω υπόψιν όσων επιχειρήσουν κάτι αντίστοιχο.
Ενδεχομένως να του πήρε και λιγότερο από 3 ώρες :P Το έφτιαξε προφανώς για κάποιον παρόμοιο λόγο. Να σου πω ένα (ψιλοπαρόμοιο) παράδειγμα: Έχω όλα μου τα mp3 σε έναν κατάλογο mp3, χωρισμένα ανά όνομα καλλιτέχνη κτλ.. Επειδή είμαι και λίγο τρίχας επιθυμώ τα παρακάτω:
1. Τα tags να είναι συμπληρωμένα στα ελληνικά και μάλιστα σωστά. Δηλ. ο τίτλος, το όνομα καλλιτέχνη (πρώτα επώνυμο, μετά μικρό), να υπάρχει (όπου γίνεται) ο τίτλος του album, το έτος έκδοσης, το Α/Α του τραγουδιού και ο συνολικός αριθμός τραγουδιών του album
2. Τα ονόματα των mp3 να περιέχουν τον τίτλο του τραγουδιού σε μια από τις δυο παρακάτω μορφές:
* xx_titlos_tragoydioy.mp3 (όταν βρίσκονται στον φάκελο όπου υπάρχουν ΟΛΑ τα τραγούδια του album)
* onoma_kallitexnh-onoma_tragoydioy.mp3 (όταν βρίσκονται σε κάποιον κατάλογο με διάφορες επιλογές, και όχι στον κατάλογο του πλήρους album)

Η πρώτη αξίωση για να είμαι ειλικρινής είναι κόμπλεξ. Απλώς θέλω να είναι σωστά βαλμένα. Όχι μόνο ενός άλμπουμ ή mp3, αλλά ΟΛΩΝ.

Η δεύτερη έχει πρακτική αξία. Η αναζήτηση ενός τραγουδιού μπορεί να γίνει με δυο τρόπους:
1. Να βάλεις το ψαχτίρι να αναζητήσει π.χ. έναν τίτλο ή το όνομα καλλιτέχνη μέσα στο MP3. Που σημαίνει ότι για μια λίστα 50GB πρέπει να ψάξεις ανάμεσα σε 50GB δεδομένων
2. Να το βάλεις να ψάξει στα ονόματα των αρχείων, που είναι μερικές εκατοντάδες φορές πιο γρήγορο καθώς δεν ανοίγει αρχεία, αλλά ψάχνει μόνο το index του filesystem (ή στην περίπτωση του linux υπάρχει εργαλείο που φτιάχνει hashes για πιο γρήγορη αναζήτηση αρχείων βάσει του ονόματός τους).

Επειδή προτιμώ την δεύτερη περίπτωση (για προφανείς λόγους) το πρόβλημα είναι κάτι παραπάνω από εμφανές: Όταν αφήνεις τα mp3 με ονοματολογία-ό,τι-να-ναι (π.χ. track_xx.mp3, ΤΙΤΛΟΣ.MP3, zamp-epembenis.mp3, zampetas_Epembainis.mp3) τότε απλώς πρέπει να κάνεις αναζητήσεις με όλους τους πιθανούς τρόπους που μπορεί ο άλλος να έχει ορίσει το όνομα. Και μάλιστα με ενδεχόμενο αποτυχίας (αν δεν υπάρχει ο τίτλος του τραγουδιού στο όνομα αρχείου: π.χ. track_02.mp3)

Αυτό που έκανα ήταν το εξής: Σε κάθε κομμάτι φροντίζω να βάζω τον σωστό τίτλο στα Ελληνικά. Οι επιπλέον λεπτομέρεις ορίζονται σχετικά εύκολα με ένα πρόγραμμα του Linux που λέγεται EasyTag. Κατόπιν έγραψα ένα bash script (κάτι σαν τα ανάπηρα batch που είχε το επίσης παράλυτο DOS), δηλ. ούτε καν σε γλώσσα προγραμματισμού, που κάνει το εξής:
Του δίνεις έναν κατάλογο σαν παράμετρο. Ψάχνει όλα τα .mp3, διαβάζει τα tags του, μετατρέπει αυτόματα τους χαρακτήρες με μια 1-1 αντιστοιχία από ελληνικούς σε greeklish (δηλ. α->a, ε->e, ω->v), αντικαθιστά τα spaces με '_' (συχνά τα spaces δημιουργούν προβλήματα) και αναλόγως με μια δεύτερη παράγραφο, κολλάει στην αρχή είτε το Α/Α του κομματιού είτε το greeklish-converted όνομα του καλλιτέχνη.

Έτσι ξέρω ότι αν θέλω να βρω ένα τραγούδι θα γράψω την εντολή που ψάχνει τα ονόματα αρχείων μόνο και θα της δώσω τον τίτλο στα greeklish, στη μορφή που γνωρίζω ότι μετατρέπονται τα ονόματα.



Ένα άλλο συναφές πρόβλημα: Αν γράψεις ένα cd με mp3 για να το παίξεις σε mp3 player, θα διαπιστώσεις προς ξενέρωμά σου ότι τα Ελληνικά Tags φαίνονται κινέζικα. Επίσης, πρέπει να διαλέξεις τα αρχεία από το δίσκο σου και να τα κάνεις ένα ένα copy σε έναν κατάλογο για να τα κάψεις (ή να τα κάνεις drag'n'drop στο πρόγραμμα εγγραφής). Στο linux δυστυχώς δεν μπορείς να κάνεις drag'n'drop από τον media player στο πρόγραμμα εγγραφής cd.

Το δεύτερο, λοιπόν, scriptάκι που έγραψα (πάλι σε bash) λειτουργεί ως εξής:
1. Φορτώνεις στον media player τα τραγούδια ανάμεσα στα οποία θες να κάνεις επιλογή. Κρατάς μόνο αυτά που σε ενδιαφέρουν. Κάνεις save τη λίστα.
2. Δίνεις τη λίστα στο προγραμματάκι
3. Το προγραμματάκι διαβάζει τη λίστα, αντιγράφει τα αρχεία ένα ένα σε έναν υποκατάλογο, ελέγχει τα Tags τους, και αντικαθιστά στα αντίγραφα τους Ελληνικούς χαρακτήρες με greeklish σύμφωνα πάλι με την ίδια σύμβαση.

Έτσι απλώς επιλέγεις τα αρχεία, καλείς το πρόγραμμα, και έχεις ένα αντίγραφο του directory tree σου μόνο με τα επιλεγμένα αρχεία και με τα Ελληνικά Tags converted σε greeklish.

Η πρώτη φορά που θα κάνεις κάτι τέτοιο θα σου πάρει 5 μέρες. Τη δεύτερη θα χρειαστείς 2, και μετά από κάποιο σημείο σε 2 ώρες και εφ' άπαξ θα γλιτώσεις τακτικά χαμένα 3ωρα για να κάνεις με το χέρι μια δουλειά που ο υπολογιστής μπορεί να σου κάνει σε μερικά δευτερόλεπτα.

Αρκεί να του φαίρεσαι σωστά και να τον ξεβρωμίζεις από τη σκόνη που και που :P
Από τούδε και στο εξής ως στρογγυλοί αριθμοί ορίζονται τα πολλαπλάσια του 5 και οι δυνάμεις του 2.
Neo
Δημοσιεύσεις: 633
Εγγραφή: Τετ Νοέμ 01, 2006 2:46 pm
Real Name: Thomas Anderson
Gender: Male
Facebook ID: 0
Τοποθεσία: Η μόνη μου πατρίδα είναι ο χρόνος!!!

Δημοσίευση από Neo »

Αυτό όντως είναι τεράστιο πρόβλημα με τα MP3... Έχω 6-7 GB τραγούδια που περιμένουν να τα βαφτίσω... Όλο και κάτι θα βρω όμως. Εκτός κι αν στα φέρω να τα φτιάξεις :P
Άβαταρ μέλους
sparc
Δημοσιεύσεις: 391
Εγγραφή: Τετ Νοέμ 01, 2006 9:46 am
Real Name: Γιώργος
Gender: Male
Τοποθεσία: Ε204_κ.Φυσικής!!!

Δημοσίευση από sparc »

Dr πρέπει να κοινοποιήσεις τα  scriptakia αυτά, προσωπικά βαριέμαι ελεϊνά να γράψω δικά μου, βαριέμαι να τρέξω και το EasyTag. Αν και για να είμαι ειληκρινής είναι μάλλον απελπησία παρά βαρεμάρα αφού μετά τα πρώτα 100GB mp3 απλά σταμάτησα να ασχολούμαι. Πλέον στα 288GB επικρατεί πραγματικό χάος.

@Neo: είναι πολύ εύκολο κάποιος, αν έχει όρεξη, να γράψει παρόμοια προγραμματάκια αρκετά γρήγορα! Δεν χρειάζονται κάτι περισσότερο από γνώσεις "προγραμματισμού 2", όπου τώρα με την java είναι μέσα στην ύλη και το γραφικό περιβάλλον.
Η τελευταία άσκηση στην pascal ή στην C, δεν θυμάμαι, με την στοίχηση και ανάλυση ενός κειμένου, είχε όλα όσα θα χρειαζόσουν για μία εφαρμογή κονσόλας σε DOS ή σε Linux.
I think therefore I am? Could be! Or is it really someone else who thinks he's me?
Reymond Smullyan - This book needs no title
Στενή είναι η αρετή, δεν μπορώ να αναπνεύσω· μικρός, στενός είναι ο Παράδεισος, δε με χωράει· σαν άνθρωπος μου φαίνεται ο Θεός σας, δεν τον θέλω!
Ν. Καζαντζάκης - Ασκητική
Απάντηση

Επιστροφή στο “Υπολογιστές - Εφαρμογές - Internet”