Museria - تخزين الموسيقى اللامركزي

Museria - تخزين الموسيقى اللامركزي

في أحد الأيام قررت أن أكتب طلبًا لاختيار الموسيقى لنفسي والاستماع إليها في المنزل / في الشارع / أثناء التدريبات، إلخ. ولكي يعمل كل هذا بتدفق، مع الحد الأدنى من المشاركة مني. توصلت إلى تصميم معماري، ورسمت نموذجًا أوليًا، وفي النهاية واجهت "مشكلة صغيرة".

وليس من الواضح مكان الحصول على ملفات الأغاني نفسها. بحلول هذا الوقت، أغلقت Vkontakte بالفعل API، على بوابات الموسيقى الكبيرة، تم كتم كل شيء أيضا، حتى الأغاني تم توزيعها على القطع، حتى لا يتم تحليلها. كل ما بقي هو بعض المواقع الفردية التي تحتوي على الكثير من الإعلانات وجميع أنواع القمامة وجميع أنواع برامج الالتقاط المشبوهة وغيرها من الخيارات "القذرة". بشكل عام، لا يوجد حل واحد جيد حقا. يمكنك بالطبع شراء اشتراك في بعض موسيقى Yandex أو ما شابه. ولكن مرة أخرى، لا توجد واجهة برمجة تطبيقات عامة مفتوحة في أي مكان ولا يمكنك الوصول إلى الموسيقى برمجيًا. قامت العديد من الشركات الكبرى بتقييد وصول الآخرين إلى الموسيقى بشكل أساسي. لماذا حدث هذا على الإطلاق؟ وبالتعمق أكثر، أصبح من الواضح أن المشكلة الرئيسية هي حقوق الطبع والنشر. الحل الحالي في شكل اشتراكات يناسب العديد من مؤلفي الموسيقى التجارية وهذه الشركات نفسها. وفي الوقت نفسه، تندرج الموسيقى غير التجارية وشبه التجارية أيضًا في القائمة العامة. إما أن تدفع ثمن كل شيء أو تستمع إلى لا شيء على الإطلاق.

وبدأت أفكر ماذا أفعل بكل هذا. كيف يمكننا تنظيم التوزيع المجاني للموسيقى؟ ماذا سأفعل إذا كنت أقوم بتأليف الموسيقى بنفسي وأردت كسب المال منها؟ هل سأحب لو تم قرصنة أغنياتي؟ ما هو الحل البديل هناك على أي حال؟

ونتيجة لذلك، هناك مشكلتان رئيسيتان تحتاجان إلى حل:

  • تنظيم التوزيع المجاني للموسيقى باستخدام أساليب مناسبة لمعظم الناس، بما في ذلك البرمجيات.
  • تقديم بدائل لمبدعي الموسيقى لكسب المال

تخزين الموسيقى اللامركزية العالمية

في البداية، حاولت إيجاد الحلول الحالية وإنشاء كل شيء بناءً على ذلك. وبعد فترة من البحث، كان أول ما أعجبني هو التي اعتمدها الفريق الحكومي. بدأت بتنفيذ فكرتي، ولكن بعد فترة اكتشفت عدة مشاكل خطيرة في هذا الحل:

  • Ipfs - تخزين لكل شيء ولكل شخص. هناك صور وموسيقى ومقاطع فيديو وكل ما تريد. بشكل عام، مثل هذه "سلة المهملات" الكوكبية الكبيرة. لذلك، عند تشغيل العقدة الخاصة بك، تتلقى على الفور حمولة ضخمة. السيارة تتلوى من الألم فقط.
  • نوع من آلية جمع "القمامة" غير المكتملة. لا أعرف كيف هو الأمر الآن، ولكن في تلك اللحظة، إذا كتبت في التكوين أنك تريد قصر سعة التخزين على عشرة غيغابايت من البيانات، فهذا لا يعني أي شيء. زادت مساحة التخزين، متجاهلة العديد من معلمات التكوين. ونتيجة لذلك، كان من الضروري أن يكون لديك احتياطي ضخم من القرص الصلب حتى اكتشف ipfs كيفية إعادة تعيين ما هو غير ضروري.
  • في وقت استخدام المكتبة (لا أعرف كيف هي الآن)، لم يكن العميل قد تم تنفيذ المهلات. تقوم بإرسال طلب لاستلام ملف، وإذا لم يكن موجودًا، فما عليك سوى تعليقه. بالطبع، توصل الناس إلى جميع أنواع الحلول التي حلت المشكلة جزئيا، لكنها كانت عكازين. هذه الأشياء يجب أن تخرج من الصندوق.

لا تزال هناك العديد من المشاكل البسيطة، وكان الانطباع واضحًا: لا يمكن استخدام هذا في المشروع. واصلت البحث عن منشأة تخزين، واستكشفت خيارات مختلفة، لكن لم أجد أي شيء مناسب.

في النهاية، قررت أن الأمر يستحق محاولة كتابة تخزين لامركزي بنفسي. حتى لو لم يتظاهر بأنه بين الكواكب، فإنه سيحل مشكلة محددة.

وهكذا اتضح قابل للدهن, storcle, metastocle, موسيقى, Museria-Global.

قابل للدهن - هذه هي الطبقة الرئيسية والأدنى التي تسمح لك بدمج العقد في الشبكة. يحتوي على خوارزمية قمت بتنفيذها جزئيًا حتى الآن استنادًا إلى حوالي 10000 خادم. يعد تنفيذ الإصدار الكامل من الخوارزمية أكثر صعوبة وسيتطلب عدة أشهر إضافية (وربما أكثر).

لن أصف القابلية للانتشار بالتفصيل في هذه المقالة، فمن الأفضل أن أكتب واحدة منفصلة يومًا ما. هنا سأذكر فقط بعض الميزات:

  • يعمل عبر http/https.
  • يمكنك إنشاء شبكة منفصلة لمهمة محددة، مما سيقلل بشكل كبير الحمل على كل مشروع على حدة عما لو كانوا جميعًا على نفس الشبكة.
  • تم التفكير في البداية في آلية المهلات والأشياء الصغيرة الأخرى. وهذا يعمل مع كافة الأساليب سواء في العميل أو في العقدة. يمكنك إدارة الإعدادات بمرونة من داخل التطبيق الخاص بك.
  • المكتبة مكتوبة في العقدة. يتم تعويض مشكلات أداء المكدس بطبيعته اللامركزية. يمكن "توزيع" الحمل عن طريق زيادة عدد العقد. في المقابل، هناك العديد من المزايا: مجتمع ضخم، وبساطة وسهولة في الاستخدام، وعميل متماثل، وعدم وجود تبعيات خارجية، وما إلى ذلك.

storcle هي طبقة موروثة من الطبقة القابلة للانتشار والتي تسمح لك بتخزين الملفات على الشبكة. يحتوي كل ملف على تجزئة محتوياته الخاصة، والتي يمكن استخدامها لاستعادتها لاحقًا. لا يتم تقسيم الملفات إلى كتل، ولكن يتم تخزينها بالكامل.

metastocle - طبقة موروثة من الطبقة القابلة للانتشار، والتي تسمح لك بتخزين البيانات على الشبكة، وليس الملفات. الواجهة مشابهة لقاعدة بيانات Nosql. يمكنك، على سبيل المثال، إضافة ملف إلى storacle والحصول على تجزئته وكتابته إلى metastocle مع رابط لشيء ما.

موسيقى - موروث من الستوراكل والميستوكل. هذه الطبقة مسؤولة بشكل مباشر عن تخزين الموسيقى. يعمل التخزين فقط مع ملفات mp3 وعلامات id3.

باعتباره "مفتاحًا" للأغنية، يتم استخدام اسمها الكامل في النموذج فنان (TPE1) - اللقب (TIT2). على سبيل المثال:

  • الكبريت - العبء
  • هاي ريز - Lost My Way (مع إميليو روخاس وداني ديفينشي)

يمكنك معرفة أكبر قدر ممكن من التفاصيل حول كيفية تشكيل عناوين الأغاني. هنا. تحتاج إلى إلقاء نظرة على الوظيفة utils.beautifySongTitle().

تعتبر النسبة المئوية للتطابقات المحددة في إعدادات العقدة مطابقة. على سبيل المثال، تعني القيمة 0.85 أنه إذا وجدت وظيفة المقارنة الرئيسية (أسماء الأغاني) تشابهًا يزيد عن 85%، فهي نفس الأغنية.

توجد خوارزمية تحديد التشابه في الوظيفة utils.getSongSimilarity().

يمكن أيضًا إرفاق غلاف الأغنية، لاستلامه لاحقًا، عبر العلامات (APIC). تحتوي الأدوات المساعدة على جميع الطرق اللازمة لتلقي العلامات ومعالجتها.

يمكن العثور على مثال للعمل مع التخزين من خلال العميل في التمهيدي.

جميع الطبقات المذكورة أعلاه مستقلة بذاتها ويمكن استخدامها بشكل منفصل كطبقات سفلية لمشاريع أخرى. على سبيل المثال، هناك بالفعل فكرة لإنشاء طبقة لتخزين الكتب.

Museria-Global هو مستودع git تم تكوينه بالفعل لتشغيل العقدة الخاصة بك في شبكة الموسيقى العالمية. استنساخ npm أنا && npm ابدأ وهذا هو الأساس. يمكنك تكوينه بمزيد من التفاصيل، وتشغيله في Docker، وما إلى ذلك. المعلومات التفصيلية متاحة على githabe.

عندما يتم تحديث المستودع، تحتاج إلى تحديث العقدة الخاصة بك. إذا تغير رقم الإصدار الرئيسي أو الثانوي، فسيكون هذا الإجراء إلزاميًا، وإلا فسيتم تجاهل العقد القديمة بواسطة الشبكة.

يمكنك العمل مع الأغاني يدويًا وبرمجيًا. تقوم كل عقدة بتشغيل خادم لمهام مختلفة. بما في ذلك، عند زيارة نقطة النهاية الافتراضية، ستتلقى واجهة للعمل مع الموسيقى. على سبيل المثال، يمكنك الذهاب إلى عقدة الجذر (قد لا يكون الرابط ذا صلة لاحقًا، ويمكن أيضًا الحصول على عقد الإدخال فيه برقيةأو ابحث عن التحديثات على Github).

بهذه الطريقة يمكنك البحث عن الأغاني وتحميلها إلى وحدة التخزين. يمكن أن يتم تحميل الأغاني في وضعين: عادي ومعتدل. الوضع الثاني يعني أن العمل يتم بواسطة شخص وليس برنامج. وإذا قمت بتحديد هذا المربع عند الإضافة، فسوف تحتاج إلى حل اختبار التحقق. يمكن إضافة الأغاني بالأولويات -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، ويمكن لجميع المشاريع التي تستخدم المستودع وضع أزرار التبرع بهذه الروابط بجوار الأغاني على مواقعها الإلكترونية/تطبيقاتها. يتمتع المستخدمون بفرصة التبرع بسرعة وسهولة. وبطبيعة الحال، يمكن استخدام هذا النهج في أي مشروع أو فئة إبداعية، وليس فقط من خلال التخزين.

لماذا تحتاج بالضبط إلى منشأة لتخزين الموسيقى، وكيف يمكنك المشاركة فيها؟

  • إذا كنت تعمل على مشروع متعلق بالموسيقى، أو تخطط لإنشاء مشروع، فهذا هو الهدف من كل شيء. يمكنك استخدام الموسيقى لتخزين الأغاني واسترجاعها، مما يزيد من تدفق الأغاني عبر الإنترنت. إذا كان لديك، في الوقت نفسه، القدرة على رفع عقدة واحدة على الأقل والاحتفاظ بها، فستكون أفضل مساهمة في تطوير الشبكة.
  • ربما تكون مستعدًا لتولي دور آخر: المساعدة في الكود، أو ملء قاعدة البيانات والإشراف عليها، وتوزيع المعلومات حول المشروع على أصدقائك، وما إلى ذلك.
  • ربما أعجبتك الفكرة ومستعد للمساعدة ماليًا حتى يعيش كل شيء ويتطور. كلما زاد عدد العقد، زاد عدد الأغاني.
  • أو تحتاج فقط إلى البحث عن أغنية وتنزيلها في وقت ما. يمكنك القيام بذلك بكل بساطة، على سبيل المثال، من خلال بوت برقية.

المشروع الآن في مرحلة البداية. تم إطلاق شبكة اختبار، وقد يتم إعادة تشغيل العقد بشكل متكرر، وقد تتطلب تحديثات، وما إلى ذلك. إذا لم تكن هناك مشاكل حرجة خلال فترة التقييم، فسيتم تحويل هذه الشبكة نفسها إلى الشبكة الرئيسية.

يمكنك عرض معلومات حول العقدة من الخارج: عدد الأغاني، والمساحة الحرة، وما إلى ذلك، باستخدام رابط مثل http://node-address/status أو http://node-address/status?pretty

اتصالاتي:

المصدر: www.habr.com

إضافة تعليق