Json file op een Social Counter

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • trainz2009
  • Registratie: September 2010
  • Laatst online: 11-09 14:51
Hi, mede-tweakers. Mijn oog is gevallen op een custom counter van Smiirl. Ik wil daar het aantal YouTube abonnees dat ik heb live op laten zien.

De counter kan alleen aangestuurd worden met een json webpagina. Hieronder een schematisch overzicht zoals bij hen op de website vermeld staat.

Afbeeldingslocatie: https://i.ibb.co/vPyzYtH/Knipsel.jpg

Nu heb ik de ballen verstand van programmeren, maar ben toch aan de slag gegaan. Ik heb ontdekt wat json is, en heb de programmeertaal python ontdekt. Helaas krijg ik het niet voor elkaar om het werkend te krijgen. De uitkomst moet schijnbaar een webpagina zijn met daarop het volgende: {"number":"12345"}

Het volgende heb ik tot nu toe:

import requests
from flask import Flask
app = Flask(_name_)

url = "https://www.googleapis.com/youtube/v3/channels?part=statistics&id=UCdw1d_mdYsKEDXxnirNuvXw&fields=items/statistics/subscriberCount&key=geheim"

@app.route("/")
def hello():
r = requests.get(url).json()
number = r["items"][0]["statistics"]["subscriberCount"]

return '{"number": ' + number + '}'

app.run()

Herkomst bovenstaande code: Github
Deze code heb ik geüpload naar mijn webpage, http://treinvideo.online/number.json, maar dit schijnt dus niet te werken volgens dat bedrijf.

Reactie van Smiirl op de vraag of de code werkt; "I have had a look at it, and you're halfway there: your Python script is not executed yet, so the Counter won't be able to display a number." But I should get only: {"number":"12345"}

Webpagina's met info:
Json in combinatie met excel; https://medium.com/@m_neb...pany-counter-22f5d4bc7dd4
Smiirl: http://get.smiirl.com/en/custom-counter

Ik hoop dat iemand mij verder wilt en kan helpen! _/-\o_

[ Voor 3% gewijzigd door trainz2009 op 16-05-2019 16:28 ]

Beste antwoord (via trainz2009 op 16-05-2019 17:36)


  • Matszs
  • Registratie: Juli 2010
  • Laatst online: 09-09 19:47

Matszs

><>

Hier heb je een PHP variant, ik gok dat je server dat wel kan handelen:
code:
1
2
3
4
5
6
7
<?php

$key = 'XXX'; // Zet nooit API keys publiekelijk op internet!
$url = 'https://www.googleapis.com/youtube/v3/channels?part=statistics&id=UCdw1d_mdYsKEDXxnirNuvXw&fields=items/statistics/subscriberCount&key=' . $key;
$content = json_decode(file_get_contents($url), true);

echo json_encode(['number' => (int)$content['items'][0]['statistics']['subscriberCount']]);

Alle reacties


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Wat gebeurd er als je zelf naar die pagina toe gaat? (Ik heb het nog niet gedaan want er bestaat altijd de kans dat het een virus-scam is)

Acties:
  • 0 Henk 'm!

  • trainz2009
  • Registratie: September 2010
  • Laatst online: 11-09 14:51
Stoelpoot schreef op donderdag 16 mei 2019 @ 16:03:
Wat gebeurd er als je zelf naar die pagina toe gaat? (Ik heb het nog niet gedaan want er bestaat altijd de kans dat het een virus-scam is)
Dan opent de code die in de post staat

Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Oh, ha. Dan wordt je code dus niet uitgevoerd, en wordt gewoon het bestand opgestuurd. Dat betekend dus twee dingen:

1. Je webserver kan geen Python scripts runnen, of hij kan dit wel maar omdat je bestand een .json extensie heeft en geen .py extensie wordt het niet uitgevoerd. De tweede optie kan je zelf testen, de eerste zal je aan je webhoster moeten voorleggen
2. In die code staat je API key van YouTube (die trouwens ook in de post staat bedenk ik me nu) waardoor mensen met die key dus ook calls in jouw naam kunnen uitvoeren die potentieel accountgegevens van jou kunnen wijzigen.

Acties:
  • 0 Henk 'm!

  • .Maarten
  • Registratie: Januari 2011
  • Nu online
Je server voert de python code niet uit. Zet er maar een json file op met alleen de json code erin. Dan moet je dat terug krijgen.

Zoiets:
code:
1
2
3
 {
"number":"12345"
}

Acties:
  • 0 Henk 'm!

  • Wintervacht
  • Registratie: December 2016
  • Laatst online: 07-08 10:04

Wintervacht

☉ ‿ ⚆

Waaom Python?
Probeer het anders eerst eens met html/css en javascript op beeld te krijgen :)

Weet een beetje van veel dingen en veel van een paar dingen.


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Wintervacht schreef op donderdag 16 mei 2019 @ 16:10:
Waaom Python?
Probeer het anders eerst eens met html/css en javascript op beeld te krijgen :)
Omdat er een API key wordt gebruikt die dus niet naar Clients kan worden verzonden.

Acties:
  • +1 Henk 'm!

  • Ryan_
  • Registratie: Februari 2009
  • Laatst online: 19:02
Stoelpoot schreef op donderdag 16 mei 2019 @ 16:17:
[...]


Omdat er een API key wordt gebruikt die dus niet naar Clients kan worden verzonden.
Je kan de JSON data toch gewoon ophalen via de URL?

https://www.googleapis.co...tics/subscriberCount&key= <API key>

Acties:
  • 0 Henk 'm!

  • trainz2009
  • Registratie: September 2010
  • Laatst online: 11-09 14:51
Stoelpoot schreef op donderdag 16 mei 2019 @ 16:08:
Oh, ha. Dan wordt je code dus niet uitgevoerd, en wordt gewoon het bestand opgestuurd. Dat betekend dus twee dingen:

1. Je webserver kan geen Python scripts runnen, of hij kan dit wel maar omdat je bestand een .json extensie heeft en geen .py extensie wordt het niet uitgevoerd. De tweede optie kan je zelf testen, de eerste zal je aan je webhoster moeten voorleggen
2. In die code staat je API key van YouTube (die trouwens ook in de post staat bedenk ik me nu) waardoor mensen met die key dus ook calls in jouw naam kunnen uitvoeren die potentieel accountgegevens van jou kunnen wijzigen.
1. Online wilt het script ook als .py niet lopen, echter gebeurt er ook niets als ik hem lokaal in de Phyton demo probeer. Dus mogelijk is het script niet goed?
2. API key heb ik van een YouTube video, heb wel mijn eigen Key, die zal ik later wel gebruiken als het werkt :9

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Matszs
  • Registratie: Juli 2010
  • Laatst online: 09-09 19:47

Matszs

><>

Hier heb je een PHP variant, ik gok dat je server dat wel kan handelen:
code:
1
2
3
4
5
6
7
<?php

$key = 'XXX'; // Zet nooit API keys publiekelijk op internet!
$url = 'https://www.googleapis.com/youtube/v3/channels?part=statistics&id=UCdw1d_mdYsKEDXxnirNuvXw&fields=items/statistics/subscriberCount&key=' . $key;
$content = json_decode(file_get_contents($url), true);

echo json_encode(['number' => (int)$content['items'][0]['statistics']['subscriberCount']]);

Acties:
  • 0 Henk 'm!

  • Wintervacht
  • Registratie: December 2016
  • Laatst online: 07-08 10:04

Wintervacht

☉ ‿ ⚆

Ryan_ schreef op donderdag 16 mei 2019 @ 16:20:
[...]


Je kan de JSON data toch gewoon ophalen via de URL?

https://www.googleapis.co...tics/subscriberCount&key= <API key>
Dat kan zeker :) Dan krijg je het resultaat:
code:
1
2
3
4
5
6
7
8
9
{
 "items": [
  {
   "statistics": {
    "subscriberCount": "76590"
   }
  }
 ]
}

En dat kun je prima met een paar regels JS omzetten in een object in de vorm van
code:
1
2
3
{
"number": 76590
}


oh en @trainz2009 haal even je API key uit je TS, het is zo wel erg makkelijk om je Google diensten in te zien :P

Weet een beetje van veel dingen en veel van een paar dingen.


Acties:
  • +1 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
trainz2009 schreef op donderdag 16 mei 2019 @ 16:26:
[...]


1. Online wilt het script ook als .py niet lopen, echter gebeurt er ook niets als ik hem lokaal in de Phyton demo probeer. Dus mogelijk is het script niet goed?
2. API key heb ik van een YouTube video, heb wel mijn eigen Key, die zal ik later wel gebruiken als het werkt :9
2. Wees dan niet zo'n rotzak om de key van iemand anders te herpubliceren ;) Ook zo vervelend voor diegene. Heb je ondertussen ook gedaan zie ik.

1. Dat kan. Wat zie je als je het script debugged?

[ Voor 8% gewijzigd door Stoelpoot op 16-05-2019 16:35 ]


Acties:
  • 0 Henk 'm!

  • trainz2009
  • Registratie: September 2010
  • Laatst online: 11-09 14:51
Matszs schreef op donderdag 16 mei 2019 @ 16:26:
Hier heb je een PHP variant, ik gok dat je server dat wel kan handelen:
code:
1
2
3
4
5
6
7
<?php

$key = 'XXX'; // Zet nooit API keys publiekelijk op internet!
$url = 'https://www.googleapis.com/youtube/v3/channels?part=statistics&id=UCdw1d_mdYsKEDXxnirNuvXw&fields=items/statistics/subscriberCount&key=' . $key;
$content = json_decode(file_get_contents($url), true);

echo json_encode(['number' => (int)$content['items'][0]['statistics']['subscriberCount']]);
Op mijn eigen server komt hij eruit als; (int)$content['items'][0]['statistics']['subscriberCount']]);, op een online php tester als, WARNING file_get_contents() has been disabled for security reasons on line number 5
{"number":0}

Acties:
  • 0 Henk 'm!

  • Ryan_
  • Registratie: Februari 2009
  • Laatst online: 19:02
trainz2009 schreef op donderdag 16 mei 2019 @ 16:43:
[...]


Op mijn eigen server komt hij eruit als; (int)$content['items'][0]['statistics']['subscriberCount']]);, op een online php tester als, WARNING file_get_contents() has been disabled for security reasons on line number 5
{"number":0}
Dan gebruik je geen goede phptester. Probeer eens op: http://phpfiddle.org/

Afbeeldingslocatie: https://tweakers.net/ext/f/udX4y4JneRPvs7UBLeiaVvD0/full.png

Daarbij denk ik niet dat je PHP hebt draaien op je eigen server op dit moment?

[ Voor 15% gewijzigd door Ryan_ op 16-05-2019 16:49 ]


Acties:
  • 0 Henk 'm!

  • Matszs
  • Registratie: Juli 2010
  • Laatst online: 09-09 19:47

Matszs

><>

@trainz2009 Heb je het wel opgeslagen als een .php bestand? Daarnaast kan je deze inderdaad vrijwel bij geen 'online tester' draaien omdat file_get_contents een risico kan zijn voor die diensten.

Acties:
  • 0 Henk 'm!

  • trainz2009
  • Registratie: September 2010
  • Laatst online: 11-09 14:51
Matszs schreef op donderdag 16 mei 2019 @ 16:48:
@trainz2009 Heb je het wel opgeslagen als een .php bestand? Daarnaast kan je deze inderdaad vrijwel bij geen 'online tester' draaien omdat file_get_contents een risico kan zijn voor die diensten.
Als het goed is wel, ik denk dat op mijn eigen server @ Versio via DirectAdmin nog iets niet helemaal goed staat.

Acties:
  • 0 Henk 'm!

  • trainz2009
  • Registratie: September 2010
  • Laatst online: 11-09 14:51
Ryan_ schreef op donderdag 16 mei 2019 @ 16:47:
[...]


Dan gebruik je geen goede phptester. Probeer eens op: http://phpfiddle.org/

[Afbeelding]

Daarbij denk ik niet dat je PHP hebt draaien op je eigen server op dit moment?
Dat ziet er hoopvol uit :o

Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Vergeleken met jouw originele post missen daar de quotes om het nummer, trouwens :)

Acties:
  • 0 Henk 'm!

  • Matszs
  • Registratie: Juli 2010
  • Laatst online: 09-09 19:47

Matszs

><>

Stoelpoot schreef op donderdag 16 mei 2019 @ 16:58:
[...]


Vergeleken met jouw originele post missen daar de quotes om het nummer, trouwens :)
Is geen probleem volgens het voorbeeld van Smiirl, anders zou je de (int) weg kunnen halen.
trainz2009 schreef op donderdag 16 mei 2019 @ 16:54:
[...]


Als het goed is wel, ik denk dat op mijn eigen server @ Versio via DirectAdmin nog iets niet helemaal goed staat.
Je bestand download van je server (jouw site/number.php) en biedt het niet aan als webpagina, lijkt dus alsof php niet ingeschakeld is? (Wat bij Versio normaal wel aanstaat volgens mij?) Heb je een eigen VPS of webhosting?

Acties:
  • 0 Henk 'm!

  • trainz2009
  • Registratie: September 2010
  • Laatst online: 11-09 14:51
Stoelpoot schreef op donderdag 16 mei 2019 @ 16:58:
[...]


Vergeleken met jouw originele post missen daar de quotes om het nummer, trouwens :)
Het lukt mij niet om die cijfers als output te krijgen. Wat doe ik fout? De key in de url had ik ook al geprobeerd
Afbeeldingslocatie: https://i.ibb.co/DWpWqkK/ikv.jpg

Acties:
  • 0 Henk 'm!

  • trainz2009
  • Registratie: September 2010
  • Laatst online: 11-09 14:51
Jongens, het is gelukt hoor! Hartelijk dank voor het meedenken! Ik moet alleen nog even kijken of het apparaat de cijfers goed accepteert, daar ga ik nog even navraag naar doen. Zodra ik het apparaat binnen heb zal ik even een foto maken ;-)

Acties:
  • +1 Henk 'm!

  • p2kNLsander
  • Registratie: Juni 2009
  • Laatst online: 06-09 19:43
Geen dank :)
Pagina: 1