Museria - αποκεντρωμένη αποθήκευση μουσικής

Museria - αποκεντρωμένη αποθήκευση μουσικής

Μια μέρα αποφάσισα να γράψω μια εφαρμογή για να επιλέξω μουσική για μένα και να την ακούσω στο σπίτι/στο δρόμο/προπονήσεις κ.λπ. Και για να λειτουργούν όλα αυτά σε ροή, με ελάχιστη συμμετοχή από εμένα. Βρήκα μια αρχιτεκτονική, σκιαγράφησα ένα πρωτότυπο και τελικά αντιμετώπισα ένα «μικρό πρόβλημα».

Και δεν είναι σαφές πού να λάβετε τα ίδια τα αρχεία τραγουδιών. Μέχρι εκείνη τη στιγμή, το VKontakte είχε ήδη κλείσει το api, σε μεγάλες πύλες μουσικής ήταν επίσης σίγαση τα πάντα, ακόμη και τα τραγούδια εκδόθηκαν σε κομμάτια για να μην αναλυθούν. Το μόνο που απέμενε ήταν μερικές μεμονωμένες ιστοσελίδες με πολλές διαφημίσεις και κάθε λογής σκουπίδια, κάθε είδους αμφίβολα προγράμματα αρπαγής και άλλες «βρώμικες» επιλογές. Σε γενικές γραμμές, ούτε μια πραγματικά καλή λύση. Μπορείτε, φυσικά, να αγοράσετε μια συνδρομή σε κάποια μουσική Yandex ή κάτι παρόμοιο. Αλλά και πάλι, δεν υπάρχει πουθενά ανοιχτό δημόσιο API και δεν έχετε πρόσβαση στη μουσική μέσω προγραμματισμού. Αρκετές μεγάλες εταιρείες έχουν ουσιαστικά περιορίσει την πρόσβαση άλλων στη μουσική. Γιατί συνέβη καθόλου αυτό; Σκάβοντας βαθύτερα, έγινε σαφές ότι το κύριο πρόβλημα ήταν τα πνευματικά δικαιώματα. Η τρέχουσα λύση με τη μορφή συνδρομών ταιριάζει σε πολλούς εμπορικούς δημιουργούς μουσικής και σε αυτές τις ίδιες εταιρείες. Ταυτόχρονα, στη γενική λίστα εμπίπτει και η μη εμπορική και ημιεμπορική μουσική. Ή πληρώνεις για τα πάντα ή δεν ακούς τίποτα.

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

Ως αποτέλεσμα, υπάρχουν δύο βασικά προβλήματα που πρέπει να επιλυθούν:

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

Παγκόσμια αποκεντρωμένη αποθήκευση μουσικής

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

  • Ipfs - αποθήκευση για όλα και όλους. Υπάρχουν εικόνες και μουσική και βίντεο και όλα όσα θέλετε. Γενικά, ένας τόσο μεγάλος πλανητικός «σκουπιδοπόλεμος». Επομένως, όταν εκκινείτε τον κόμβο σας, λαμβάνετε αμέσως ένα τεράστιο φορτίο. Το αυτοκίνητο απλώς στριφογυρίζει από τον πόνο.
  • Κάποιος ημιτελής μηχανισμός συλλογής «σκουπιδιών». Δεν ξέρω πώς είναι τώρα, αλλά εκείνη τη στιγμή, αν γράψατε στο config ότι θέλετε να περιορίσετε την αποθήκευση σε δέκα gigabyte δεδομένων, τότε δεν σήμαινε τίποτα. Η αποθήκευση μεγάλωσε, αγνοώντας πολλές παραμέτρους διαμόρφωσης. Ως αποτέλεσμα, ήταν απαραίτητο να έχουμε ένα τεράστιο απόθεμα σκληρού δίσκου έως ότου η ipfs καταλάβει πώς να επαναφέρει τα περιττά.
  • Κατά τη χρήση της βιβλιοθήκης (δεν ξέρω πώς είναι τώρα), ο πελάτης δεν είχε εφαρμόσει χρονικά όρια. Στέλνετε ένα αίτημα για να λάβετε ένα αρχείο και αν δεν υπάρχει, τότε απλώς κολλάτε. Φυσικά, οι άνθρωποι βρήκαν κάθε είδους λύσεις που έλυσαν εν μέρει το πρόβλημα, αλλά αυτά ήταν δεκανίκια. Αυτά τα πράγματα πρέπει να βγουν από το κουτί.

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

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

Και έτσι αποδείχτηκε επάλειψη, αποθήκη, μεταστόλιο, μουσεία, μουσεία-παγκόσμια.

επάλειψη - αυτό είναι το κύριο, χαμηλότερο επίπεδο που σας επιτρέπει να συνδυάσετε κόμβους σε ένα δίκτυο. Περιέχει έναν αλγόριθμο, τον οποίο μέχρι στιγμής έχω εφαρμόσει εν μέρει με βάση περίπου 10000 διακομιστές. Η πλήρης έκδοση του αλγορίθμου είναι πολύ πιο δύσκολη στην εφαρμογή και θα απαιτούσε αρκετούς επιπλέον μήνες (ίσως και περισσότερους).

Δεν θα περιγράψω λεπτομερώς το spreadable σε αυτό το άρθρο· είναι καλύτερα να γράψετε ένα ξεχωριστό κάποια μέρα. Εδώ θα σημειώσω μόνο μερικά χαρακτηριστικά:

  • Λειτουργεί μέσω http/https.
  • Μπορείτε να δημιουργήσετε ένα ξεχωριστό δίκτυο για μια συγκεκριμένη εργασία, το οποίο θα μειώσει σημαντικά το φόρτο σε κάθε μεμονωμένο έργο από ό,τι αν ήταν όλα στο ίδιο δίκτυο.
  • Αρχικά σχεδιάστηκε ένας μηχανισμός με τάιμ άουτ και άλλα μικροπράγματα. Και αυτό λειτουργεί για όλες τις μεθόδους τόσο στον πελάτη όσο και στον κόμβο. Μπορείτε να διαχειριστείτε ευέλικτα τις ρυθμίσεις μέσα από την εφαρμογή σας.
  • Η βιβλιοθήκη είναι γραμμένη σε nodejs. Τα προβλήματα απόδοσης της στοίβας αντισταθμίζονται από την αποκεντρωμένη φύση της. Το φορτίο μπορεί να «απλωθεί» αυξάνοντας τον αριθμό των κόμβων. Σε αντάλλαγμα, υπάρχουν πολλά πλεονεκτήματα: μια τεράστια κοινότητα, απλότητα και ευκολία στη χρήση, ισομορφικός πελάτης, χωρίς εξωτερικές εξαρτήσεις κ.λπ.

αποθήκη είναι ένα επίπεδο που κληρονομείται από το spreadable που σας επιτρέπει να αποθηκεύετε αρχεία στο δίκτυο. Κάθε αρχείο έχει το δικό του κατακερματισμό των περιεχομένων του, το οποίο μπορεί να χρησιμοποιηθεί για να το ανακτήσετε αργότερα. Τα αρχεία δεν χωρίζονται σε μπλοκ, αλλά αποθηκεύονται εξ ολοκλήρου.

μεταστόλιο - ένα επίπεδο που κληρονομήθηκε από το spreadable, το οποίο σας επιτρέπει να αποθηκεύετε δεδομένα στο δίκτυο, αλλά όχι αρχεία. Η διεπαφή είναι παρόμοια με μια βάση δεδομένων Nosql. Μπορείτε, για παράδειγμα, να προσθέσετε ένα αρχείο στο storacle, να λάβετε τον κατακερματισμό του και να το γράψετε στο metastocle με έναν σύνδεσμο προς κάτι.

μουσεία - κληρονομήθηκε από storacle και metastocle. Αυτό το επίπεδο είναι άμεσα υπεύθυνο για την αποθήκευση μουσικής. Η αποθήκευση λειτουργεί μόνο με αρχεία mp3 και ετικέτες id3.

Ως «κλειδί» του τραγουδιού, χρησιμοποιείται το πλήρες όνομά του στη φόρμα Καλλιτέχνης (TPE1) - Τίτλος (TIT2). Για παράδειγμα:

  • Brimstone - The Burden
  • Hi-rez - Lost My Way (feat. Emilio Rojas, Dani Devinci)

Μπορείτε να μάθετε όσο το δυνατόν περισσότερες λεπτομέρειες πώς διαμορφώνονται οι τίτλοι των τραγουδιών. εδώ. Πρέπει να κοιτάξετε τη λειτουργία utils.beautifySongTitle().

Το ποσοστό των αντιστοιχιών που ορίζεται στις ρυθμίσεις κόμβου θεωρείται αντιστοιχία. Για παράδειγμα, μια τιμή 0.85 σημαίνει ότι εάν η συνάρτηση σύγκρισης κλειδιών (ονόματα τραγουδιών) βρήκε ομοιότητα μεγαλύτερη από 85%, τότε πρόκειται για το ίδιο τραγούδι.

Ο αλγόριθμος για τον προσδιορισμό της ομοιότητας υπάρχει, στη συνάρτηση utils.getSongSimilarity().

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

Ένα παράδειγμα εργασίας με χώρο αποθήκευσης μέσω πελάτη μπορεί να βρεθεί στο readme.

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

μουσεία-παγκόσμια είναι ένα ήδη διαμορφωμένο αποθετήριο git για την εκκίνηση του δικού σας κόμβου στο παγκόσμιο μουσικό δίκτυο. Κλωνοποίηση npm i && npm ξεκινήστε και αυτό είναι βασικά. Μπορείτε να το διαμορφώσετε με περισσότερες λεπτομέρειες, να το εκτελέσετε στο Docker κ.λπ. Λεπτομερείς πληροφορίες είναι διαθέσιμες στο github.

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

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

Με αυτόν τον τρόπο μπορείτε να αναζητήσετε και να ανεβάσετε τραγούδια στο χώρο αποθήκευσης. Η μεταφόρτωση τραγουδιών μπορεί να πραγματοποιηθεί σε δύο τρόπους: κανονική και εποπτευόμενη. Ο δεύτερος τρόπος σημαίνει ότι η εργασία εκτελείται από ένα άτομο και όχι από ένα πρόγραμμα. Και αν επιλέξετε αυτό το πλαίσιο κατά την προσθήκη, θα πρέπει να λύσετε το captcha. Τα τραγούδια μπορούν να προστεθούν με προτεραιότητες -1, 0 ή 1. Η προτεραιότητα 1 μπορεί να οριστεί μόνο σε εποπτευόμενη λειτουργία. Απαιτούνται προτεραιότητες, ώστε ο χώρος αποθήκευσης να μπορεί να αποφασίσει πιο αποτελεσματικά τι θα κάνετε όταν προσπαθείτε να αντικαταστήσετε ένα υπάρχον τραγούδι με ένα νέο. Όσο μεγαλύτερη είναι η προτεραιότητα, τόσο πιο πιθανό είναι να αντικαταστήσετε ένα υπάρχον αρχείο. Αυτό βοηθά στην καταπολέμηση των ανεπιθύμητων μηνυμάτων και αυξάνει την ποιότητα των ληφθέντων τραγουδιών.

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

Πώς γίνεται η τεχνική προσθήκη αρχείων, με λίγα λόγια:

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

Πώς λαμβάνονται τεχνικά τα αρχεία:

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

Εναλλακτικές λύσεις για δημιουργούς μουσικής

Πάντα με ενδιέφερε το ερώτημα πώς μπορεί κανείς να αξιολογήσει αντικειμενικά την αξία πολλών δημιουργικών έργων; Γιατί, για παράδειγμα, κάποιος προσφέρει το μουσικό του άλμπουμ για 10 $; Είτε για $20 είτε $100. Πού είναι ο αλγόριθμος; Όταν, για παράδειγμα, μιλάμε για κάποιο φυσικό προϊόν, ή ακόμα και για πολλούς τύπους υπηρεσιών, τότε μπορούμε τουλάχιστον να υπολογίσουμε το κόστος και να προχωρήσουμε από αυτό.

Εντάξει, ας πούμε ότι στοιχηματίζουμε 10 $. Είναι αυτό πολύ αποτελεσματικό; Ας πούμε ότι άκουσα ένα άλμπουμ κάπου ή ένα τραγούδι από εκεί και αποφάσισα να δείξω την ευγνωμοσύνη μου. Αλλά σύμφωνα με τα συναισθήματά μου και τις δικές μου δυνατότητες, τα 3 $ είναι το ταβάνι μου. Οπότε τι θα έπρεπε να κάνουμε? Το πιο πιθανό είναι να μην κάνω τίποτα, όπως οι περισσότεροι.

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

  • Διδάξτε τους ανθρώπους να ευχαριστούν με αυτόν τον τρόπο. Οι ίδιοι οι δημιουργοί πρέπει να δείξουν ξεκάθαρα ότι θα ήθελαν να λαμβάνουν δωρεές, να προσθέτουν συνδέσμους σε διαφορετικούς τρόπους πληρωμής παντού κ.λπ.
  • Απαιτούνται περισσότεροι μηχανισμοί για την απλοποίηση και την ενίσχυση αυτών των διαδικασιών. Για παράδειγμα, δημιουργήστε κάποιο είδος παγκόσμιου ιστότοπου όπου μπορείτε να κάνετε δωρεές για δημιουργικότητα χρησιμοποιώντας συνδέσμους πνευματικών δικαιωμάτων.

    Ας πούμε ότι ο σύνδεσμος είναι κάπως έτσι:

    http://someartistsdonationsite.site/category/artist?external-info

    Αν το περιορίσουμε στους μουσικούς, τότε:

    http://someartistsdonationsite.com/music/miyagi?song=blabla

    Ο ερμηνευτής πρέπει να επαληθεύσει το ψευδώνυμό του και να επισυνάψει σε αυτό.

    Προσθέτουμε μια συνάρτηση για τη δημιουργία ενός τέτοιου συνδέσμου στον πελάτη museria και όλα τα έργα που χρησιμοποιούν το αποθετήριο μπορούν να τοποθετήσουν κουμπιά δωρεών με αυτούς τους συνδέσμους δίπλα στα τραγούδια στους ιστότοπους/εφαρμογές τους. Οι χρήστες έχουν τη δυνατότητα να κάνουν μια δωρεά πολύ γρήγορα και εύκολα. Φυσικά, αυτή η προσέγγιση μπορεί να χρησιμοποιηθεί σε οποιοδήποτε έργο και κατηγορία δημιουργικότητας, όχι μόνο μέσω αποθήκευσης.

Γιατί ακριβώς χρειάζεστε μια εγκατάσταση αποθήκευσης μουσικής και πώς μπορείτε να συμμετάσχετε σε αυτήν;

  • Εάν εργάζεστε σε ένα έργο που σχετίζεται με τη μουσική ή σχεδιάζετε να δημιουργήσετε ένα, τότε όλα προορίζονταν για αυτό. Μπορείτε να χρησιμοποιήσετε το museria για να αποθηκεύσετε και να ανακτήσετε τραγούδια, αυξάνοντας τη ροή των τραγουδιών στο διαδίκτυο. Εάν, ταυτόχρονα, έχετε τη δυνατότητα να αυξήσετε και να κρατήσετε τουλάχιστον έναν δικό σας κόμβο, τότε αυτή θα είναι η καλύτερη συμβολή στην ανάπτυξη του δικτύου.
  • Ίσως είστε έτοιμοι να αναλάβετε κάποιον άλλο ρόλο: να βοηθήσετε με τον κώδικα ή να συμπληρώσετε και να εποπτεύσετε τη βάση δεδομένων, να διανείμετε πληροφορίες σχετικά με το έργο στους φίλους σας κ.λπ.
  • Ίσως σας άρεσε η ιδέα και είστε έτοιμοι να βοηθήσετε οικονομικά ώστε να ζήσει και να εξελιχθεί όλο αυτό. Όσο περισσότεροι κόμβοι, τόσο περισσότερα τραγούδια.
  • Ή απλά πρέπει να βρείτε και να κατεβάσετε ένα τραγούδι κάποια στιγμή. Μπορείτε να το κάνετε αυτό πολύ απλά, για παράδειγμα, μέσω telegram bot.

Το έργο βρίσκεται τώρα στο αρχικό στάδιο. Ένα δοκιμαστικό δίκτυο έχει ξεκινήσει, οι κόμβοι μπορεί να επανεκκινούνται συχνά, να απαιτούν ενημερώσεις κ.λπ. Εάν δεν υπάρχουν κρίσιμα προβλήματα κατά την περίοδο αξιολόγησης, το ίδιο αυτό δίκτυο μετατρέπεται στο κύριο.

Μπορείτε να δείτε πληροφορίες σχετικά με τον κόμβο από το εξωτερικό: τον αριθμό των τραγουδιών, τον ελεύθερο χώρο κ.λπ., χρησιμοποιώντας έναν σύνδεσμο όπως http://node-address/status ή http://node-address/status?pretty

Οι επαφές μου:

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο