Museria-去中心化的音乐库

图片

我曾经聚集编写一个应用程序来为自己选择音乐,然后在家里/在大街上/在训练中听音乐。因此,所有这些工作都可以在流中进行,而我的参与最少。他提出了架构,绘制了原型,最后遇到了一个“小问题”。

尚不清楚从何处获取歌曲文件。这时,VKontakte已经关闭了该api,在大型音乐门户网站上一切都是聋哑的,甚至歌曲都是分段播放,以免被解析。只有一些单独的单日网站,上面有大量的广告和各种垃圾,各种可疑的抓取程序以及其他“肮脏”选项。通常,没有一个有效的好的决定。当然,您可以购买一些Yandex音乐等的订阅。但是话又说回来,那里没有开放的公共api,并且您无法以编程方式访问音乐。实际上,几家大公司限制了他们访问音乐的其余部分。为什么会这样呢?深入研究发现,版权的主要问题显而易见。订阅形式的当前解决方案适合许多音乐作品的商业作者以及这些公司。同时,非营利性和共享软件音乐也进入了一般列表。您要么支付所有费用,要么根本不听任何内容。

我开始思考如何处理所有这一切。如何组织免费音乐分发?如果我自己创作音乐并想从中赚钱怎么办?如果我的歌曲开始以盗版方式发行,我会喜欢吗?什么是替代解决方案?

结果,有两个主要问题需要解决:

  • 通过对大多数人方便的方法(包括软件)组织音乐的免费分发。
  • 为音乐创作者提供替代品以赚钱

全球分散音乐库


最初,我试图找到现有的解决方案并基于此创建所有内容。经过一段时间的搜索,ipfs首先喜欢我开始实现我的想法,但是一段时间后,我在此解决方案中发现了几个关键问题:

  • Ipfs-储存一切。在这里,以及图像,音乐和视频以及其他任何内容。一般来说,这么大的行星“垃圾”。因此,当您启动节点时,您会立即获得巨大的负载。汽车只是痛苦地扭扭着。
  • - «». , , , , . , . , , ipfs .
  • ( ), . , , . , , , . .

仍然存在许多小问题,当时的印象是明确的:这不能用于项目。我继续搜索该存储库,探索了各种选择,但仍然找不到合适的东西。

最后,我认为值得尝试自己编写一个去中心化存储。不要假装自己是行星际的,但它将解决特定的任务。

这就是散布的散布的鳞片状的,多细胞的博物馆的,全球博物馆的结果

分散的-这是主要的最低层,它使您可以将节点组合成网络。它包含一种算法,到目前为止,我已经部分地基于10,000台服务器中的某个地方实现了该算法。完整版本的算法很难实施,并且还需要几个月(甚至更多)的时间。

详细地,我不会在本文中描述可传播性,最好以某种方式单独编写一个。在这里,我仅说明一些功能:

  • 它通过http / https起作用。
  • 您可以为特定任务创建一个单独的网络,这将大大减轻每个单独项目的负担,这要比它们都位于同一网络中的情况大为减少。
  • 最初,人们考虑了一种具有超时和其他小功能的机制。这适用于客户端和节点中的所有方法。您可以从应用程序灵活管理设置。
  • nodejs. . «», . : , , , ...

storacle是可扩展的继承层,它使您可以在网络上存储文件。每个文件根据内容都有自己的哈希,以后可以通过它获取。文件没有分成块,而是完整存储。

metastocle-从可扩展继承的层,它使您可以在网络上存储数据,但不能存储文件。该接口类似于nosql数据库。例如,您可以将文件添加到storacle,获取其哈希值,然后参照某物将其写入metastocle。

博物馆 -继承自甲骨oracle和metastocle。该层直接负责存储音乐。该存储库仅适用于mp3文件和id3标签。

作为歌曲的“键”,其全名以Artist(TPE1)-Title(TIT2)的形式使用。例如:

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

您可以在此处尽可能多地了解歌曲名称的形成方式。有必要查看utils.beautifySongTitle()函数

键匹配是节点设置中定义的百分比。例如,值为0.85表示如果键比较功能(歌曲名称)的相似度超过85%,则这是同一首歌曲。

用于确定相似性的算法在utils.getSongSimilarity()函数中位于同一位置

歌曲的封面,供以后检索,也通过标签(APIC附加。实用程序具有接收和处理标签的所有必要方法。

自述文件中可以找到通过客户端使用存储库的示例
. , .

museria-global是已配置的git存储库,用于在全局音乐网络中启动其自己的节点。克隆npm i && npm开始,就是这样。您可以更详细地配置,在docker中运行等。详细信息在github上

存储库更新后,您需要更新站点。如果主要或次要版本号更改,则需要执行此操作,否则网络将忽略旧节点。

您可以手动和编程方式处理歌曲。每个节点启动服务器以执行各种任务。包括,当您访问默认端点时,您将获得一个用于处理音乐的界面。例如,您可以转到根节点(该链接以后可能不相关,输入节点也可以通过电报获取,或在github上查看更新)。

因此,您可以搜索歌曲并将其上传到存储库。歌曲下载可以通过两种模式进行:普通和主持。第二种模式意味着工作是由人而不是程序来完成的。如果在添加时选中此框,则需要解决验证码。可以添加优先级为-1、0或1的歌曲。仅可以在仲裁模式下设置优先级1。当您尝试用新歌曲替换现有歌曲时,需要优先级来使存储库更有效地决定如何处理。优先级越高,覆盖现有文件的可能性就越大。这有助于打击垃圾邮件并提高下载歌曲的质量。

如果您开始向存储库添加歌曲,请尝试附加图像(封面),尽管此字段是可选的。在99%的情况下,Google歌曲名称中的第一张图片就是专辑封面。

简而言之,文件的技术添加方式:

  • 客户端收到一个空闲节点的地址,该地址将在一段时间内成为协调者。
  • 触发添加歌曲的功能(由人或代码),请求将协调器添加到端点。
  • 协调器计算需要保存多少重复项(可配置参数)。
  • 搜索最适合保存的节点。
  • 该文件直接转到这些节点。

文件的技术接收方式:
  • 客户端收到一个空闲节点的地址,该地址将在一段时间内成为协调者。
  • 接收歌曲的功能被触发(由人或代码),接收到将协调器发送到端点的请求。
  • . , , .
  • , .


我一直对这个问题感兴趣,如何客观地评估许多创意作品的价值?例如,为什么一个人花10美元公开他的音乐专辑?或20美元或100美元。算法在哪里?例如,当我们谈论某种实物产品或什至许多类型的服务时,那么我们至少可以计算成本价格并从中进行计算。

好吧,我们放十美元。真的有效吗?假设我在某处听了一张专辑或那里的一首歌,然后决定要谢谢。但是根据我的感觉和自己的能力,3美元是我的最高限额。怎么会在这里?我很可能不会像大多数人一样做任何事情。

通过为创意作品设定固定价格,您只是在限制自己,不要让大量人寄给您更少的钱,总的来说,这比那些以您设定的价格购买的商品更具吸引力。在我看来,创造力正是捐赠应首先引导的领域。为此,您需要:

  • 教人们用这种方式表示感谢。创作者本人必须清楚地表明他们想接受捐赠,在各处添加指向不同付款方式的链接等。
  • . , , .

    , :

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

    , :

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

    .

    museria , , / . . , , .

, , ,


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

该项目现在处于起步阶段。测试网络正在运行,节点通常可以重新启动,需要更新等。在评估期间,在没有关键问题的情况下,将同一网络转换为主要网络。

从外部查看有关该站点的信息:歌曲数,可用空间等,您可以单击链接类型http://node-address/status或“ 我的联系人”:http://node-address/status?pretty




All Articles