
Бир күнү мен өзүмө музыка тандап, аны үйдө/көчөдө/машыгуу ж.б.у.с. угуу үчүн арыз жазууну чечтим. Ошентип, мунун баары менден минималдуу катышуу менен бир агымда иштейт. Мен архитектура ойлоп таптым, прототибин жасап чыктым жана акыры бир "кичинекей көйгөйгө" туш болдум.
Ал эми ыр файлдарын кайдан алуу керектиги так эмес. Бул убакытка чейин ВКонтакте api жабылган, чоң музыкалык порталдарда баары өчүрүлгөн, ал тургай ырлар талданбашы үчүн бөлүктөргө бөлүнүп берилген. Болгону бир тонна жарнактар жана ар кандай таштандылар, ар кандай шектүү граббер программалары жана башка "ыплас" варианттары бар айрым бир түнү учкан сайттар калды. Жалпысынан алганда, бир дагы жакшы чечим жок. Сиз, албетте, кандайдыр бир Яндекс музыкасына же ушул сыяктууларга жазылууну сатып алсаңыз болот. Бирок, дагы бир жерде ачык ачык API жок жана сизде музыкага программалык түрдө кирүү мүмкүнчүлүгү жок. Бир нече ири компаниялар башкалардын музыкага жетүүсүн чектеп коюшкан. Эмне үчүн мындай болду? Тереңирээк казып көрсөк, негизги көйгөй автордук укукта экени белгилүү болду. Жазылуу түрүндөгү азыркы чечим көптөгөн коммерциялык музыка авторлоруна жана ушул эле компанияларга ылайыктуу. Ошол эле учурда коммерциялык эмес жана жарым коммерциялык музыка да жалпы тизмеге кирет. Же баарын төлөйсүз, же такыр укпайсыз.
Ошондо мен мунун баарын эмне кылам деп ойлоно баштадым. Музыканы бекер таратууну кантип уюштура алабыз? Өзүм музыка жаратып, андан акча тапкым келсе эмне кылат элем? Менин ырларым пират болуп кетсе жакмак белем? Кандай альтернативалуу чечим бар?
Натыйжада, эки негизги көйгөйдү чечүү керек:
- Көпчүлүк адамдар үчүн ыңгайлуу ыкмаларды, анын ичинде программалык камсыздоону колдонуу менен музыканы бекер таратууну уюштуруу.
- Музыка жаратуучуларга акча табуу үчүн альтернативаларды сунуштоо
Дүйнөлүк борборлоштурулган музыка сактагыч
Башында мен болгон чечимдерди таап, ошонун негизинде бардыгын түзүүгө аракет кылдым. Бир аз убакыт издегенден кийин, биринчи мага жакты . Мен өз идеямды ишке ашыра баштадым, бирок бир аз убакыт өткөндөн кийин мен бул чечимде бир нече олуттуу көйгөйлөрдү таптым:
- Ipfs - бардыгы жана бардыгы үчүн сактагыч. Сүрөттөр, музыка, видеолор жана сиз каалагандын баары бар. Жалпысынан алганда, мындай чоң планеталык "таштанды". Ошондуктан, сиз түйүнүңүздү ишке киргизгенде, сиз дароо чоң жүк аласыз. Машина жон эле ооруп жатат.
- Кандайдыр бир бүтпөгөн «таштанды» чогултуу механизми. Азыр кандай экенин билбейм, бирок ошол учурда сиз конфигурацияда сактагычты он гигабайт маалымат менен чектегиңиз келген деп жазсаңыз, анда бул эч нерсени билдирбейт. Көптөгөн конфигурация параметрлерин этибарга албай, сактагыч өстү. Натыйжада, ipfs керексизди кантип калыбына келтирүүнү чечмейинче, катуу дисктин чоң резервине ээ болушу керек болчу.
- Китепкананы колдонуу учурунда (мен азыр кандай экенин билбейм), кардар ишке ашырылган тайм-ауттарга ээ болгон эмес. Сиз файлды алуу өтүнүчүн жөнөтөсүз, эгерде ал жок болсо, анда сиз жөн эле илип турасыз. Албетте, адамдар көйгөйдү жарым-жартылай чечкен ар кандай жолдорду ойлоп табышты, бирок булар балдак эле. Бул нерселер кутудан чыгышы керек.
Дагы эле көптөгөн майда-чүйдө көйгөйлөр бар болчу жана таасир ачык эле: бул долбоор үчүн колдонулушу мүмкүн эмес. Мен сактоочу жайды издөөнү уланттым, ар кандай варианттарды изилдедим, бирок эч качан ылайыктуу эч нерсе таба алган жокмун.
Акыр-аягы, мен борборлоштурулган сактагычты өзүм жазууга аракет кылууну чечтим. Планеталар аралык болуп көрүнбөсө да, конкреттүү маселени чечет.
Мына ошентип чыкты , , , , .
жайыла турган - бул түйүндөрдү тармакка бириктирүүгө мүмкүндүк берген негизги, эң төмөнкү катмар. Ал алгоритмди камтыйт, мен азырынча 10000 XNUMXге жакын сервердин негизинде жарым-жартылай ишке ашырдым. Алгоритмдин толук версиясын ишке ашыруу алда канча татаал жана бир нече кошумча айларды талап кылат (балким андан да көп).
Мен бул макалада майда-чүйдөсүнө чейин жайылып сүрөттөлбөйм, ал бир күнү өзүнчө жазган жакшы. Бул жерде мен кээ бир өзгөчөлүктөрүн белгилей кетейин:
- http/https аркылуу иштейт.
- Сиз белгилүү бир тапшырма үчүн өзүнчө тармак түзө аласыз, бул алардын баары бир тармакта болгонго караганда ар бир жеке долбоорго жүктөмдү бир топ азайтат.
- Тайм-ауттар жана башка майда нерселер менен механизм башында ойлонулган. Жана бул кардардагы жана түйүндөгү бардык ыкмалар үчүн иштейт. Сиз колдонмоңуздун ичинен орнотууларды ийкемдүү башкара аласыз.
- Китепкана nodejs менен жазылган. Стектин иштөө маселелери анын борбордон ажыратылган табияты менен жабылат. түйүндөрдүн санын көбөйтүү менен жүк "жайылып" болот. Анын ордуна көптөгөн артыкчылыктар бар: чоң жамаат, жөнөкөйлүк жана колдонуунун жөнөкөйлүгү, изоморфтук кардар, тышкы көз карандылыктын жоктугу ж.б.
сактагыч тармакта файлдарды сактоого мүмкүндүк берген жайылма катмардан тукум кууган катмар. Ар бир файлдын мазмунунун өзүнүн хэштери бар, аны кийинчерээк алуу үчүн колдонсо болот. Файлдар блокторго бөлүнбөйт, бирок толугу менен сакталат.
метастокул - файлдарды эмес, маалыматтарды тармакта сактоого мүмкүндүк берген жайылма катмардан тукум кууган катмар. Интерфейси Nosql маалымат базасына окшош. Сиз, мисалы, файлды сактагычка кошуп, анын хэштерин алып, бир нерсеге шилтеме менен метастоклга жаза аласыз.
museria - сторакуладан жана метастокулдан тукум кууган. Бул катмар музыканы сактоо үчүн түздөн-түз жооптуу. Сактоо mp3 файлдары жана id3 тэгдери менен гана иштейт.
Ырдын «ачкычы» катары анын толук аты формада колдонулат Сүрөтчү (TPE1) - Аталышы (TIT2). Мисалы:
- Күкүрт - жүк
- Hi-rez - Lost My Way (feat. Эмилио Рохас, Дани Девинчи)
Ырдын аталыштары кандайча түзүлөөрүн мүмкүн болушунча майда-чүйдөсүнө чейин биле аласыз. . Функцияны көрүү керек utils.beautifySongTitle().
Түйүн орнотууларында аныкталган дал келүүлөрдүн пайызы дал келүү болуп эсептелет. Мисалы, 0.85 мааниси негизги салыштыруу функциясы (ыр аттары) 85% ашык окшоштук тапса, анда ал ошол эле ыр экенин билдирет.
Окшоштукту аныктоо алгоритми функцияда бар utils.getSongSimilarity().
Ырдын мукабасын кийинчерээк алуу үчүн тегдер аркылуу да тиркөөгө болот (APIC). Утилиттерде тегдерди кабыл алуу жана иштетүү үчүн бардык зарыл болгон ыкмалар бар.
Кардар аркылуу сактагыч менен иштөөнүн мисалын табууга болот .
Жогорудагы катмарлардын баары өз алдынча жана башка долбоорлор үчүн төмөнкү катмар катары өзүнчө колдонсо болот. Мисалы, буга чейин китептерди сактоо үчүн катмар жасоо идеясы бар.
museria-глобалдык дүйнөлүк музыка тармагында өз түйүнүңүздү ишке киргизүү үчүн мурунтан эле конфигурацияланган git репозиторий. Клондоо npm i && npm баштоо жана бул негизинен. Сиз аны кененирээк конфигурациялай аласыз, Dockerде иштете аласыз, ж.б. Толук маалымат дареги боюнча жеткиликтүү .
Репозиторий жаңыртылганда, түйүнүңүздү жаңыртышыңыз керек. Эгерде негизги же кичине версия номери өзгөрсө, анда бул иш-аракет милдеттүү болуп саналат, антпесе эски түйүндөр тармак тарабынан этибарга алынбайт.
Ырлар менен кол менен жана программалык түрдө иштей аласыз. Ар бир түйүн ар кандай тапшырмалар үчүн серверди иштетет. Анын ичинде, сиз демейки акыркы чекитке барганда, сиз музыка менен иштөө үчүн интерфейс аласыз. Мисалы, сиз бара аласыз (шилтеме кийинчерээк актуалдуу болбой калышы мүмкүн, киргизүү түйүндөрүн да алууга болот , же 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 кардарына мындай шилтемени түзүү функциясын кошуп жатабыз жана репозиторийди колдонгон бардык долбоорлор өз веб-сайттарындагы/тиркемелериндеги ырлардын жанына ушул шилтемелер менен кайрымдуулук баскычтарын коюшу мүмкүн. Колдонуучулар абдан тез жана оңой кайрымдуулук кылуу мүмкүнчүлүгүнө ээ. Албетте, бул ыкманы сактоо аркылуу гана эмес, ар кандай долбоордо жана чыгармачылык категориясында колдонсо болот.
Эмне үчүн сизге музыканы сактоочу жай керек жана ага кантип катыша аласыз?
- Эгер сиз музыкага байланыштуу долбоордун үстүндө иштеп жатсаңыз, же аны түзүүнү пландап жатсаңыз, анда баары ушул үчүн арналган. Сиз ырлардын агымын онлайн режиминде көбөйтүп, ырларды сактоо жана алуу үчүн museria колдоно аласыз. Эгерде ошол эле учурда сизде жок дегенде өзүңүздүн бир түйүнүңүздү көтөрүү жана кармоо мүмкүнчүлүгү бар болсо, анда бул тармактын өнүгүшүнө эң жакшы салым болот.
- Балким, сиз башка ролду алууга даярсыз: код менен жардам бериңиз же маалымат базасын толтуруңуз жана модерациялаңыз, досторуңузга долбоор жөнүндө маалымат таратыңыз ж.б.у.с.
- Балким, бул идея сизге жаккандыр жана анын баары жашап, өнүгүп кетиши үчүн каржылык жактан жардам берүүгө даярсыз. Канчалык көп түйүн, ошончолук ыр.
- Же сиз кайсы бир учурда ырды таап, жүктөп алышыңыз керек. Сиз муну өтө жөнөкөй, мисалы, аркылуу кыла аласыз .
Долбоор азыр эң башталгыч баскычта. Сыноо тармагы ишке киргизилди, түйүндөр тез-тез кайра жүктөлүшү мүмкүн, жаңыртууларды талап кылат ж.б. Эгерде баалоо мезгилинде эч кандай орчундуу көйгөйлөр жок болсо, ошол эле тармак негизгиге айланат.
Сиз сырттан түйүн тууралуу маалыматты көрө аласыз: ырлардын саны, бош орун ж.б.у.с., сыяктуу шилтеме аркылуу http://node-address/status же http://node-address/status?pretty
Менин байланыштарым:
Source: www.habr.com
