scanthe.network

Kamil Mlonek 29 lipca 2021

Wdrożenie aplikacji do analizowania kryptowalut pod kątem popularności na podstawie transkrybcji filmów YouTube.

scanthe.network to nowo powstały startup w zyskującej popularność branży kryptowalut. Założeniem marki jest analizowanie popularności i trendów wzrostowych poszczególnych projektów blockchain w Social Media i udostępnianie wyników użytkownikom portalu w przystępnej formie.

Klient zgłosił się do nas z pomysłem innowacyjnej aplikacji, która miała analizować występowanie poszczególnych słów kluczowych związanych z kryptowalutą w transkrybcjach (treści) filmów YouTube. Przedstawiona nam specyfikacja zakładała wykorzystanie CMS WordPress do gromadzenia i wyświetlenia uzyskanych danych, a w dodatku zawierała konkretny opis algorytmów do obliczania m.in. wagi kanału (na podstawie kilku parametrów z określonego przedziału czasowego), punktów kryptowaluty (liczonych na podstawie wagi kanału i częstotliwości występowania słowa kluczowego w transkrybcji), czy indeksów popularności i podatności na “pompy” (w nomenklaturze branżowej podatność na sztuczne podbijanie kursu). W dodatku lista kryptowalut w systemie, ich parametry oraz słowa kluczowe miały być generowane automatycznie na podstawie systemu coinmarketcap. Dodatkowym wymogiem projektu była pełna automatyzacja procesu obliczania wartości i działanie w określonym harmonogramie.

W przypadku tak nietypowych projektów, proces deweloperski bywa dosyć skomplikowany, a założenia zmieniają się dynamicznie w zależności od możliwości zastosowanej technologii. Największym problemem, z którym przyszło nam się zmierzyć to uzyskanie transkrybcji filmu YouTube w formie tekstu do przefiltrowania. Rozpoczęliśmy od przejrzenia dokumentacji oficjalnego API YouTube, które okazało się niemożliwe do wykorzystania w tym elemencie logiki systemu, bowiem endpoint odpowiadający za transkrybcję pozwalał pobrać tylko treść filmów zalogowanego użytkownika, skutecznie uniemożliwiając parsowanie listy innych kanałów. Poszukując rozwiązania opracowaliśmy obejście w postaci get_video_info, które dostarczało wszystkich potrzebnych informacji, generując plik .json. Kolejną przeszkodą było automatyczne pobieranie kryptowalut z systemu coinmarketcap i zapisywanie ich bezpośrednio w bazie danych WordPress. Skrypt musiał wiedzieć, które kryptowaluty są już w systemie, a w dodatku być w stanie zaktualizować ewentualne zmiany na podstawie danych w API. Rozwiązaliśmy to za pomocą tak zwanego mapowania, powiązując identyfikator w bazie danych WordPress z identyfikatorem w API coinmarketcap. Pozwoliło to na sprawne porównywanie i sprawdzenie występowania kryptowaluty w systemie. Ostatnim etapem tworzenia logiki było utworzenie harmonogramu uruchamiania skryptu obliczającego wartości, za sprawą zadania w CRON.

Z racji narzuconego wykorzystania CMS WordPress, do realizacji projektu wykorzystaliśmy język PHP (w tym bibliotekę Guzzle dla komunikacji z API). Skrypt został podzielony na moduły, z których każdy odpowiada za odrębną logikę m.in. import, obliczanie wagi kanałów, czy danych dla poszczególnych kryptowalut. Dodatkowym ficzerem jest kolejkowanie zadań, rozwiązujące problem użycia nieaktualnej wagi kanału do obliczania parametrów kryptowaluty poprzez ich wzajemnie nakładanie się. W ostatniej fazie deweloperskiej, struktura get_video_info uległa zmianie, przez co wymusiła na naszym zespole delikatną modyfikację dotychczasowej logiki.

Mockup psd created by freepik – www.freepik.com