Git Product home page Git Product logo

arduino-youtube-api's People

Contributors

dmadison avatar joeybab3 avatar phirephly avatar witnessmenow avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

arduino-youtube-api's Issues

Error when compiling (warning: deprecated conversion & redeclaration)

hi I'm still new in this Arduino world, I used to work with this project, and works fine. no problem at all.

It's been quite a long time I don't get this project again until today I got this project and I tried to compile it and comes up with this error. I haven't change the code and it works fine before .. just replace the wifi id * pass and channel id.

below is the error message from the Arduino console:

In file included from F:\ESP32\Project\YT_IG_Counter_Fix\YT_IG_Counter_WIFI\YT_IG_Counter_WIFI.ino:19:0:
C:\Users\r4ph\Documents\Arduino\libraries\YoutubeApi-2.0.0\src/YoutubeApi.h:54:23: error: redeclaration of 'channelStatistics YoutubeApi::channelStats'
channelStatistics channelStats;
^
C:\Users\r4ph\Documents\Arduino\libraries\YoutubeApi-2.0.0\src/YoutubeApi.h:50:23: note: previous declaration 'channelStatistics YoutubeApi::channelStats'
channelStatistics channelStats;
^
F:\ESP32\Project\YT_IG_Counter_Fix\YT_IG_Counter_WIFI\YT_IG_Counter_WIFI.ino:50:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
YoutubeApi api(API_KEY, client);
^
F:\ESP32\Project\YT_IG_Counter_Fix\YT_IG_Counter_WIFI\YT_IG_Counter_WIFI.ino: In function 'void loop()':
F:\ESP32\Project\YT_IG_Counter_Fix\YT_IG_Counter_WIFI\YT_IG_Counter_WIFI.ino:109:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
if (api.getChannelStatistics(CHANNEL_ID))
^
exit status 1
Error compiling for board LOLIN(WEMOS) D1 R2 & mini.

================================

I hope some can help me how to resolve this error.

Thanks in Advance

Rafael

I'm using :
Wemos D1 mini
Arduino 1.8.13
YoutubeAPI : V2
ArduinoJson : 6.18.0

Does not connect to wifi

Little change was necessary in the example file:

WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {

Suddently returning HTTP 0

Hello,
I am using the Arduino Youtube API for about 3 weeks. It worked flawlessly.

However, this morning, the response for the HTTP request is HTTP 0.

I have verified and the ESP8266 is connecting to the local network (it has an IP).

I have verified and I can perform a HTTP request with the browser with my channel id and API key without a problem.

Is there something I can do?

Not working anymore?

Hi,
I'm trying with wemos d1 r1, I've api_key that works with link that written in ReadMe, also board connects wifi and able to ping google.
But nothing more, no return as json to the board.
Note: Already downgraded ArduinoJson to 5.x and also tried to downgrade esp8266 lib to 2.5.0 but with no result.
Note2: client.setInsecure(); line added to setup() place too and again with no result.

Limited Space Availible For JSON

I don't quite know why but for some reason although I have allocated more than enough space for the
Youtube API request i cannot seem to parse the JSON as the String just ends towards the end most likely
due to insufficent space I cannot seem to allocate more memory.

I'm using the snippet data from a channel. Is anyone else having this problem?

example code leads to an HTTP status 0

I wanted to try the code example to make sure everything worked, but it returns and HTTP status 0, so I added the ESP32Ping library to ping googleapis.com to see if at least it could be reached, and it apparently does, that's the only modification made to the example code (aside from the necessary ones)

Here's the serial monitor readings:
youtube issue

I also tried with your channel ID (as provided on the readme file), the issue stays here.

for more details:

  • YoutubeApi version: 2.0.0
  • ArduinoJson version: 6.18.5
  • card used

pm open,type:2 0 | Error

Hello, first of all, my English is very bad, I apologize for this from the beginning.

I've been experimenting for 2-3 days, but I couldn't find a way, I'm new in this business.

all versions are in the same version.

What exactly do I need to change?

I'm not good at coding, I would appreciate it if you could help.

hata1

`// YouTube Channel Subscriber Counter with 8 Digit 7-Segment Display
// Target Hardware: esp8266 WEMOS D1 Mini
//
// Uses the Youtube Data API to retrieve channel statistics
// and display the subscriber count on an 8 digit 7-segment display as well as serial monitor.
//
// Required libraries and board files:
// esp8266 install from boards manager
// YoutubeApi https://github.com/witnessmenow/arduino-youtube-api
// ArduinoJson https://github.com/bblanchon/ArduinoJson
// LedControl https://github.com/wayoda/LedControl
//
// LedControl usage: http://playground.arduino.cc/Main/LedControl
//
// Tested using:
// Arduino IDE v1.8.9
// esp8266 board file v2.4.2
// YoutubeAPI v1.1.0
// ArduinoJson v5.13.4
// LedControl v1.0.6
//
// Gadget Reboot

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <YoutubeApi.h> // Youtube Data API to retrieve public channel stats
#include <ArduinoJson.h> // required by Youtube API
#include <LedControl.h> // MAX7219 7-segment display controller

// MAX7219 control pins and number of chips
#define dinPin D8
#define clkPin D7
#define csPin D6
#define numDevices 1 // one MAX7219 controls 8 digits
#define dispAddr 0 // MAX7219 devices are numbered starting from 0

// create LED display control interface
LedControl led_disp = LedControl(dinPin, clkPin, csPin, numDevices);

//------- Replace with your details! ------
char ssid[] = "Superbox_Wifi_7149"; // your network SSID (name)
char password[] = "pass"; // your network password
#define API_KEY "api" // your google apps API key for Youtube Data API access
#define CHANNEL_ID "channel" // your Youtube channel ID

unsigned long subCount; // stores the subscriber count from the API
byte digits[] = {0, 0, 0, 0, 0, 0, 0, 0}; // an array of led digit data to be written to the display

// Instantiate the WiFiClientSecure object for use with Youtube API
WiFiClientSecure client;
YoutubeApi api(API_KEY, client);

unsigned long api_mtbs = 180000; // time between api requests, in mS. 60,000 mS = 1 minute intervals
unsigned long api_lasttime = 0; // last time api request occurred

void setup() {
Serial.begin(9600);

// set WiFi to station mode and disconnect from an AP if previously connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(200);

// initialize the MAX7219 device
led_disp.shutdown(dispAddr, false); // wake up the MAX7219 from power-saving mode
led_disp.setIntensity(dispAddr, 8); // set brightness level (0 - 15)
led_disp.clearDisplay(dispAddr); // clear display register

// Attempt to connect to WiFi network
Serial.print("Connecting Wifi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);

// scan dot right to left
for (int i = 0; i < 7; i++) {
  led_disp.setChar(dispAddr, i, ' ', true);  // blank digit, dp on
  delay(75);
  led_disp.setChar(dispAddr, i, ' ', false); // blank digit, dp off
}

Serial.print(".");

// scan dot left to right
for (int i = 7; i > 0; i--) {
  led_disp.setChar(dispAddr, i, ' ', true);  // blank digit, dp on
  delay(75);
  led_disp.setChar(dispAddr, i, ' ', false); // blank digit, dp off
}

} // end while

// show WiFi status in serial monitor
Serial.println("");
Serial.println("WiFi connected.");
Serial.print("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);
Serial.printf("Connection status: %d\n", WiFi.status());

// get channel info from Youtube API for initial display
subCount = 0; // initial sub count to be updated from api
pollYoutubeAPI(); // get sub count immediately so we don't wait for poll timer to expire for initial reading
displayDigits(); // show sub count on 7-segment display

} // end setup()

void loop() {

// if it is time to poll the Youtube API, try to retrieve channel data and update display
if (millis() > api_lasttime + api_mtbs) {
pollYoutubeAPI();
displayDigits();
}

// testDisplay(); // uncomment to test the 7-segment digits without api data access
}

/*

  • Other Functions
    */

// show the number on the 7-segment display by separating out the
// individual digits and sending them to the proper LED segment
void displayDigits() {

// mod math separates digits out of the number
digits[0] = (subCount % 10);
digits[1] = (subCount / 10) % 10;
digits[2] = (subCount / 100) % 10;
digits[3] = (subCount / 1000) % 10;
digits[4] = (subCount / 10000) % 10;
digits[5] = (subCount / 100000) % 10;
digits[6] = (subCount / 1000000) % 10;
digits[7] = (subCount / 10000000) % 10;

// track which digit position in the number contains the left-most (non-zero) digit
// eg: number = 474, digits[7..0] = 00000474 left digit non-zero position = digit[2]
// if there is only one digit in the number, digit position 0 is the left-most automatically
byte leftDigit = 0;

if (digits[7] > 0)
leftDigit = 7;
else if (digits[6] > 0)
leftDigit = 6;
else if (digits[5] > 0)
leftDigit = 5;
else if (digits[4] > 0)
leftDigit = 4;
else if (digits[3] > 0)
leftDigit = 3;
else if (digits[2] > 0)
leftDigit = 2;
else if (digits[1] > 0)
leftDigit = 1;

// if there are digits to blank out (to the left of the left-most digit in the number)
// set them as a "space"
if (leftDigit < 7) {
for (int i = (leftDigit + 1); i <= 7; i++) {
digits[i] = ' '; // blank space character
}
}

// write all digits on 7-segment display
for (int i = 0; i <= 7; i++)
led_disp.setChar(dispAddr, i, digits[i], false);

} // end displayDigits()

void pollYoutubeAPI() {
if (api.getChannelStatistics(CHANNEL_ID)) {

Serial.println("---------Stats---------");
Serial.print("Subscriber Count: ");
Serial.println(api.channelStats.subscriberCount);
Serial.print("View Count: ");
Serial.println(api.channelStats.viewCount);
Serial.print("Comment Count: ");
Serial.println(api.channelStats.commentCount);
Serial.print("Video Count: ");
Serial.println(api.channelStats.videoCount);
// Probably not needed :)
//Serial.print("hiddenSubscriberCount: ");
//Serial.println(api.channelStats.hiddenSubscriberCount);
Serial.println("-----------------------");

subCount = api.channelStats.subscriberCount;

}

api_lasttime = millis(); // start a new delay for next API poll interval

} // end pollYoutubeAPI()

void testDisplay() {

// display "Arduino"
led_disp.clearDisplay(dispAddr);
led_disp.setChar(dispAddr, 7, 'a', false);
delay(300);
led_disp.setRow(dispAddr, 6, 0x05);
delay(300);
led_disp.setChar(dispAddr, 5, 'd', false);
delay(300);
led_disp.setRow(dispAddr, 4, 0x1c);
delay(300);
led_disp.setRow(dispAddr, 3, B00010000);
delay(300);
led_disp.setRow(dispAddr, 2, 0x15);
delay(300);
led_disp.setRow(dispAddr, 1, 0x1D);
delay(300);
led_disp.clearDisplay(dispAddr);
delay(300);

// test leading zero suppression
subCount = 1;
displayDigits(); //Show the data
delay(300);

subCount = 22;
displayDigits(); //Show the data
delay(300);

subCount = 333;
displayDigits(); //Show the data
delay(300);

subCount = 4444;
displayDigits(); //Show the data
delay(300);

subCount = 55555;
displayDigits(); //Show the data
delay(300);

subCount = 666666;
displayDigits(); //Show the data
delay(300);

subCount = 7777777;
displayDigits(); //Show the data
delay(300);

subCount = 88888888;
displayDigits(); //Show the data
delay(300);
} // end testDisplay()`

Channel Stats not printing on Serial Monitor

I'm not sure if I am the only one having this.

I'm using the ESP8266 -> ChannelStatistics code example. Followed all the instructions.

Connecting Wifi:
15:49:46.362 -> ..........
15:49:52.115 -> WiFi connected
15:49:52.115 -> IP address:
15:49:52.115 ->

Shows up fine, but my channel's stats does not show up, no matter how long I wait.

Connection Failed

Hi all,

I have an issue with my Data Youtube API.

When I use the Channel Statistics with my personal information, I got en HTML code status 403 and when I try it on my web browser it shows that I have reach my maximum quota, but I did not. I've made 1506 requests and my max by day is 10 000.
Does someone knows what is happening please ?

Thanks in advance

my program :
/*******************************************************************
Read YouTube Channel statistics from the YouTube API on
an ESP8266 and print them to the serial monitor

Parts:
D1 Mini ESP8266 (or any ESP8266) * - http://s.click.aliexpress.com/e/uzFUnIe
* = Affilate

If you find what I do useful and would like to support me,
please consider becoming a sponsor on Github
https://github.com/sponsors/witnessmenow/

Written by Brian Lough
YouTube: https://www.youtube.com/brianlough
Tindie: https://www.tindie.com/stores/brianlough/
Twitter: https://twitter.com/witnessmenow

*******************************************************************/

// ----------------------------
// Standard Libraries
// ----------------------------

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>

// ----------------------------
// Additional Libraries - each one of these will need to be installed.
// ----------------------------

#include <YoutubeApi.h>
// Library for connecting to the Youtube API

// Search for "youtube" in the Arduino Library Manager
// https://github.com/witnessmenow/arduino-youtube-api

#include <ArduinoJson.h>
// Library used for parsing Json from the API responses

// Search for "Arduino Json" in the Arduino Library manager
// https://github.com/bblanchon/ArduinoJson

//------- REMPLACER
char ssid[] = "Evolukid"; // NOM DU RESEAU WIFI
char password[] = "/Wifi password/"; // MOT DE PASSE
#define API_KEY "/My valid API Key/" // CLE API GOOGLE
#define CHANNEL_ID "UC-52Xp-LLQjBwL-3jINyb-Q" // makes up the url of channel
//------- ---------------------- ------

WiFiClientSecure client;
YoutubeApi api(API_KEY, client);

unsigned long timeBetweenRequests = 3000;
unsigned long nextRunTime;

long subs = 0;

void setup() {

Serial.begin(115200);

// Set WiFi to station mode and disconnect from an AP if it was Previously
// connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);

// Attempt to connect to Wifi network:
Serial.print("Connecting Wifi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);

// Required if you are using ESP8266 V2.5 or above
client.setInsecure();

// If you want to enable some extra debugging
api._debug = true;
}

void loop() {

if (millis() > nextRunTime) {
if(api.getChannelStatistics(CHANNEL_ID))
{
Serial.println("---------Stats---------");
Serial.print("Subscriber Count: ");
Serial.println(api.channelStats.subscriberCount);
Serial.print("View Count: ");
Serial.println(api.channelStats.viewCount);
Serial.print("Comment Count: ");
Serial.println(api.channelStats.commentCount);
Serial.print("Video Count: ");
Serial.println(api.channelStats.videoCount);
// Probably not needed :)
//Serial.print("hiddenSubscriberCount: ");
//Serial.println(api.channelStats.hiddenSubscriberCount);
Serial.println("------------------------");

}
nextRunTime = millis() + timeBetweenRequests;

}
}

Update examples for handling ESP32 HTTPS verification

Latest ESP32 requires some form of verification of the server you are connecting to, or a client.setInsecure(). There is probably no reason to not use the cert for the ESP32 though.

Examples probably need to be updated to reflect this..

Connection failed Unexpected HTTP Status Code: 0

Hi there,

Either I'm having problems with the wrapper or im dumber than a box of rocks, I'll try to cut to the chase as quickly as possible.

I built a subscriber counter using https://www.instructables.com/id/YouTube-Subscriber-Counter-With-ESP8266-V2/ about a year and half ago and its been working fine until this week.

After seeing everything going on and with other peoples stopped working, saw the wrapper had been updated and updated the wrapper and json to 6.15.2 and now i just get

Connection failed
Unexpected HTTP Status Code: 0

In the serial monitor and I've tested with the example code too with the same result.

Any help here would be appreciated

NOT Changing Subscriber Count: 1000

Hi,
After 1000 subscriber it has stopped to count. other things are working. please find the serial port screen output
---------Stats---------
Subscriber Count: 1000 - till 1000 it worked
View Count: 213410 - this is correct and live

Youtube API not working

Hey,
I know its been a long time since the last post, but i have a problem.
So i have this code (see attachment) and i noticed problems when using static ip adresses (in the code config and on the router side.
Help is much appreciated.
i get no error messages but "api.getChannelStatistics(CHANNEL_ID)" returns always false.

API token and url works fine
ex.zip

(Sorry for my bad english)

Connection failed

My counter (Nodemcu esp8266) was working for years. Suddenly it stopped working.
I saw the closed issues about this.

I updated to your newest version and also ArduinoJson. I use ESP 8266 version 2.4.2.

But now I get:
/youtube/v3/channels?part=statistics&id= removed
Connection failed
Unexpected HTTP Status Code: 0
/youtube/v3/channels?part=statistics&id= removed
Tossing an unexpected character: 1
Tossing an unexpected character: d
Tossing an unexpected character: 1
Tossing an unexpected character:

Tossing an unexpected character:

Unexpected HTTP Status Code: 403
Closing client
/youtube/v3/channels?part=statistics&id= removed
Tossing an unexpected character: 1
Tossing an unexpected character: d
Tossing an unexpected character: 1
Tossing an unexpected character:

and so on.
I also get this with the example included.

What can be the problem?

Channel stats not showing up in serial monitor

Hi
I have a project using the Wemos R1 chip.
In serial monitor I only get the response that the chip is connected. Wifi connected and an local ip address (like 192.34........)

And no matter how long I wait, the youtube channel stats does not show up.
The API key is correct (checked and working ok on googleapi link)
The router i'm connecting thru is connected to the internet.
Have you heard about this problem and do you have a fix for me?

Thanks

Library unable to connect to YouTube APIs

I am also trying to implement a YouTube subscriber counter. As basis, I used an existing project (not mine) which seemed to work just fine. But my subscriber numbers just always kept being 0. I debugged as far as possible and it seems, that the connection to www.googleapis.com:443 are just not working. If I open the same URL as generated in this library for example in my browser, I get the numbers as expected.
The only thing I am seeing is:

Connecting to: 172.217.168.74 - 443      << my debug output
pm open,type:2 0

Since it never reaches .... connected to server, the problem has to be with the line:
if (client->connect(YTAPI_HOST, YTAPI_SSL_PORT)) {
I have no idea how to debug this further. Is it possible that google changed something (SSL Cert or such) ?
Any other pointers or ideas?

The other project basically uses the example code from this library here. Since the NTP time-fetch works, the Network connectivity of the Weemos D1 Mini is not the problem. Also replacing the URL with the IP has the same result.

Error compiling, tells me to upgrade to version 6

error: DynamicJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6

DynamicJsonBuffer jsonBuffer;

       ^

In member function 'bool YoutubeApi::getChannelStatistics(String)':

error: 'jsonBuffer' was not declared in this scope

DynamicJsonBuffer jsonBuffer;

                ^

error: 'ArduinoJson::JsonObject' has no member named 'success'

if(root.success()) {

      ^

Compiling errors

Hi I am having compiling errors trying to test out the latest example sketch:

ChannelStatisticsWithWifiManagerAndDoubleReset

I am very sorry in advance if I have done something stupid.

Kind Regards

J

C:\Users\James\AppData\Local\Temp\Rar$DIa0.661\ChannelStatisticsWithWifiManagerAndDoubleReset\ChannelStatisticsWithWifiManagerAndDoubleReset.ino: In function 'bool loadConfig()':

ChannelStatisticsWithWifiManagerAndDoubleReset:153: error: 'StaticJsonBuffer' was not declared in this scope

StaticJsonBuffer<200> jsonBuffer;

^

ChannelStatisticsWithWifiManagerAndDoubleReset:153: error: 'jsonBuffer' was not declared in this scope

StaticJsonBuffer<200> jsonBuffer;

                     ^

ChannelStatisticsWithWifiManagerAndDoubleReset:156: error: 'class ArduinoJson::JsonObject' has no member named 'success'

if (!json.success()) {

         ^

C:\Users\James\AppData\Local\Temp\Rar$DIa0.661\ChannelStatisticsWithWifiManagerAndDoubleReset\ChannelStatisticsWithWifiManagerAndDoubleReset.ino: In function 'bool saveConfig()':

ChannelStatisticsWithWifiManagerAndDoubleReset:167: error: 'StaticJsonBuffer' was not declared in this scope

StaticJsonBuffer<200> jsonBuffer;

^

ChannelStatisticsWithWifiManagerAndDoubleReset:167: error: 'jsonBuffer' was not declared in this scope

StaticJsonBuffer<200> jsonBuffer;

                     ^

ChannelStatisticsWithWifiManagerAndDoubleReset:178: error: 'class ArduinoJson::JsonObject' has no member named 'printTo'

json.printTo(configFile);

    ^

Using library arduino-youtube-api-master at version 1.1.0 in folder: C:\Users\James\Documents\Arduino\libraries\arduino-youtube-api-master
Using library ArduinoJson at version 6.4.0-beta in folder: C:\Users\James\Documents\Arduino\libraries\ArduinoJson
Using library ESP8266WiFi at version 1.0 in folder: C:\Users\James\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266WiFi
Using library DoubleResetDetector at version 1.0.2 in folder: C:\Users\James\Documents\Arduino\libraries\DoubleResetDetector
Using library WiFiManager at version 0.14 in folder: C:\Users\James\Documents\Arduino\libraries\WiFiManager
Using library ESP8266WebServer at version 1.0 in folder: C:\Users\James\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266WebServer
Using library DNSServer at version 1.1.0 in folder: C:\Users\James\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\DNSServer
exit status 1
'StaticJsonBuffer' was not declared in this scope

License Change

Hi Brian, would you consider changing the license for this library? At the moment it's licensed under GPL v2.0, which I believe means projects that use the library cannot be distributed unless they are open source and also licensed under GPL v2.0.

I would recommend switching to the much more permissive MIT license, or if you'd prefer to keep the copyleft provisions then I would recommend the Lesser General Public License (LGPL). There should be no issue changing the license to either of those two, as both are more permissive than the current license.

not able to parse correctly

Hi,
Not sure if this is just me seeing this but I could not get the getChannelStatistics to give back results and after digging ended finding out that for some reason the response string being return had some chars (1f3) right at the beginning and that seemed to mess with the parser.
doing this:
String response = sendGetToYoutube(command); //recieve reply from youtube
response.remove(0,3);

seemed to solve the issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.