Museria - ապակենտրոնացված երաժշտական ​​պահեստավորում

Museria - ապակենտրոնացված երաժշտական ​​պահեստավորում

Մի օր որոշեցի գրել հավելված՝ ինձ համար երաժշտություն ընտրելու և տանը/փողոցում/մարզվելու և այլն լսելու համար։ Եվ որպեսզի այս ամենն աշխատի հոսքով, իմ կողմից նվազագույն մասնակցությամբ։ Ես հորինեցի ճարտարապետություն, ուրվագծեցի նախատիպը և ի վերջո հանդիպեցի մեկ «փոքր խնդրի»։

Եվ պարզ չէ, թե որտեղից ստանալ երգի ֆայլերը: Այս պահին VKontakte-ն արդեն փակել էր api-ն, մեծ երաժշտական ​​պորտալներում ամեն ինչ նույնպես խլացված էր, նույնիսկ երգերը կտոր-կտոր էին տալիս, որպեսզի չվերլուծվեն: Մնում էր միայն մի քանի առանձին կայքէջեր, որոնցում կա մի տոննա գովազդ և ամենատարբեր աղբ, ամեն տեսակ կասկածելի կողոպտիչ ծրագրեր և այլ «կեղտոտ» տարբերակներ: Ընդհանուր առմամբ, ոչ մի իսկապես լավ լուծում: Դուք, իհարկե, կարող եք բաժանորդագրություն գնել Yandex-ի որոշ երաժշտության կամ նմանատիպ այլ երաժշտության համար: Բայց դարձյալ, ոչ մի տեղ բաց հանրային API չկա, և դուք ծրագրային առումով երաժշտության մուտք չունեք: Մի քանի խոշոր ընկերություններ էապես սահմանափակել են ուրիշների մուտքը երաժշտություն: Ինչու՞ դա տեղի ունեցավ ընդհանրապես: Ավելի խորանալով՝ պարզ դարձավ, որ հիմնական խնդիրը հեղինակային իրավունքն է։ Ներկայիս լուծումը բաժանորդագրությունների տեսքով հարմար է բազմաթիվ կոմերցիոն երաժշտության հեղինակների և այս նույն ընկերություններին: Ընդ որում, ոչ կոմերցիոն և կիսաառևտրային երաժշտությունը նույնպես ընկնում է ընդհանուր ցանկի մեջ։ Դուք կամ վճարում եք ամեն ինչի համար, կամ ընդհանրապես ոչինչ չեք լսում:

Եվ ես սկսեցի մտածել, թե ինչ անել այս ամենի հետ։ Ինչպե՞ս կարող ենք կազմակերպել երաժշտության անվճար բաշխումը: Ի՞նչ կանեի, եթե ինքս երաժշտություն ստեղծեի և ցանկանայի գումար աշխատել դրանից: Կցանկանա՞մ, եթե իմ երգերը պիրատային լինեին: Ինչ այլընտրանքային լուծում, այնուամենայնիվ, կա։

Արդյունքում երկու հիմնական խնդիր կա, որոնք պետք է լուծվեն.

  • Երաժշտության անվճար բաշխման կազմակերպում մարդկանց մեծամասնության համար հարմար մեթոդների կիրառմամբ, ներառյալ ծրագրային ապահովումը:
  • Երաժշտություն ստեղծողների համար գումար աշխատելու այլընտրանքների առաջարկ

Համաշխարհային ապակենտրոնացված երաժշտության պահեստավորում

Ի սկզբանե փորձել եմ գտնել առկա լուծումներ և դրա հիման վրա ստեղծել ամեն ինչ։ Որոշ ժամանակ փնտրելուց հետո առաջինն ինձ դուր եկավ ipfs. Ես սկսեցի իրականացնել իմ գաղափարը, բայց որոշ ժամանակ անց այս լուծման մեջ հայտնաբերեցի մի քանի կարևոր խնդիրներ.

  • Ipfs - պահեստավորում ամեն ինչի և բոլորի համար: Կան պատկերներ, երաժշտություն և տեսանյութեր և այն ամենը, ինչ ցանկանում եք: Ընդհանրապես, նման մեծ մոլորակային «աղբանոց». Հետեւաբար, երբ գործարկում եք ձեր հանգույցը, դուք անմիջապես ստանում եք հսկայական բեռ: Մեքենան պարզապես պտտվում է ցավից։
  • Ինչ-որ անավարտ «աղբահանության» մեխանիզմ. Ես չգիտեմ, թե ինչպես է դա հիմա, բայց այդ պահին, եթե դուք գրել եք կոնֆիգուրայում, որ ցանկանում եք սահմանափակել պահեստը տասը գիգաբայթ տվյալների վրա, ապա դա ոչինչ չի նշանակում: Պահեստը մեծացավ՝ անտեսելով կազմաձևման շատ պարամետրեր: Արդյունքում, անհրաժեշտ էր ունենալ կոշտ սկավառակի հսկայական պաշար, մինչև ipfs-ը չհասկանար, թե ինչպես վերականգնել ավելորդը:
  • Գրադարանից օգտվելու պահին (ես չգիտեմ, թե ինչպես է այն այժմ), հաճախորդը չի ունեցել ժամանակի դադարեցումներ: Դուք հարցում եք ուղարկում ֆայլ ստանալու համար, և եթե այն գոյություն չունի, ապա պարզապես կախում եք: Իհարկե, մարդիկ ամենատարբեր լուծումներ էին առաջարկում, որոնք մասամբ լուծում էին խնդիրը, բայց դրանք հենակներ էին: Այս բաները պետք է դուրս գան տուփից:

Դեռ շատ մանր խնդիրներ կային, և տպավորությունը պարզ էր. սա չի կարող օգտագործվել նախագծի համար։ Ես շարունակեցի պահեստի որոնումը, ուսումնասիրելով տարբեր տարբերակներ, բայց ոչ մի հարմար բան չգտա:

Ի վերջո, ես որոշեցի, որ արժե փորձել ինքս ապակենտրոնացված պահեստ գրել: Եթե ​​անգամ միջմոլորակային լինել չձեւանա, ապա կոնկրետ խնդիր կլուծի։

Եվ այսպես ստացվեց տարածվող, պահեստարան, մետաստոկլ, թանգարան, museria-գլոբալ.

տարածվող - սա հիմնական, ամենացածր շերտն է, որը թույլ է տալիս միավորել հանգույցները ցանցի մեջ: Այն պարունակում է ալգորիթմ, որը ես մինչ այժմ մասամբ ներդրել եմ մոտ 10000 սերվերների վրա։ Ալգորիթմի ամբողջական տարբերակը շատ ավելի դժվար է իրականացնել և կպահանջի մի քանի լրացուցիչ ամիս (գուցե ավելի շատ):

Այս հոդվածում ես մանրամասն չեմ նկարագրի տարածելիությունը, ավելի լավ է մի օր առանձին գրել: Այստեղ ես պարզապես նշեմ որոշ առանձնահատկություններ.

  • Աշխատում է http/https-ի միջոցով:
  • Դուք կարող եք ստեղծել առանձին ցանց կոնկրետ առաջադրանքի համար, որը զգալիորեն կնվազեցնի յուրաքանչյուր առանձին նախագծի բեռը, քան եթե դրանք բոլորը լինեին նույն ցանցում:
  • Ի սկզբանե մտածված էր թայմաութներով և այլ մանրուքներով մեխանիզմ: Եվ սա աշխատում է բոլոր մեթոդների համար ինչպես հաճախորդում, այնպես էլ հանգույցում: Դուք կարող եք ճկուն կերպով կառավարել կարգավորումները ձեր հավելվածից:
  • Գրադարանը գրված է nodejs-ով։ Կույտի աշխատանքի հետ կապված խնդիրները փոխհատուցվում են դրա ապակենտրոնացված բնույթով: Բեռը կարելի է «տարածել»՝ ավելացնելով հանգույցների քանակը։ Դրա դիմաց կան բազմաթիվ առավելություններ՝ հսկայական համայնք, պարզություն և օգտագործման հեշտություն, իզոմորֆ հաճախորդ, արտաքին կախվածության բացակայություն և այլն:

պահեստարան տարածվածից ժառանգված շերտ է, որը թույլ է տալիս ֆայլեր պահել ցանցում: Յուրաքանչյուր ֆայլ ունի իր բովանդակության սեփական հեշը, որը կարող է օգտագործվել հետագայում այն ​​առբերելու համար: Ֆայլերը բաժանված չեն բլոկների, այլ ամբողջությամբ պահվում են:

մետաստոկլ - տարածվածից ժառանգված շերտ, որը թույլ է տալիս ցանցում պահել տվյալներ, բայց ոչ ֆայլեր: Ինտերֆեյսը նման է Nosql տվյալների բազայի: Դուք կարող եք, օրինակ, ֆայլ ավելացնել storacle-ին, ստանալ դրա հեշը և գրել այն metastocle-ում՝ ինչ-որ բանի հղումով:

թանգարան - ժառանգված է storacle-ից և metastocle-ից: Այս շերտը ուղղակիորեն պատասխանատու է երաժշտության պահպանման համար: Պահեստավորումն աշխատում է միայն mp3 ֆայլերի և id3 պիտակների հետ:

Որպես երգի «բանալի»՝ ձևի մեջ օգտագործվում է նրա լրիվ անվանումը Նկարիչ (TPE1) - կոչում (TIT2). Օրինակ `

  • Ծծումբ - Բեռ
  • Hi-rez - Lost My Way (feat. Emilio Rojas, Dani Devinci)

Կարող եք հնարավորինս մանրամասնորեն պարզել, թե ինչպես են ձևավորվում երգերի անվանումները։ այստեղ. Դուք պետք է նայեք գործառույթին utils.beautifySongTitle().

Հանգույցի կարգավորումներում սահմանված համընկնումների տոկոսը համարվում է համընկնում: Օրինակ՝ 0.85 արժեքը նշանակում է, որ եթե բանալիների համեմատման ֆունկցիան (երգերի անվանումները) 85%-ից ավելի նմանություն է գտել, ապա դա նույն երգն է։

Նմանության որոշման ալգորիթմը կա՝ ֆունկցիայի մեջ utils.getSongSimilarity().

Երգի շապիկը, հետագայում ստանալու համար, կարող է կցվել նաև պիտակների միջոցով (APIC- ը) Կոմունալ ծառայություններն ունեն պիտակներ ստանալու և մշակելու բոլոր անհրաժեշտ մեթոդները:

Հաճախորդի միջոցով պահեստավորման հետ աշխատելու օրինակ կարելի է գտնել այստեղ readme.

Վերոհիշյալ բոլոր շերտերը ինքնուրույն են և կարող են օգտագործվել առանձին որպես ստորին շերտեր այլ նախագծերի համար: Օրինակ՝ արդեն գաղափար կա գրքերի պահպանման համար շերտ անել։

museria-գլոբալ արդեն կազմաձևված 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 երգերը պահելու և առբերելու համար՝ մեծացնելով երգերի հոսքը առցանց: Եթե, միևնույն ժամանակ, դուք հնարավորություն ունեք բարձրացնել և պահել ձեր սեփական առնվազն մեկ հանգույց, ապա դա կլինի լավագույն ներդրումը ցանցի զարգացման գործում:
  • Հավանաբար, դուք պատրաստ եք որևէ այլ դեր ստանձնել՝ օգնել ծածկագրի հարցում, կամ լրացնել և վերահսկել տվյալների բազան, ծրագրի մասին տեղեկատվություն տարածել ձեր ընկերներին և այլն:
  • Միգուցե ձեզ դուր է եկել գաղափարը և պատրաստ եք ֆինանսապես օգնել, որպեսզի այն ապրի և զարգանա: Որքան շատ հանգույցներ, այնքան շատ երգեր:
  • Կամ պարզապես պետք է ինչ-որ պահի գտնել և ներբեռնել երգը: Դուք կարող եք դա անել շատ պարզ, օրինակ, միջոցով հեռագրային բոտ.

Նախագիծն այժմ գտնվում է սկզբնական փուլում։ Գործարկվել է փորձնական ցանց, հանգույցները կարող են հաճախակի վերագործարկվել, պահանջել թարմացումներ և այլն: Եթե ​​գնահատման ժամանակահատվածում կրիտիկական խնդիրներ չլինեն, ապա այս նույն ցանցը վերածվում է հիմնականի։

Դուք կարող եք դիտել հանգույցի մասին տեղեկությունները դրսից՝ երգերի քանակը, ազատ տարածությունը և այլն՝ օգտագործելով նման հղումը. http://node-address/status կամ http://node-address/status?pretty

Իմ կոնտակտները.

Source: www.habr.com

Добавить комментарий