YouTube abonnee en viewer teller

In deze tutorial leg ik uit hoe je een YouTube abonnee teller bouwt. Ik gebruik hiervoor het 16x2 en het 20x4 display. De LCD display module is gekoppeld via I2C met de Raspberry Pi en een eenvoudig script. Het 8-regel script haalt het aantal Youtube abonnees en viewers op. Hiervoor heb je slechts een Google API-key en je Youtube channel-ID nodig. 

Update de Raspberry Pi
Allereerst updaten we de Raspberry Pi met de volgende gecombineerde commando’s:

sudo apt-get update && sudo apt-get upgrade

Instellen SPI-interface
Om het display aan te kunnen sturen maken we gebruik van de SPI-interface. Ga in de desktop naar START (Raspberry Pi pictogram) – Voorkeuren – Raspberry Pi Configuratie programma en selecteer het tabblad Interfaces. Zet hier de SPI- en I2C-interfaces aan.
Klik vervolgens op [OK] en herstart de Raspberry Pi.

I2C tools installeren
Met de I2C tools kun je commando’s gebruiken als: i2cdetect, i2cdump, i2cget, i2cset, i2ctransfer. Geef het volgende commando om de I2C-tools te installeren.

sudo apt-get install i2c-tools

System Management Bus installeren
De System Management Bus is een eenvoudige tweedraadsbus met één uiteinde voor lichtgewicht communicatie. Installeer de SMbus met het volgende commando:

sudo apt-get install python-smbus

16×2 LCD display aansluiten

Allereerst beschrijf ik hoe je het 16×2 LCD display aansluit.

De achterkant van het 16×2 LCD display met de I2C interface

De I2C interface van het display heeft 4 aansluitingen, deze worden met de Raspberry Pi verbonden zoals in de tabel hieronder aangegeven is.

Aansluittabel

Eenmaal aangesloten controleren we met de I2C-tool of de I2C-interface op het display door de Raspberry Pi gezien wordt.

sudo i2cdetect -y 1

Heb je een oude Raspberry Pi dan is het commando:

sudo i2cdetect -y 0

Na het ingeven van het commando volgt er een overzicht en (hopelijk) de hexadecimale waarde van het adres waarop het display gevonden is. In dit geval 27. Onthoud deze waarde.

De I2C-waarde is 0x27

Projectfolder
Maak een folder aan voor het project:

sudo mkdir /home/pi/subcounter

Bibliotheek laden
Vervolgens hebben we een bibliotheek (RPi_I2C_driver.py) nodig om naar het display te kunnen schrijven. Open op de Raspberry Pi de internet browser en ga naar de volgende link:

https://gist.github.com/DenisFromHR/cc863375a6e19dce359d

Download het .zip-bestand.

Is het bestand gedownload? Pak het uit in de map /home/pi/subcounter die eerder aangemaakt is.


Note: Mocht je vanwege rechten problemen hebben om de bestanden in de directorie te zetten. Pas de permissies van de directorie aan met:

sudo chmod 777 subcounter

Ik heb het bestand op mijn pc gedownload en Filezilla gebruikt om de bestanden naar de map /home/pi/subcounter te zetten. Mijns inziens komt dit doordat alle opdrachten met sudo gedaan zijn, de super-user. Ik denk dat dit niet nodig is. Dit wordt nog onderzocht.


Ga naar de directorie subcounter met:
cd /home/pi/subcounter

Open het driverbestand met:
sudo nano RPi_I2C_driver.py

Controleer in het bestand of het LCD address 27 (0x27) is. Zo niet pas de waarde aan met wat jij met i2cdetect aangetroffen hebt en sla het bestand op met Ctrl-o en Ctrl-x.

Wat is het adres?

Hoofdscript
Vervolgens maken we het hoofdscript met het volgende commando:
sudo nano subcounter.py

Ga naar de link https://pastebin.com/06gKvJf4 of https://pastebin.com/raw/06gKvJf4
De content van het script wordt zichtbaar. Kopieer de content en plak deze in de terminal waar nano geopend is.

Om het script te laten werken hebben we twee dingen nodig:

1 – Een API van Google. Deze is eenvoudig van het Google dashboard te downloaden.

Ga hiervoor naar https://console.developers.google.com/

Klik in de blauwe balk op My Project 92XXX

Mocht je nog geen project hebben, maak er dan een aan door op CREATE te klikken. Geef het project een naam zoals ‘YTSubCount’. Eenmaal aangemaakt ga je naar + CREATE CREDENTIALS. Selecteer hier op API key. De API is nu beschikbaar. De key moet nog wel ge-enabled worden. Ga hiervoor naar het Dashboard en klik op + ENABLE APIS AND SERVICES. Zoek op ‘Youtube Data API v3’ en klik erop zodra deze verschijnt. Enable de API door op ENABLE te klikken. Klik links in de balk op Credentials en selecteer de net aangemaakte API-key. Aan het einde van de regel is een kopie-symbool. Klik hierop zodat de key gekopieerd is en in het clipboard staat.

Ga nu terug naar de terminal en kopieer de API-key in het script subcounter.py, ter hoogte van
key = “AIghdfiiYBkuiyhl;pOUMHU132hTyyDBLplyhKM<Y”

Note: De key hierboven is fictief. Je zult voor jouw Youtube kanaal je eigen API-key moeten gebruiken.

2 – Het Channel ID van het YouTube kanaal waarvan de abonnees getoond moet worden.
Ga hiervoor naar Youtube.com. Je ziet diverse willekeurige video’s op het scherm afgebeeld.
Rechts in de bovenhoek staat het pictogram dat met het kanaal verbonden is. Klik hier op.
Klik vervolgens op ‘Je kanaal

In de adresbalk van de browser staat het channel id achter youtube.com/channel/[channelid]

In de adresbalk staat bijvoorbeeld: https://www.youtube.com/channel/UC7HrrV98MMf32A. Hier is UC7HrrV98MMf32A het channel id. Kopieer jouw channel id en plaats deze in het script subcounter.py, ter hoogte van ‘channel id =’ en vul deze in. Laat de haakjes staan!

Note: Het channel-ID hierboven is fictief. Je zult voor jouw Youtube kanaal je eigen channel-ID moeten gebruiken.

Naam Youtube-kanaal
Tot slot wordt in het script de naam van het Youtube kanaal aangepast. Zet bij ‘name =’ de naam van het Youtube kanaal. In principe kan dit iedere naam zijn die je wilt, maar het is logisch als dit de naam van het Youtube kanaal is. De naam verschijnt in het display.

Sla het script subcounter.py op met Ctrl-o en Ctrl-x.

Opstart script
Het script kan handmatig opgestart worden met het commando:
sudo python3 /home/pi/subcounter.py

Als alles goed gegaan is zie je in het display de naam van het betreffende Youtube kanaal en het aantal abonnees dat het heeft.

Het aantal abonnees van mijn Youtubekanaal mag wel wat hoger

In de terminal verschijnt het aantal abonnees.


Geen display gewenst

Wil je dat de abonnees en viewers van het Youtube kanaal alleen in de terminal verschijnen? Download dan het script subcounter_noLCD.py. Er worden dan geen drivers voor het display geladen.


20×4 LCD display

20×4 display

Ik had bovenstaand project nog niet afgerond of ik vond een groter LCD display in mijn kast. Het is het LCD 20×4 display. Ook dit display is voorzien van een I2C-interface. Aangezien er met dit display vier regels te beschrijven zijn, wilde ik ook het aantal viewers van mijn Youtube kanaal hierop laten zien.

Installatie van het display
Gebruik de beschrijving hierboven om het 20×4 LCD display met de Raspberry Pi te verbinden.

Script
Ik heb het eerdere script aangepast, dat had te maken dat ik nu vier regels tekst op het display heb om automatisch uit te lijnen. Bovenstaande handelingen voor het downloaden van de LCD-driver en de handelingen voor het verkrijgen van de channel-ID en de API-key blijven hetzelfde.

Het enige dat je hoeft te doen is het script voor het 20×4 LCD display te downladen en in de map subcounter te zetten.

Channelnaam, channel-ID en API-key
Als de channelnaam, het channel-ID en de API-key in het script ingevuld zijn, kun je het script starten met:

python youtube4x20.py

Als het goed is heb je vergelijkbare informatie op het display zoals hierboven in de afbeelding. Het script subcounter.py dat voor het 16×2 LCD display gemaakt is werkt ook op het 20×4 LCD display.

In de terminal verschijnt eveneens het aantal abonnees en viewers van het Youtube kanaal.


Verversen van de informatie
Om de informatie op het display gepland te verversen maken we m.b.v. cron een schedule aan.
Open crontab met:
sudo crontab -e

Ga helemaal naar beneden in het bestand en maak hier een zgn. scheduleregel aan.

Wil je ieder uur het display verversen, dan wordt de scheduleregel:
0 * * * * /user/bin/python3 /home/pi/subcounter/[scriptnaam.py]

Of iedere 5 minuten:
*/5 * * * * /user/bin/python3 /home/pi/subcounter/[scriptnaam.py]

Sla het bestand op met Ctrl-o en Ctrl-x. Na een herstart zal de crontab schedule actief zijn.
sudo reboot

Meer weten over Cron
Wil je meer weten over Cron en z’n instellingen? Klik dan hier.

Have A Nice Day!