• Community Manager

    API di YouTube: riusciamo a fare un sito per piccole statistiche?

    Salve a tutti!

    Per la prossima classe di YouTube, Road to 10.000 (devo ancora preparare tutto), mi piacerebbe tracciare i dati in maniera automatica.

    Servono:

    • iscritti
    • numero di video
    • visualizzazioni

    Dalle API sapete se si riesce a fare?


  • User Attivo

    Dando una veloce lettura alla documentazione, quello che serve dovrebbe trovarsi qui ( https://developers.google.com/youtube/v3/docs/channels ), proprietà:

    statistics.viewCount
    statistics.subscriberCount
    statistics.videoCount

    Lascio agli esperti approfondire.


  • Moderatore

    Tempo permettendo e se non sono l'unico a partecipare potrei dare una mano lato codice.


    giorgiotave 1 Risposta
  • Community Manager

    @overclokk ha detto in API di YouTube: riusciamo a fare un sito per piccole statistiche?:

    Tempo permettendo e se non sono l'unico a partecipare potrei dare una mano lato codice.

    Allora, se troviamo 2-3 di voi, facciamo qualcosa di utile e con tutti i link a chi partecipa lo mettiamo in una pagina su Connect guarda

    Su YouTube c'è poca roba in giro


  • Moderatore

    Potenzialmente per partire con qualcosa di semplice, lista hardcoded degli iscritti in un file di testo CSV o JSON poi il resto dei dati li pesca dalle API.

    C'è qualche esempio di interfaccia da cui prendere spunto?


  • Community Manager

    Schermata 2020-12-11 alle 17.23.19.png

    Ahahhaha scherzo. Però ho scoperto questo che non ho provato
    https://workspace.google.com/marketplace/app/yt_tracker_youtube_stats_analytics/952783286913

    Possiamo iniziare con qualcosa di molto semplice e poi capire se nel tempo creare qualcosa di utile per tutti. Quindi per ora direi base base base.

    In giro c'è roba vecchia come questa https://socialblade.com/youtube/user/giorgiotave

    https://tubularlabs.com/

    https://vidooly.com/youtube/channel-stats/giorgiotave

    Intendevi cose così?


  • Moderatore

    Ok, appena torno su desktop ci guardo.

    Per ora non ho ancora le idee chiare perché poi non so come lo vuoi utilizzare 😀

    La cosa più semplice penso sia una tabella.


  • Moderatore

    Per ora una cosa super veloce, tabella cone le API YT:

    Screenshot_2020-12-13 Youtube analytics.png

    Ovviamente mi servono tutti gli ID dei canali.


  • Moderatore

    GLi ID dei canali banalmente in questo formato:

    [
        "UCvWXRrUaVdBEvVIHWPugIgw",
        "UCvWXRrUaVdBEvVIHWPugIgw",
        ...rest,
    ]
    

    giorgiotave 1 Risposta
  • Community Manager

    @overclokk ha detto in API di YouTube: riusciamo a fare un sito per piccole statistiche?:

    GLi ID dei canali banalmente in questo formato:

    [
        "UCvWXRrUaVdBEvVIHWPugIgw",
        "UCvWXRrUaVdBEvVIHWPugIgw",
        ...rest,
    ]
    

    Ci penso io. Servirà fare una tabella ordinabile.

    Si riesce a fare un cron? Li prendiamo ogni settimana

    Più avanti possiamo pensare di trovare un modo furbo per far in modo che siano loro ad aggiungersi


    overclokk 1 Risposta
  • Moderatore

    @giorgiotave ha detto in API di YouTube: riusciamo a fare un sito per piccole statistiche?:

    Ci penso io. Servirà fare una tabella ordinabile

    È già ordinabile, l'icona non si vede ma c'è 🙂

    @giorgiotave ha detto in API di YouTube: riusciamo a fare un sito per piccole statistiche?:

    Si riesce a fare un cron? Li prendiamo ogni settimana

    Per ora semplicemente refreshando prende gli attuali.
    Ma vuoi collezionare i dati nel tempo? Perché in questo caso bisogna vedere se c'è già qualcosa nelle API di YT, mi sembra di aver visto anche la API per YT analytics ma non ho approfondito.

    @giorgiotave ha detto in API di YouTube: riusciamo a fare un sito per piccole statistiche?:

    Più avanti possiamo pensare di trovare un modo furbo per far in modo che siano loro ad aggiungersi

    Per me il modo più furbo è far fare una pull request su github ai partecipanti ma poi non si iscrive più essuno :d:

    Comunque ci sono anche le API per i file Sheets di Google, nel caso per tenere più semplice ognuno si aggiunge da li, però il file deve essere pubblico mi sembra.


    giorgiotave 1 Risposta
  • Community Manager

    @overclokk ottimo per l'ordinamento.

    Io li collezionerei ogni settimana. Se vuoi vediamo con @andreadragotta di mettere qui su connect e offrire lo spazio. Perché così possiamo fare gli andamenti come vogliamo noi.

    Per l'inserimento facciamo a mano sicuramente all'inizio, devo verificare che siano iscritti :d:

    Ora mi invento qualocsa, prossima settimana ti faccio la lista 🙂

    Non credo che YouTube abbia i dati retroattivi sai...


    overclokk 1 Risposta
  • Moderatore

    @giorgiotave Ora quello che ho fatto io è proprio basico, ho usato Next.js (React) perché visto che mi stavo studiando la documentazione ho voluto provare direttamente con qualcosa, come riepilogo può essere utile ma forse c'è bisogno di creare un processo un pelo più complesso se vuoi consentire l'aggiunta agli iscritti e monitorare l'andamento nel tempo, forse usando gogole sheet e famiglia riusciamo lo stesso, mi stavo guardando in giro e ho trovato questo:

    https://zapier.com/learn/google-sheets/google-apps-script-tutorial/


    Ma forse le analytics API sono solo per il proprio utente se no tutti guarderebbero i dati degli altri canali 😂


  • Moderatore

    Finito di guardare l'utlimo video, direi proprio che l'approccio migliore sia usare quello che già offre Google, sarebbe bello crearsi la propria app ma non ho abbastanza vite a disposizione 😅 e poi è più facile da embeddare qui sul forum.

    • Google form -> Google Sheet
      Le persone si iscrivono tramite un form e i dati vengono salvati su un file sheet
      Il dato più importante è l'ID del canale

    • YT Statistic -> Google Sheet
      Si crea uno script che fa una chiamata alle statistiche di YT e salva sul file Sheet

    • Google calendar -> Google Sheet
      Si usa il calendario come servizio cron per eseguire lo script precedente e salvare i dati sul file Sheet.


    giorgiotave 1 Risposta
  • Community Manager

    @overclokk questo procedura è bellissima, per me va bene 🙂


  • Moderatore

    Ok, mi studio meglio la documentazione e vediamo di creare il processo.


  • User Attivo

    Ehm.. @giorgiotave quindi a te interessa
    Iscritti,
    Numero Video
    Visualizzazione per video:

    Dati sul canale: https://developers.google.com/youtube/v3/docs/channels/list

    Con questo prendi le statistiche del canale (usando il NomeCanale)

    curl \
      'https://youtube.googleapis.com/youtube/v3/channels?part=snippet%2CcontentDetails%2Cstatistics&forUsername=giorgiotave&key=[YOUR_API_KEY]' \
      --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
      --header 'Accept: application/json' \
      --compressed
    

    Con questo prendi le statistiche del canale (usando l'id)

    curl \
      'https://youtube.googleapis.com/youtube/v3/channels?part=statistics&id=UCjL9qnLkh-tLCNHlHA80vkw&key=[YOUR_API_KEY]' \
      --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
      --header 'Accept: application/json' \
      --compressed
    

    ed ottieni:
    Numero di video pubblicati
    Numero di visualizzazioni
    Numero di Subscribers

    {
      "kind": "youtube#channelListResponse",
      "etag": "j0ZL9d73zdPhRWvrH79lPQs7vsk",
      "pageInfo": {
        "totalResults": 1,
        "resultsPerPage": 5
      },
      "items": [
        {
          "kind": "youtube#channel",
          "etag": "EK-DC9hNYsQ28YmGNeU5ZW5AeaU",
          "id": "UCjL9qnLkh-tLCNHlHA80vkw",
          "statistics": {
            "viewCount": "2359791",
            "subscriberCount": "30800",
            "hiddenSubscriberCount": false,
            "videoCount": "662"
          }
        }
      ]
    }
    

    Con questo prendi tutti i video (io per esempio ho preso fino a 5000 video dal tuo canale)
    https://developers.google.com/youtube/v3/docs/search/list

    curl \
      'https://youtube.googleapis.com/youtube/v3/search?part=snippet&channelId=UCjL9qnLkh-tLCNHlHA80vkw&maxResults=5000&key=[YOUR_API_KEY]' \
      --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
      --header 'Accept: application/json' \
      --compressed
    

    nel json ne vedi 3.. ovviamente
    Ed ottieni ID dei video

    {
      "kind": "youtube#searchListResponse",
      "etag": "QIGsQR77vjcPecQ9zFn_9qIqnHo",
      "nextPageToken": "CAMQAA",
      "regionCode": "IT",
      "pageInfo": {
        "totalResults": 682,
        "resultsPerPage": 3
      },
      "items": [
        {
          "kind": "youtube#searchResult",
          "etag": "Jo66Sv2pftskaYB1uQJcH_NG6mo",
          "id": {
            "kind": "youtube#video",
            "videoId": "ypSmZvqB4UA"
          },
          "snippet": {
            "publishedAt": "2016-10-27T09:43:14Z",
            "channelId": "UCjL9qnLkh-tLCNHlHA80vkw",
            "title": "PC e OBS: Live dalla Telecamera dello Smartphone Android e iOS - Tutorial",
            "description": "Durante le Live YouTube e Facebook gestite con OBS si può postare la Telecamera / Webcam del proprio Smartphone come telecamera aggiuntiva e quindi ...",
            "thumbnails": {
              "default": {
                "url": "https://i.ytimg.com/vi/ypSmZvqB4UA/default.jpg",
                "width": 120,
                "height": 90
              },
              "medium": {
                "url": "https://i.ytimg.com/vi/ypSmZvqB4UA/mqdefault.jpg",
                "width": 320,
                "height": 180
              },
              "high": {
                "url": "https://i.ytimg.com/vi/ypSmZvqB4UA/hqdefault.jpg",
                "width": 480,
                "height": 360
              }
            },
            "channelTitle": "Giorgio Taverniti",
            "liveBroadcastContent": "none",
            "publishTime": "2016-10-27T09:43:14Z"
          }
        },
        {
          "kind": "youtube#searchResult",
          "etag": "TvazwXzmUdTOFDY1w1Lhg8AwYok",
          "id": {
            "kind": "youtube#video",
            "videoId": "UYgCQ3dmPdU"
          },
          "snippet": {
            "publishedAt": "2020-01-17T06:25:28Z",
            "channelId": "UCjL9qnLkh-tLCNHlHA80vkw",
            "title": "Sito E-Commerce: ha ancora senso?",
            "description": "Partendo dall'ultima, INCREDIBILE, novità di Google in ambito E-commerce, rispondiamo alla domanda di Maurizio su E-Commerce e Contenuti. E vi mostro ...",
            "thumbnails": {
              "default": {
                "url": "https://i.ytimg.com/vi/UYgCQ3dmPdU/default.jpg",
                "width": 120,
                "height": 90
              },
              "medium": {
                "url": "https://i.ytimg.com/vi/UYgCQ3dmPdU/mqdefault.jpg",
                "width": 320,
                "height": 180
              },
              "high": {
                "url": "https://i.ytimg.com/vi/UYgCQ3dmPdU/hqdefault.jpg",
                "width": 480,
                "height": 360
              }
            },
            "channelTitle": "Giorgio Taverniti",
            "liveBroadcastContent": "none",
            "publishTime": "2020-01-17T06:25:28Z"
          }
        },
        {
          "kind": "youtube#searchResult",
          "etag": "K85VmszUDSYDKYYxAOH-SexZ0Tk",
          "id": {
            "kind": "youtube#playlist",
            "playlistId": "PLzt4Piz6uM_6nBedHMH6hKgPJzBkXsitM"
          },
          "snippet": {
            "publishedAt": "2020-01-26T08:12:29Z",
            "channelId": "UCjL9qnLkh-tLCNHlHA80vkw",
            "title": "Google",
            "description": "",
            "thumbnails": {
              "default": {
                "url": "https://i.ytimg.com/vi/ZYu1PIDpy8Y/default.jpg",
                "width": 120,
                "height": 90
              },
              "medium": {
                "url": "https://i.ytimg.com/vi/ZYu1PIDpy8Y/mqdefault.jpg",
                "width": 320,
                "height": 180
              },
              "high": {
                "url": "https://i.ytimg.com/vi/ZYu1PIDpy8Y/hqdefault.jpg",
                "width": 480,
                "height": 360
              }
            },
            "channelTitle": "Giorgio Taverniti",
            "liveBroadcastContent": "none",
            "publishTime": "2020-01-26T08:12:29Z"
          }
        }
      ]
    }
    
    

    Dati sui Video: https://developers.google.com/youtube/v3/docs/videos/list

    Con questo ti prendi le statistiche del singolo video conoscendo l'id

    curl \
      'https://youtube.googleapis.com/youtube/v3/videos?part=id%2C%20localizations%2C%20statistics&id=udXBMhWKOac&key=[YOUR_API_KEY]' \
      --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
      --header 'Accept: application/json' \
      --compressed
    

    Qui sto prendendo i dati del tuo:


    e direi che abbiamo quello che ti interessa..

    {
      "kind": "youtube#videoListResponse",
      "etag": "hUGEIBI7jn1wVXUsVYHeKra75s4",
      "items": [
        {
          "kind": "youtube#video",
          "etag": "Fdd8yvCY1HcmXpH34AKrhjS-LSE",
          "id": "udXBMhWKOac",
          "statistics": {
            "viewCount": "610",
            "likeCount": "60",
            "dislikeCount": "1",
            "favoriteCount": "0",
            "commentCount": "29"
          },
          "localizations": {
            "it": {
              "title": "Licenziata da Google per Razzismo?",
              "description": "Torna FastForward formato TG. Ed è qui per restare, ogni Martedì.\n\nOggi affrontiamo 9 notizie importanti. Quali? Ma tanto un TG si apre senza sapere di cosa si parla no? Vi prometto sempre notizie importanti.\n\nLa Live del 12 Gennaio\n[The Opening] Stagione 2021 di FastForward: si cambia!\n\n
    \n\n\n-------------------------------\nINDICE E FONTI\n\n00:00 Opening\n00:49 Perché Google è andato Down? https://bit.ly/382tM05\n01:40 Il caso Timnit Gebru https://bit.ly/3mjb1dZ\n03:53 Indagine Tecnology Review https://bit.ly/384HD5X\n04:55 L'Europa vuole sapere i segreti di Google https://bit.ly/2LF4ptX\n08:44 Web almanac SEO https://bit.ly/2K7ECtH\n11:01 Mia newsletter https://bit.ly/3mgySed\n11:25 Brevetto Google https://bit.ly/2LCPssf\n12:07 Pornhub https://bit.ly/3nnwhk3\n12:48 StreamYard https://bit.ly/3gOvfeh\n\n\n\nÈ nata la mia Newsletter!\nFastLetter: Una fonte buona dalla quale aggiornarsi\nhttps://giorgiotaverniti.substack.com/\n\n-------------------------------\n\nPer seguire FastForward:\nSu YouTube: iscriviti e attiva la campanella 🔔 http://bit.ly/IscrivitiAlCanale\n\n\nTelegram (con approfondimenti e link utili): http://bit.ly/TelegramFF\n\nPodcast \nSpotify: http://bit.ly/SpotyFF\nSpreaker: http://bit.ly/2E7xIyi\nApple Podcast: https://apple.co/2G2shC2\nGoogle Podcast: http://bit.ly/2XvRDhB\n\nCONSIGLI AMAZON \nhttps://amzn.to/2BVlveL\n\n\n-------------------------------\n☆ Su Connect.gt potete approfondire qualsiasi argomento legato al web https://connect.gt ☆\n\n☆ Sul Master Club potete trovarci in giro per l'Italia con i nostri eventi, oppure seguire la formazione online http://www.gtmasterclub.it/ ☆" } } } ], "pageInfo": { "totalResults": 1, "resultsPerPage": 1 } }

    Schedulato ogni X ... ed hai tutte le stats 😉

    Per quando lo avresti bisogno? Sono un po' preso in questo periodo... ma magari un buchino lo troviamo


  • User Attivo

    .. centra poco.. però mi sono imbattuto in questo tool che può far comodo a qualcuno:
    https://commentpicker.com/


  • Moderatore

    Usare il nome del canale non è sicuro, l'ID è l'unico valore unico e non cambia nel tempo (bisogna valutare i casi in cui ci sia l'url personalizzata).

    Form e statistiche dovrebbero essere embeddabili qui sul forum per essere sempre visibili e per evitare un terzo dominio che comunque andrebbe embeddato qui.

    L'utente deve iscriversi usando il form e inserendo almeno l'ID del canale o anche tutta la url se presente l'ID.

    Al submit si deve popolare una tabella o altro sistema per salvare questi dati.

    Quindi parte un cron che va a completare i dati che mancano ogni tot.

    Il tutto deve essere semplice da usare se no si vanifica tutto.


    mirkomassarutto 1 Risposta
  • User Attivo

    .. direi quasi fatto.. unica cosa che devo vedere meglio nella documentazione il listing dei video..
    Per ora raccolgo:

    Canale
    channel_id
    channel_name
    channel_description
    channel_published
    channel_viewCoun
    channel_subscriberCount
    channel_VideoCount

    Video
    video_videoId
    video_localization
    videoTitle
    videoDescription
    video_publishTime
    video_viewCount
    video_likeCount
    video_dislikeCount
    video_favoriteCount
    video_commentCount

    Serve altro?