Blog (2)
Komentarze (77)
Recenzje (0)

Google Apps Script - zbieramy dane o filmach z playlisty na YouTube i je porównujemy

@nalesnikkGoogle Apps Script - zbieramy dane o filmach z playlisty na YouTube i je porównujemy02.02.2021 19:59

Jak z realizacją Waszych postanowień noworocznych? 18 stycznia miał miejsce najbardziej depresyjny dzień w roku - Blue Monday, gdzie jednym z argumentów w algorytmie jest niedotrzymanie postanowień noworocznych, np. nauki programowania. Jaki ma to związek z dalszą treścią wpisu? O tym za chwilę. W tym wpisie użyję Google Apps Script, który został wprowadzony do Google Sheet w 2009r. Ma on na celu zbieranie informacji o filmach na YouTube we wskazanej playliście przy użyciu YouTube Api. Może to być playlista spoza naszego konta. Informacje te możemy już dowolnie obrobić i zaprezentować. Użyję do tego Google Sheet. Mogę powiedzieć, że Google Apps Script jest czymś jak VBA dla Microsoft Office. Tutaj nadmienię, że skrypt możemy również używać z innymi narzędziami Google - np. CalendarDocsDriveGmailSlides i z wieloma innymi. Przykłady skryptów znajdziecie w repozytorium Google Workspace. Rozwiązanie Google bazuje na JavaScripcie.

Nie pamiętam czy najpierw miałem pomysł/problem i szukałem technologii czy odwrotnie - natrafiłem na to rozwiązanie od Google i chciałem je wypróbować. Inspiracją był ten artykuł napisany przez Ricka Viscomi. Na jego kodzie rozpocząłem pracę oraz bazowałem na pliku Google Sheet, co możesz sprawdzić w historii commitów na repozytorium. W kontekście analizy ciekawe są dla mnie playlisty z kursami np. języków programowania. Często można zauważyć, że pierwszy film ma bardzo dużą ilość wyświetleń w porównaniu do innych z playlisty. Z kolei drugi notuje nagły spadek ilości wyświetleń, kolejne filmy również mają mniejszą ilość wyświetleń ale z mniejszą różnicą między sąsiednimi. I tutaj wrócę do tego co napisałem na początku, czyli motywacji. Być może jest to jakiś wyznacznik w jaki sposób podchodzimy do nauki i jak szybko wiele osób rezygnuje i odpuszcza. Patrząc na to z drugiej strony, pierwszy film może zniechęcać do oglądania kolejnych i stąd taka tendencja. Wnioski nie są oczywiste. Każdy z Was może przeanalizować interesującą dla siebie playlistę, a następnie wyciągnąć wnioski z danych, które pobierze i zobaczy.

Jak to działa?

Dane te oczywiście nie do końca muszą być rzetelne i nie mamy na to wpływu. Przykładowo, dany film z playlisty może się automatycznie odtwarzać po wejściu na wybrany kanał na YouTube. W związku z tym jego odtworzenie jest niezamierzone i niecelowe. Film z playlisty może być podany również jako przykład na danym forum. Oznacza to, że odbiorcy nie byli zainteresowani całą playlistą, a tylko jednym podanym filmem. Mimo to nabijają statystyki do tego jak filmy prezentują się względem siebie na playliście. I jeszcze jeden pomysł - film może być popularny, ze względu na obecność w tytule konkretnych rozwiązań lub popularnych i interesujących haseł. Użytkownicy trafiają do niego bezpośrednio z wyszukiwarki Google czy YouTube - tutaj ponownie nie są oni zainteresowani całą gamą filmów, całym kursem, a jedynie konkretnym filmem. Od pewnego czasu można zaobserwować pojawianie się kilkugodzinnych kursów w jednym wideo - “Full tutorial…”, “Full course...”, “All in one…”, “YYZZ in X hours”. Wtedy zainteresowanie jest widoczne w panelu YouTube w statystykach do danego filmu. Jednak przez długość wideo niemal na pewno nie będą to dane oddające rzeczywiste zainteresowanie. Nie będę się skupiał tutaj na analizie ale pokażę jak można użyć tego rozwiązania. Po wejściu na stronę https://www.google.com/script/start/ należy wejść w Start Scripting. Skrypt piszemy w edytorze online i rozwiązanie oparte jest o chmurę.

Hello World

Zróbmy szybko “Hello World” i wrócimy ponownie do opisywanego rozwiązania.

Stwórz plik Google Sheet na swoim dysku Google Drive. W pliku wybierz opcję Tools -> Script Editor (najpewniej masz te i kolejne opisane opcje w języku polskim).

Zezwól na uprawnienia skryptu na dostęp do utworzonego pliku arkusza na Google Drive.

[1/2]
[2/2]

Nasz skrypt będzie teraz powiązany z utworzonym arkuszem (Hello nazwa skryptu, HelloWorld nazwa arkusza).

Napiszmy funkcję, która łączy tekst z dwóch komórek A2 i B2. Uruchamiając ją zobaczymy że w Google Sheet zostanie ustawiona wartość w komórce D2.

function myFunction() {
  var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet1")
  var A2 = sheet.getRange("A2").getRichTextValue().getText()
  var B2 = sheet.getRange("B2").getRichTextValue().getText()
  var cell = sheet.setActiveCell("D2")
  cell.setValue(A2+B2)
}

Funkcja została uruchomiona z widoku edytora skryptu, a nie z widoku arkusza, ponieważ nie została dodana taka opcja do menu przez skrypt.

Wracamy do skryptu który pomaga w analizie filmów w playliście na YouTube.

Napisany skrypt zawiera komentarze wewnątrz pliku, więc myślę, że nie ma sensu omawiania każdej linijki kodu po kolei. Do operacji w arkuszu mamy dostęp przez klasę SpreadsheetApp. Z ciekawszych rzeczy to słowa kluczowe z YouTube API takie jak contentDetails, statistics, snippet. Słowa te zawierają określone informacje o najróżniejszych danych, tutaj co możemy sprawdzić o playlistach, a tutaj co możemy wyciągnąć o filmach wideo, a także mnóstwo innych danych np. na temat kanału. Wygodnie możemy przetestować jakie dane dostajemy używając tego API bezpośrednio z dokumentacji i np. pobrać dane filmów z playlisty (przy wysłaniu requestu w wyskakującym oknie musimy wyrazić zgodę na to że Google APIs Explorer żąda dostępu do naszego konta Google.).

W edytorze kodu możemy uruchamiać wybrane funkcje, które nas interesują:

Dostępny jest debugger:

Możemy też użyć

Logger.log("")

:)

Zrzuty ekranu pokazane do tej pory to wersja beta nowego edytora. Można też użyć wersji legacy. Przydała mi się bardzo jako historia kontroli wersji (File -> See version history albo skrót CTRL + ALT + SHIFT + H) i możliwość cofnięcia zmian.

Nie widziałem tej opcji w nowej wersji beta. Za to wersja beta pozwala pisać w wielu liniach na raz, legacy nie umożliwia tego. Debugger w wersji legacy wygląda tak:

Pozostawiam do indywidualnej oceny, która wersja jest wygodniejsza. Bez problemu możemy się przełączać między wersjami edytorów zachowując napisany kod.

Co zyskujemy dzięki danym dostarczanym przez skrypt?

Możemy obserwować popularność i zainteresowanie kolejnymi filmami. Mierzone są:

  • ilość wyświetleń,
  • like,
  • dislike,
  • komentarze,
  • czas trwania filmu,
  • polubienia per ilość wyświetleń,
  • dislikes per ilość wyświetleń,
  • procentowy udział polubień,
  • procentowy udział dislikes,
  • ilość komentarzy per ilość wyświetleń.

W każdym wierszu jest informacja jakiego filmu dotyczy statystyka wraz z linkiem do tego filmu, a także informacja kiedy został on opublikowany. W arkuszu Google Sheet dodana jest opcja menu "YouTube stats". Znajdziesz tutaj opcje:

  • dodania adresu URL playlisty, którą chcesz zbadać
  • odświeżenia manualnego ostatnio dodanej playlisty
  • wyczyszczenia danych znajdujących się w arkuszu.

Dane są prezentowane za pomocą wartości z podsumowaniem oraz czytelnych wykresów i obrazują to co dostarcza skrypt. Zobacz kolejne zakładki "Series Stats", "Series Views", "Series Stats per View". Wystarczy podać adres URL do interesującej nas playlisty i zatwierdzić:

[1/2]
[2/2]
[1/2]
[2/2]

Poprzednie dane są automatycznie usuwane aby uniknąć sytuacji że mamy wideo z różnych playlist (tak się zdarzy jeśli kolejna dodawana playlista ma mniejszą ilość filmów - zostaną nadpisane wiersze od początku ale pozostaną wiersze również ze filmami z poprzedniej playlisty). Można również manualnie wyczyścić arkusz przez opcję z menu oraz odświeżyć dane o aktualnej playliście.

Triggery

Skrypt jest automatycznie wywoływany przez trigger dzięki temu dane ostatniej playlisty są zawsze aktualne. Trigger możemy ustawić na wybrany event (nie tylko czasowy):

Mamy podgląd z podsumowaniem na temat poziomu błędów, ilości uruchomień:

Historia uruchomień skryptu z logami wygląda tak:

Po każdej zmianie pliku przez skrypt, Google Sheet zapisuje historię jego zmian. Mamy również możliwość podglądu danych historycznych, dzięki czemu można je porównywać między sobą:

Podsumowanie

Znane błędy:

GoogleJsonResponseException: API call to youtube.videos.list failed with error: The request specifies an invalid filter parameter.

Powyżej 50 filmów w playliście (max request w YouTube API to 50).

Google Apps Script daje bardzo dużo możliwości (nie tylko z Google Sheet jak już wspominałem). Istnieje opcja dodania biblioteki z poziomu edytora i skorzystania z zaawansowanych usług Google, co daje kolejne i zaawansowane możliwości.

A jeżeli ktoś uwielbia analizować czy przeglądać dane bardzo ciekawym zbiorem jest plik COVID-19 w Polsce tworzony przez Michała Rogalskiego.

Link do repozytorium GitHub z kodem źródłowym

Link do pliku Google Sheet.  

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.