Museria - un repositorio descentralizado de música

imagen

Una vez me reuní para escribir una aplicación para seleccionar música para mí y escuchar en casa / en la calle / entrenamiento, etc. Y para que todo esto funcione en una secuencia, con un mínimo de mi participación. Se le ocurrió la arquitectura, dibujó un prototipo y terminó con un "pequeño problema".

Y no está claro dónde obtener los archivos de la canción. En este momento, VKontakte ya había cerrado su api, todo estaba sordo en grandes portales de música, incluso las canciones se daban en pedazos para que no se analizaran. Solo había algunos sitios web separados de un día con toneladas de publicidad y todo tipo de basura, todo tipo de programas de captura dudosos y otras opciones "sucias". En general, ni una sola buena decisión válida. Por supuesto, puede comprar una suscripción a algo de música Yandex o similar. Pero, de nuevo, no hay una API pública abierta en ninguna parte y no tienes acceso a la música mediante programación. Varias grandes empresas, de hecho, restringieron el resto de su acceso a la música. ¿Por qué sucedió esto? Profundizando, quedó claro que el principal problema en el derecho de autor. La solución actual en forma de suscripciones se adapta a muchos autores comerciales de obras musicales y estas mismas compañías.Al mismo tiempo, la música sin fines de lucro y shareware también cae en la lista general. O pagas por todo o no escuchas nada en absoluto.

Y comencé a pensar qué hacer con todo esto. ¿Cómo se puede organizar la distribución gratuita de música? ¿Qué haría si yo mismo creara música y quisiera ganar dinero con ella? ¿Me gustaría que mis canciones comenzaran a distribuirse de forma pirateada? ¿Qué es una solución alternativa?

Como resultado, había dos problemas principales que debían abordarse:

  • Organización de la distribución gratuita de música por métodos convenientes para la mayoría de las personas, incluido el software.
  • Ofrecer alternativas a los creadores de música por dinero.

Depósito global descentralizado de música


Inicialmente, intenté encontrar soluciones existentes y crear todo basado en esto. Después de un tiempo de búsqueda, a ipfs le gustó por primera vez . Comencé a implementar mi idea, pero después de un tiempo encontré varios problemas críticos en esta solución:

  • Ipfs: almacenamiento para todo y para todo. Aquí, imágenes, música, video y cualquier otra cosa. En general, una gran "basura" planetaria. Por lo tanto, cuando inicia su nodo, inmediatamente obtiene una gran carga. El auto simplemente se retuerce de dolor.
  • - «». , , , , . , . , , ipfs .
  • ( ), . , , . , , , . .

Todavía había muchos problemas menores, la impresión era inequívoca: esto no se puede utilizar para el proyecto. Seguí buscando el repositorio, exploré varias opciones, pero aún no encontré nada adecuado.

Al final, decidí que valía la pena intentar escribir un almacenamiento descentralizado. Que no pretenda ser interplanetario, pero resolverá una tarea específica.

Así es como untar , storacle , metastocle , museria , museria-globales resultó .

para untar- Esta es la capa principal, la más baja, que le permite combinar nodos en una red. Contiene un algoritmo que hasta ahora he implementado parcialmente basado en algún lugar en 10,000 servidores. La versión completa del algoritmo es mucho más difícil de implementar y requeriría algunos meses adicionales (tal vez más).

En detalle, no describiré lo que se puede difundir en este artículo, mejor escribo uno separado de alguna manera. Aquí solo noto algunas características:

  • Funciona a través de http / https.
  • Puede crear una red separada para una tarea específica, lo que reducirá significativamente la carga en cada proyecto individual que si estuvieran todos en la misma red.
  • Inicialmente, se pensó un mecanismo con tiempos de espera y otras pequeñas cosas. Y esto funciona para todos los métodos tanto en el cliente como en el nodo. Puede administrar la configuración de manera flexible desde su aplicación.
  • nodejs. . «», . : , , , ...

Storacle es una capa heredada de spreadable que le permite almacenar archivos en la red. Cada archivo tiene su propio hash de acuerdo con el contenido, por lo que se puede obtener más adelante. Los archivos no se dividen en bloques, sino que se almacenan en su totalidad.

metastocle : una capa heredada de untable, que le permite almacenar datos en la red, pero no archivos. La interfaz es similar a la base de datos nosql. Puede, por ejemplo, agregar un archivo a storacle, obtener su hash y escribirlo en metastocle con referencia a algo.

museria - heredada del estoco y metastocle. Esta capa es directamente responsable del almacenamiento de música. El repositorio solo funciona con archivos mp3 y etiquetas id3.

Como la "clave" de la canción, su nombre completo se utiliza en la forma Artista (TPE1) - Título (TIT2) . Por ejemplo:

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

Puedes averiguar lo más posible cómo se forman los nombres de las canciones aquí . Es necesario mirar la función utils.beautifySongTitle () .

Una coincidencia clave es un porcentaje definido en la configuración del nodo. Por ejemplo, un valor de 0.85 significa que si la función de comparación de teclas (nombres de canciones) encontró una similitud de más del 85%, entonces esta es la misma canción.

Un algoritmo para determinar la similitud está en el mismo lugar, en la función utils.getSongSimilarity () .

Portada de la canción, para su posterior recuperación, también adjunta a través de etiquetas ( APIC ). Las utilidades tienen todos los métodos necesarios para recibir y procesar etiquetas.

Puede encontrar un ejemplo de trabajo con el repositorio a través del cliente en el archivo Léame .
. , .

museria-global es un repositorio git ya configurado para lanzar su propio nodo en la red global de música. Clone npm i && npm start y listo . Puede configurar con más detalle, ejecutar en Docker, etc. Los detalles están en el github .

Cuando se actualiza el repositorio, debe actualizar su sitio. Si el número de versión mayor o menor cambia, entonces se requiere esta acción; de lo contrario, la red ignorará los nodos antiguos.

Puede trabajar con canciones de forma manual y programática. Cada nodo inicia el servidor para diversas tareas. Incluso cuando visita el punto final predeterminado, obtendrá una interfaz para trabajar con música. Por ejemplo, puede ir al nodo raíz(el enlace puede no ser relevante más adelante, los nodos de entrada también pueden obtenerse por telegrama o ver actualizaciones en el github).

Para que pueda buscar y subir canciones al repositorio. La descarga de canciones puede realizarse en dos modos: normal y moderado. El segundo modo significa que el trabajo lo realiza una persona, no un programa. Y si marca esta casilla al agregar, deberá resolver el captcha. Las canciones se pueden agregar con las prioridades -1, 0 o 1. La prioridad 1 solo se puede establecer en modo moderado. Se necesitan prioridades para que el repositorio sea más efectivo para decidir qué hacer cuando intente reemplazar una canción existente por una nueva. Cuanto mayor sea la prioridad, es más probable que sobrescriba el archivo existente. Esto ayuda a combatir el spam y aumenta la calidad de las canciones descargadas.

Si comienza a agregar canciones al repositorio, intente adjuntar imágenes (portada), aunque este campo es opcional. En el 99% de los casos, las primeras imágenes en Google por nombres de canciones son portadas de álbumes.

Cómo técnicamente los archivos se agregan en pocas palabras:

  • El cliente recibe la dirección de un nodo libre, que durante algún tiempo se convertirá en el coordinador.
  • La función de agregar una canción se activa (por una persona o un código), se solicita agregar un coordinador al punto final.
  • El coordinador calcula cuántos duplicados deben guardarse (parámetro configurable).
  • Se buscan los nodos más adecuados para guardar.
  • El archivo va directamente a estos nodos.

Cómo técnicamente se reciben los archivos:
  • El cliente recibe la dirección de un nodo libre, que durante algún tiempo se convertirá en el coordinador.
  • La función de recibir la canción se activa (por una persona o un código), se recibe una solicitud para que un coordinador llegue al punto final.
  • . , , .
  • , .


Siempre me ha interesado la pregunta, ¿cómo se puede evaluar objetivamente el valor de muchas obras creativas? ¿Por qué, por ejemplo, una persona expone su álbum de música por $ 10? O por $ 20 o por $ 100. ¿Dónde está el algoritmo? Cuando, por ejemplo, estamos hablando de algún tipo de producto físico, o incluso de muchos tipos de servicios, entonces al menos podemos calcular el precio de costo y proceder a partir de esto.

Ok, pongamos $ 10. ¿Es realmente efectivo? Supongamos que escuché un álbum en alguna parte o una canción de allí y decidí agradecer. Pero de acuerdo con mis sentimientos y mis propias habilidades, $ 3 es mi límite. ¿Y cómo estar aquí? Lo más probable es que no haga nada, como la mayoría de las personas.

Al establecer un precio fijo para el trabajo creativo, simplemente se limita, no permite que una gran cantidad de personas le envíen menos dinero, lo que en total puede ser más impresionante que aquellos que compran al precio que usted establece. Me parece que la creatividad es exactamente el área donde las donaciones deben dirigirse primero. Para hacer esto, necesitas:

  • Enseñar a las personas a dar gracias de esta manera. Los propios creadores deben mostrar claramente que les gustaría recibir donaciones, agregar enlaces en todas partes a diferentes métodos de pago, etc.
  • . , , .

    , :

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

    , :

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

    .

    museria , , / . . , , .

, , ,


  • , , , . museria , . , , , .
  • - : , , ...
  • , . , .
  • - . , , .

El proyecto ahora está en su infancia. Se está ejecutando una red de prueba, los nodos a menudo se pueden reiniciar, requieren actualizaciones, etc. En ausencia de problemas críticos durante el período de evaluación, la misma red se transforma en la principal.

Ver información sobre el sitio desde el exterior: la cantidad de canciones, espacio libre, etc., puede hacer clic en el tipo de enlace http://node-address/statuso en Mis contactos:http://node-address/status?pretty




All Articles