• 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?


  • User Attivo

    Qui un test di recupero sui video di @giorgiotave

    https://yt.massarutto.it/tools/

    Purtroppo riusciamo a recuperare al massimo i 50 video precedenti.. insomma diciamo che il problema dati è risolto se non ti interessano più di 50 video prima della data di "censimento"


  • User Attivo

    Mi correggo.. riusciamo a fare anche la paginazione.. comunque direi che ho tirato fuori quello che serve

    Dati Canale: giorgiotave
    channel_id: UCjL9qnLkh-tLCNHlHA80vkw
    channel_name: Giorgio Taverniti
    channel_description: Ciao, io sono Giorgio Taverniti, ... bla bla bla
    channel_published: 2006-05-05T13:55:47Z
    channel_viewCount: 2360360
    channel_subscriberCount: 30800
    channel_VideoCount: 663

    Esempio dati ultimo video

    Video: c6IgWVD4OIY
    video_publishedAt: 2020-12-17T06:30:04Z
    video_title: Leggendo apostrofi in Autostrada..
    video_description: La storia di Google, della SEO e del significato della è. Della e. bla bla bla
    video_liveBroadcastContent: none
    categoryId: 28 (Science & Technology)
    defaultLanguage: it
    duration: PT9M24S
    dimension: 2d
    definition: hd
    caption: false
    licensedContent: true,
    contentRating:
    projection: rectangular
    video_viewCount: 288
    video_likeCount: 37
    video_dislikeCount: 0
    video_commentCount: 20

    Ora basta sapere cosa serve visualizzare..


  • User Attivo

    @overclokk il sistema come concepito permette di aggiungere un utenza sia attraverso id canale che attraverso il nome canale.
    Una volta inserito il nome canale noi registriamo comunque l'id che è il riferimento per tutti i check futuri.
    Io la presa e messa in database l'ho già finita.. resta solo da elaborare un interfaccia o api per restituire JSON per eventuali integrazioni api.
    Il "giro" sheet, calendar, Google form mi pare un po' articolato... Ma magari mi sbaglio


    overclokk 1 Risposta
  • Moderatore

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

    Il "giro" sheet, calendar, Google form mi pare un po' articolato... Ma magari mi sbaglio

    In realtà non è articolato perché non hai lo sbattimento di tirare su un db dedicato, costruire una UI, usare una url esterna che poi è da embeddare qui, creare un form per l'iscrizione, ecc, con gli strumenti di Google hai già tutto quello che serve, con gli script app integri gli strumenti fra loro in modo semplice perché sono fatti apposta per comunicare fra loro, e il tutto senza avere necessita di preparare una piattaforma da zero.

    Per esempio gia i google form ti danno la possibilità di salvare su un file sheet e da qui si fa il resto, è molto più immediato.


  • Community Manager

    Eccomi, scusate il ritardo.

    La verità è che, davvero, sono andato un po' in crisi nel capire qual è il processo più semplice da applicare. Non è facile, perché c'è da tenere conto che bisogna farlo riservato alla classe, ALMENO PER IL MOMENTO, e dobbiamo averlo qui su Connect.gt (con tutti i credits di chi lo crea, link e via dicendo).

    Quindi ho pensato un po'.

    Serve un Form sicuro
    Questo perché altrimenti si iscrivono tutti a caso. Non so se dobbiamo autorizzare qualcosa o che.

    La persona deve mettere:

    • Nome su Connect
    • Sua discussione su Connect
    • Suo canale
    • Tema

    Da qui noi salviamo, in più:

    data di compilazione: diventerà la data di inizio alla classe
    iscritti: in quel momento
    iscritti ora: ULTIMO nostro salvataggio
    numero video: in quel momento
    numero video ora: ULTIMO nostro salvataggio
    salto di iscritti:
    salto iscritti in percentuale:
    salto iscritti per video:

    Così riusciamo a fare questa
    alt text

    A me questo serve.

    Se da questo si salva il dato settimanalmente, più avanti possiamo pensare di fare altro.

    Ma in questo momento è troppo complicato. Sono impazzito a pensare le varie cose e così perdo un mucchio di tempo 🙂

    Pensate solo che ora devo capire come far aprire le discussioni qui, se in una nuova sezione o in quella vecchia e nel caso sistemare le discussioni...mmm


  • Moderatore

    Google form secondo me è il mezzo più semplice e sicuro, già di base si può collegare ad uno spreadsheet anche esistente, ogni campo del form sarà la colonna nel foglio poi se servono campi aggiuntivi si aggiunge lo script necessario.

    Da questo foglio poi si procede con il resto.


  • Moderatore

    Devo solo mettermi in pari con alcuni lavori e poi faccio una demo, purtroppo a me le vacanze spezzano il flusso e poi riprendere è sempre un problema...


  • User Attivo

    Ciao @giorgiotave e @overclokk io il sistema di presa API lo ho già definito con tutto quello che ho scritto sopra..
    il concetto è del tipo:

    1. Mi iscrivo e do il mio canale
    2. Il sistema analizza se il canale esiste
    3. Il sistema preleva le stats da quel momento in avanti

    .. personalmente non vedo cose strambe...

    se vuoi ti faccio avere via e.mail il csv.. oppure ti creo un API per prelevarle.

    ditemi voi... integrazione con form... si può fare... ma non hai in mano nulla.... sarà che io con "excel" non mi ci sono mai trovato


    overclokk 1 Risposta
  • User Attivo

    ah giusto per.. il sistema si basa poi sull'ID... che magari non tutti ti sanno dare all'inizio 😉


  • Moderatore

    @mirkomassarutto "excel" sarà il nostro DB, tutto qui, è più semplice per Giorgio poter accedere e vedere i dati in tempo reale, i vari endpoint che hai indicato ci saranno utili per reperire le informazioni necessarie e caricarle sul DB (excel).

    Per una cosa così non è conveniente dover tirare su un server per ospitare un db, creare un form per salvare i dati sul db, creare tutte le query per lavorare con i dati e pensare alla sicurezza del tutto, troppa roba, lo so che lato dev fa più figo e che sono due righe di codice (che poi non è mai vero) ma in questo modo si complica la UX di Giorgio, il problema qui non è reperire le info ma avere una UI gestibile, vedi l'esempio che ha postato Giorgio, è un file "excel", e se riusciamo a dargli quello abbiamo vinto tutti, "excel" poi ha già integrati tutti gli strumenti per filtrare i dati e per aggiungere filtri personalizzati.

    Tutto il sistema si gestisce con simil-javascript così possiamo tirare fuori il dev che è in noi 🙂

    L'unica pecca dei form di google è che puoi fare il check sui campi al submit e non prima, però penso si possa risolvere in qualche modo.


    mirkomassarutto 1 Risposta
  • User Attivo

    @overclokk per me potete fare come volete...
    Non ho capito bene come intendi estrarrei dati da youtube attraverso google form... io per fare questo sto utilizzando direttamente le api

    il sistema io lo ho già mostrato a suo tempo.. ed è fatto con 341 righe di codice https://yt.massarutto.it/tools/ (qui estraggo in questo momento i dati di @giorgiotave e i dati degli ultimi video.

    Ribadisco che non voglio fare tutta l'interfaccia, semplicemente il sistema di presa che genera il CSV che poi @giorgiotave di importa in excel e gestisce come preferisce


    overclokk 1 Risposta
  • Moderatore

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

    Non ho capito bene come intendi estrarrei dati da youtube attraverso google form... io per fare questo sto utilizzando direttamente le api

    Google form serve solo per l'iscrizione, il foglio di calcolo prende i dati tramite le API aggiungendo delle "macro" in javascript (google script).

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

    Ribadisco che non voglio fare tutta l'interfaccia, semplicemente il sistema di presa che genera il CSV che poi @giorgiotave di importa in excel e gestisce come preferisce

    È un lavoro doppio che va fatto manualmente ogni volta che si devono importare i dati, averli già in un foglio di calcolo che si popola da solo senza dover caricare nulla semplifica il processo, alla fine sempre nel foglio di calcolo vanno messi ma se si riesce a farlo con meno passaggi è meglio (DRY), e mancherebbe il sistema di iscrizione degli utenti.

    Lo scopo finale è aprire il foglio di calcolo una volta sola e avere già tutto pronto.


    giorgiotave 1 Risposta