[Проект(и)] youtube-dl , date-fns, godash

  1. Здравейте. Ето няколко идеи за проект които ми минаха през главата.

    Първата ми идея беше конзолно приложение което конвертира видео клиповете от един плейлист в youtube в mp3 и ги изтегля в посочена директория. Идеята ми хрумна от навика да харесвам дадена музика в youtube и след това да тегля песента при мен, та това ми се видя като дадено улеснение за мен , пък и доста хора сигурно имат подобен навик. Разбира се youtube не позволява през своето API такива неща, затова като цяло има два варианта. Първият е регистрация за google developer от където се генерират OAuth 2 ключове с които да работи приложението и така даден потребител, ще може да се log-не със своят youtube акаунт, от където да се извлече информацията която го интересува и получените линкове към клипове се пращат към външна услуга ( https://www.youtubeinmp3.com/api/ ) която връща конвертираното .mp3. Това е по-сложният вариант тъй като изисква познаване на API-то. Другият вариант е използване на https://github.com/PuerkitoBio/goquery за извличане на линковете към видеата и пак пращане на тази услуга за конвертиране, според мен по-добрият.

    Втората ми идея е написване на библиотека много подобна на https://github.com/date-fns/date-fns . В момента е trending в github и ми се вижда доста интересна и полезна.

    Третата е имплементация на колкото се може повече неща от lodash само, че за go. Гледам, че има няколко опита вече в github, като този е най-популярният https://github.com/Mparaiso/lodash-go . Според мен има накъде да се надгради от него и би било интересно съчетание на функционално програмиране и go.

    Като цяло това са ми идеите и едва ли ще измисля по-добри в скоро време. Най-много съм навит за втората идея, пък ако тя се окаже малка може да направя и първата(тя ще отнеме доста по-малко работа според мен) или пък и колкото мога от третата.

    Дано са ви харесали идеите. Поздрави и лека вечер.

    1. Идеята за клонинг на youtube-dl е хубаво като идея и навярно наистина е най-добре да ползваш goquery. От друга страна youtube-dl си работи (по последните ми данни) и имам дълбоки съмнения че ще успееш да го имплементираш и поддържаш по добре - просто едва ли имаш това време.

    2. Тази идея най ми харесва и на мен. Единствения ми проблем е че ми изглежда една идея по лесно отколкото ми се иска. Това е в не малка част защото част от нещата които виждам в date-fns ги има в стандартната time и навярно ако ще имплементираш неща като AddDays ще е хубаво просто да използваш t.Add(time.Day * days) , където t е от тип time.Time. Въпреки това одобряваме този проект с идеята че ще бъде полезно и ще имаш време за качествена документация и тестове, които навярно ще изядат половината от времето.

    3. Предвид колко е популярна друга библиотека бих казал че явно интерес няма :). Аз лично едва ли ще ползвам нещо такова под формата на библиотека, защото ще ми се наложи да се разделя с типовата система, а аз си я харесвам :D . Ако се заглеждаш в кода ще видиш че не е особено трудно да си пишеш MapReduce функции на go. Повечето код е реално е боравене с reflect. Аз лично винаги бих си ги писал на ръка предвид леснотата на имплементацията и текущите алтернативи - библиотеки ползващи reflect и генерирация на код (за да не го пиша на ръка). Генерацията на код може би е не лоша идея за проект, но навярно ще отнеме повечко време отколкото ще имаш.

Трябва да сте влезли в системата, за да може да отговаряте на теми.