Museria - орталықтандырылмаған музыка қоймасы

Museria - орталықтандырылмаған музыка қоймасы

Бір күні мен өзіме музыка таңдап, оны үйде/көшеде/жаттығуда, т.б. тыңдау үшін өтініш жазуды шештім. Мұның бәрі менің қатысуымсыз ағынмен жұмыс істеуі үшін. Мен архитектураны ойлап таптым, прототипін жасадым және ақырында бір «кішігірім мәселеге» тап болдым.

Ән файлдарын қайдан алуға болатыны белгісіз. Осы уақытқа дейін ВКонтакте апиді жауып қойған, үлкен музыкалық порталдарда бәрі де өшірілді, тіпті әндер талдауға жол бермеу үшін бөліктерге бөлінді. Қалғанының бәрі бір тонна жарнамасы мен әртүрлі қоқыстары, барлық күмәнді граббер бағдарламалары және басқа да «лас» опциялары бар кейбір түнде ұшатын сайттар болды. Жалпы, бірде-бір шын мәнінде жақсы шешім емес. Сіз, әрине, Яндекс музыкасына немесе басқаларға жазылуды сатып ала аласыз. Бірақ тағы да, еш жерде ашық жалпыға ортақ API жоқ және сізде музыкаға бағдарламалы түрде қол жеткізе алмайсыз. Бірнеше ірі компаниялар басқалардың музыкаға қол жеткізуін шектеді. Неліктен бұл мүлдем болды? Тереңірек үңілсек, басты мәселе авторлық құқықта екені белгілі болды. Жазылым түріндегі қазіргі шешім көптеген коммерциялық музыка авторларына және дәл осы компанияларға сәйкес келеді. Сонымен қатар коммерциялық емес және жартылай коммерциялық музыка да жалпы тізімге енеді. Сіз не бәрін төлейсіз, не мүлдем тыңдамайсыз.

Ал мен мұның бәрін не істеу керектігін ойлана бастадым. Музыканы тегін таратуды қалай ұйымдастыруға болады? Музыканы өзім жасап, одан ақша тапқым келсе не істер едім? Әндерім қарақшылық болса, ұнар ма едім? Қандай балама шешім бар?

Нәтижесінде шешуді қажет ететін екі негізгі мәселе бар:

  • Көптеген адамдарға ыңғайлы әдістерді, соның ішінде бағдарламалық жасақтаманы пайдалана отырып, музыканы тегін таратуды ұйымдастыру.
  • Музыка жасаушыларға ақша табудың балама нұсқаларын ұсынады

Ғаламдық орталықтандырылмаған музыка сақтау орны

Бастапқыда мен бар шешімдерді табуға және осының негізінде бәрін жасауға тырыстым. Біраз уақыт іздегеннен кейін маған бірінші ұнады ipfs. Мен өз идеямды жүзеге асыра бастадым, бірақ біраз уақыттан кейін осы шешімде бірнеше маңызды мәселелерді таптым:

  • Ipfs - барлығына және барлығына арналған сақтау. Суреттер, музыка, бейнелер және сіз қалағанның бәрі бар. Жалпы, мұндай үлкен планеталық «қоқыс жәшігі». Сондықтан, түйінді іске қосқан кезде сіз бірден үлкен жүктеме аласыз. Көлік жай ғана ауырып жатыр.
  • Аяқталмаған «қоқыс» жинау механизмінің бір түрі. Мен қазір қалай екенін білмеймін, бірақ сол кезде конфигурацияда сақтауды он гигабайт деректермен шектегіңіз келетінін жазсаңыз, бұл ештеңені білдірмеді. Көптеген конфигурация параметрлерін елемей, жад өсті. Нәтижесінде, ipfs қажетсізді қалай қалпына келтіруге болатынын түсінгенге дейін қатты дискінің үлкен қоры болуы керек болды.
  • Кітапхананы пайдалану кезінде (қазір оның қалай екенін білмеймін), клиентте күту уақыты болмады. Сіз файлды алуға сұрау жібересіз, егер ол жоқ болса, сіз жай ғана іліп қоясыз. Әрине, адамдар мәселені ішінара шешетін әртүрлі шешімдерді ойлап тапты, бірақ бұл балдақ болды. Бұл заттар қораптан шығуы керек.

Әлі де көптеген ұсақ-түйек проблемалар болды және әсер анық болды: бұл жоба үшін қолданыла алмайды. Мен сақтау орнын іздеуді жалғастырдым, әртүрлі нұсқаларды зерттедім, бірақ ешқашан қолайлы ештеңе таппадым.

Соңында мен орталықтандырылмаған қойманы өзім жазуға тырысу керек деп шештім. Ол планетааралық болып көрінбесе де, белгілі бір тапсырманы шешеді.

Міне, солай болды жайылатын, қойма, метастокла, музериа, museria-global.

жайылатын - бұл түйіндерді желіге біріктіруге мүмкіндік беретін негізгі, ең төменгі деңгей. Ол алгоритмді қамтиды, мен оны әзірге 10000 XNUMX-ға жуық серверге негізделген ішінара енгіздім. Алгоритмнің толық нұсқасын жүзеге асыру әлдеқайда қиын және бірнеше қосымша айлар қажет (мүмкін одан да көп).

Мен бұл мақалада таралуды егжей-тегжейлі сипаттамаймын, бір күні бөлек жазған дұрыс. Мұнда мен кейбір мүмкіндіктерді атап өтейін:

  • http/https арқылы жұмыс істейді.
  • Белгілі бір тапсырма үшін бөлек желіні жасауға болады, бұл олардың барлығы бір желіде болғанға қарағанда әрбір жеке жобаға жүктемені айтарлықтай азайтады.
  • Бастапқыда күту уақыты мен басқа да ұсақ-түйектері бар механизм ойластырылған. Және бұл клиентте де, түйінде де барлық әдістер үшін жұмыс істейді. Параметрлерді қолданбаның ішінен икемді басқара аласыз.
  • Кітапхана nodejs жүйесінде жазылған. Стек өнімділігі мәселелері оның орталықтандырылмаған сипатымен өтеледі. Жүктемені түйіндердің санын көбейту арқылы «таратуға» болады. Оның орнына көптеген артықшылықтар бар: үлкен қауымдастық, қарапайымдылық пен пайдаланудың қарапайымдылығы, изоморфты клиент, сыртқы тәуелділіктің болмауы және т.б.

қойма файлдарды желіде сақтауға мүмкіндік беретін таралатындан мұраланған қабат. Әрбір файлдың мазмұнының өз хэші бар, оны кейінірек шығарып алу үшін пайдалануға болады. Файлдар блоктарға бөлінбейді, бірақ толығымен сақталады.

метастокла - файлдарды емес, деректерді желіде сақтауға мүмкіндік беретін таралатындан мұраланған деңгей. Интерфейс Nosql дерекқорына ұқсас. Мысалы, файлды қоймаға қосуға, оның хэшін алуға және оны бір нәрсеге сілтеме арқылы метастоклға жазуға болады.

музериа - сторакула мен метастокулдан тұқым қуалайды. Бұл қабат музыканы сақтауға тікелей жауапты. Жад тек mp3 файлдарымен және id3 тегтерімен жұмыс істейді.

Әнге «кілт» ретінде оның толық атауы формада қолданылады Орындаушы (TPE1) - Атауы (TIT2). Мысалы:

  • Күкірт - ауыртпалық
  • Hi-rez - Lost My Way (feat. Эмилио Рохас, Дани Девинчи)

Ән атауларының қалай қалыптасатынын барынша егжей-тегжейлі білуге ​​болады. осында. Функцияны қарау керек utils.beautifySongTitle().

Түйін параметрлерінде анықталған сәйкестіктердің пайызы сәйкестік болып саналады. Мысалы, 0.85 мәні негізгі салыстыру функциясы (ән атаулары) 85%-дан астам ұқсастықты тапса, бұл сол ән екенін білдіреді.

Ұқсастықты анықтау алгоритмі функцияда бар utils.getSongSimilarity().

Әннің мұқабасын кейінірек алу үшін тегтер арқылы да тіркеуге болады (APIC). Утилиталарда тегтерді қабылдау және өңдеу үшін барлық қажетті әдістер бар.

Клиент арқылы сақтаумен жұмыс істеу мысалын мына жерден табуға болады readme.

Жоғарыда аталған барлық қабаттар өздігінен қамтылған және басқа жобалар үшін төменгі қабаттар ретінде бөлек пайдаланылуы мүмкін. Мысалы, қазірдің өзінде кітаптарды сақтауға арналған қабат жасау идеясы бар.

museria-global жаһандық музыкалық желіде өз түйініңізді іске қосу үшін әлдеқашан конфигурацияланған git репозиторийі болып табылады. Клондау npm i && npm бастаңыз және бұл негізінен. Сіз оны толығырақ конфигурациялай аласыз, оны Docker бағдарламасында іске қоса аласыз және т.б. Толық ақпаратты мына жерден алуға болады гитабе.

Репозиторий жаңартылған кезде түйінді жаңарту қажет. Негізгі немесе кіші нұсқа нөмірі өзгерсе, бұл әрекет міндетті болып табылады, әйтпесе ескі түйіндерді желі елемейді.

Әндермен қолмен және бағдарламалы түрде жұмыс істеуге болады. Әрбір түйін әртүрлі тапсырмалар үшін серверді іске қосады. Соның ішінде әдепкі соңғы нүктеге кірген кезде сіз музыкамен жұмыс істеуге арналған интерфейс аласыз. Мысалы, сіз баруға болады түбірлік түйін (сілтеме кейінірек маңызды болмауы мүмкін, енгізу түйіндерін де алуға болады жеделхат, немесе 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 қолданбасын пайдалануға болады. Егер сізде бір уақытта кем дегенде бір түйінді көтеру және ұстау мүмкіндігі болса, онда бұл желінің дамуына ең жақсы үлес болады.
  • Мүмкін сіз басқа рөлді қабылдауға дайынсыз: кодпен көмектесу немесе дерекқорды толтыру және модерациялау, достарыңызға жоба туралы ақпаратты тарату және т.б.
  • Мүмкін сізге бұл идея ұнаған шығар және оның бәрі өмір сүріп, дамуы үшін қаржылық көмек көрсетуге дайын шығарсыз. Неғұрлым көп түйін болса, соғұрлым әндер көп.
  • Немесе әнді бір сәтте тауып, жүктеп алу керек. Сіз мұны өте қарапайым жасай аласыз, мысалы, арқылы телеграм боты.

Жоба қазір ең бастапқы кезеңде. Сынақ желісі іске қосылды, түйіндер жиі қайта жүктелуі мүмкін, жаңартуларды қажет етеді және т.б. Бағалау кезеңінде күрделі мәселелер болмаса, дәл сол желі негізгіге ауыстырылады.

Түйін туралы ақпаратты сырттан қарауға болады: әндер саны, бос орын және т.б., сияқты сілтеме арқылы http://node-address/status немесе http://node-address/status?pretty

Менің контактілерім:

Ақпарат көзі: www.habr.com

пікір қалдыру