GithubHelp home page GithubHelp logo

caffco / get-video-duration Goto Github PK

View Code? Open in Web Editor NEW
138.0 4.0 17.0 953 KB

Get the duration of a video file

License: MIT License

TypeScript 96.17% JavaScript 3.83%
ffprobe video-duration video typescript

get-video-duration's Introduction

get-video-duration

NPM version Build Status Maintainability Test Coverage License NPM bundle size (minified) Downloads

Get the duration of video files/streams with ffprobe.

Supported platforms

Currently this package only supports Linux, Windows 7+, and MacOS 10.9+. This package does not work in the browser, iOS or Android.

Install

$ npm install --save get-video-duration

Usage

const { getVideoDurationInSeconds } = require('get-video-duration')

// From a local path...
getVideoDurationInSeconds('video.mov').then((duration) => {
  console.log(duration)
})

// From a URL...
getVideoDurationInSeconds(
  'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
).then((duration) => {
  console.log(duration)
})

// From a readable stream...

const fs = require('fs')
const stream = fs.createReadStream('video.mov')

getVideoDurationInSeconds(stream).then((duration) => {
  console.log(duration)
})

// If you need to customize the path to ffprobe...
getVideoDurationInSeconds('video.mov', '/path/to/ffprobe').then((duration) => {
  console.log(duration)
})

FAQ

I get a segmentation fault when trying to download a URL

This is a limitation of the underlying ffprobe binary, which has glibc statically linked and that prevents DNS resolution. Install nscd package through your package manager to solve this issue.

License

MIT. Based on get-video-dimensions.

get-video-duration's People

Contributors

beekiper avatar dependabot[bot] avatar seektheerror avatar sumolari 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

get-video-duration's Issues

getVideoDurationInMiliSecond

hello and thank you for this package
please make a function for get video length in milisecond its usable sometime
thanks

Not working on AWS EC2 (Linux) ?

I'm using your package to get video durationfrom a url that I am fetching from S3 Bucket. On my local computer, its working perfectly, but after releasing to my server on AWS Ec2, the whole app is crashing and I am getting the error below . Just cant understand what`s problem

Does the package not work on Linux?

Error: Command was killed with SIGSEGV (Segmentation fault): /home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject 0|zooto-backend | at makeError (/home/ubuntu/Zooto-Backend/node_modules/execa/lib/error.js:60:11) 0|zooto-backend | at handlePromise (/home/ubuntu/Zooto-Backend/node_modules/execa/index.js:118:26) 0|zooto-backend | at runMicrotasks (<anonymous>) 0|zooto-backend | at processTicksAndRejections (node:internal/process/task_queues:96:5) { 0|zooto-backend | shortMessage: 'Command was killed with SIGSEGV (Segmentation fault): /home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject', 0|zooto-backend | command: '/home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject', 0|zooto-backend | escapedCommand: '"/home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe" -v error -show_format -show_streams "https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject"', 0|zooto-backend | exitCode: undefined, 0|zooto-backend | signal: 'SIGSEGV', 0|zooto-backend | signalDescription: 'Segmentation fault', 0|zooto-backend | stdout: '', 0|zooto-backend | stderr: '', 0|zooto-backend | failed: true, 0|zooto-backend | timedOut: false, 0|zooto-backend | isCanceled: false, 0|zooto-backend | killed: false 0|zooto-backend | }

Can't get duration on Ubuntu Linux machines?

Hello!

When trying to run this piece of code, it works fine on my local machine.

const { getVideoDurationInSeconds } = require('get-video-duration')

getVideoDurationInSeconds('https://instagram.ffjr1-4.fna.fbcdn.net/v/t50.2886-16/131687230_388727058869326_3901901103341180755_n.mp4?_nc_ht=instagram.ffjr1-4.fna.fbcdn.net&_nc_cat=110&_nc_ohc=DO0V2EPdiqEAX-EbIwf&oe=5FE1FCD0&oh=8f8e0506f15cb4ac3766a0ec3606758e').then((duration) => {
  console.log(duration)
})

However when trying to run this on a Remote Server running Ubuntu, I'm met with this error.

(node:97616) UnhandledPromiseRejectionWarning: Error: Command failed with exit code 1: /home/ubuntu/Whatsapp-Helper/node
_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://instagram.ffjr1-4.fna.fbcdn.net/
v/t50.2886-16/131687230_388727058869326_3901901103341180755_n.mp4?_nc_ht=instagram.ffjr1-4.fna.fbcdn.net&_nc_cat=110&_nc_o
hc=DO0V2EPdiqEAX-EbIwf&oe=5FE1FCD0&oh=8f8e0506f15cb4ac3766a0ec3606758e
https://instagram.ffjr1-4.fna.fbcdn.net/v/t50.2886-16/131687230_388727058869326_3901901103341180755_n.mp4?_nc_ht=instagram
.ffjr1-4.fna.fbcdn.net&_nc_cat=110&_nc_ohc=DO0V2EPdiqEAX-EbIwf&oe=5FE1FCD0&oh=8f8e0506f15cb4ac3766a0ec3606758e: Resource t
emporarily unavailable
at makeError (/home/ubuntu/Whatsapp-Helper/node_modules/execa/lib/error.js:59:11)
at handlePromise (/home/ubuntu/Whatsapp-Helper/node_modules/execa/index.js:114:26)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
(Use node --trace-warnings ... to show where the warning was created)
(node:97616) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing insid
e of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate
the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/
api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:97616) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections
that are not handled will terminate the Node.js process with a non-zero exit code.

I can't think of any other reason why this is showing up aside from having different OS. I've installed get-video-duration on both machines.

Thanks in advance

How to decipher errors?

So i am running a Promise.All() on a bunch of URLs right now, and sometimes, 100% of them come back correct, but occasionally, the odd one fails with this edited error:

{
"code": 1,
"stdout": "",
"stderr": "MY_FILE.mp4: Unknown error\r\n",
"failed": true,
"signal": null,
"cmd": "path\\to\\project\\node_modules\\ffprobe-static\\bin\\win32\\x64\\ffprobe.exe -v error -show_format -show_streams 
 MY_FILE.mp4",
"timedOut": false,
"killed": false
}  

I was wondering if there was a way I could get more detail about what went wrong, and if it was anything on my end.

Could not find ffprobe executable

this could be an issue with dependencies not up to date, or within the ffprobe package itself. I am running into an error saying Could not find ffprobe executable. Not sure if this has been addressed yet or I am the first to tell you.

Error while getting duration

Hi. I have been able to successfully use this library on Windows but on Ubuntu, I'm getting the follow error:

1|Message-Server | 2021-05-09T17:57:39: Error: Command failed with exit code 1: /Dev/node_modules/@ffprobe-installer/l inux-x64/ffprobe -v error -show_format -show_streams https://cdn.fbsbx.com/v/t59.3654-21/183098887_524357068578588_8345053379644033323_n.mp 4/audioclip-1620563256000-1649.mp4?_nc_cat=100&ccb=1-3&_nc_sid=7272a8&_nc_ohc=Ys1YiHg8JcMAX82ghZI&_nc_ht=cdn.fbsbx.com&oh=055b7559cce4efcac c5630e854936d47&oe=60995445 1|Message-Server | 2021-05-09T17:57:39: https://cdn.fbsbx.com/v/t59.3654-21/183098887_524357068578588_8345053379644033323_n.mp4/audioclip- 1620563256000-1649.mp4?_nc_cat=100&ccb=1-3&_nc_sid=7272a8&_nc_ohc=Ys1YiHg8JcMAX82ghZI&_nc_ht=cdn.fbsbx.com&oh=055b7559cce4efcacc5630e854936 d47&oe=60995445: Resource temporarily unavailable 1|Message-Server | 2021-05-09T17:57:39: at makeError (/Dev/node_modules/execa/lib/error.js:59:11) 1|Message-Server | 2021-05-09T17:57:39: at handlePromise (/Dev/node_modules/execa/index.js:114:26) 1|Message-Server | 2021-05-09T17:57:39: at processTicksAndRejections (internal/process/task_queues.js:93:5) { 1|Message-Server | 2021-05-09T17:57:39: shortMessage: 'Command failed with exit code 1: /Dev/node_modules/@ffprobe-i nstaller/linux-x64/ffprobe -v error -show_format -show_streams https://cdn.fbsbx.com/v/t59.3654-21/183098887_524357068578588_83450533796440 33323_n.mp4/audioclip-1620563256000-1649.mp4?_nc_cat=100&ccb=1-3&_nc_sid=7272a8&_nc_ohc=Ys1YiHg8JcMAX82ghZI&_nc_ht=cdn.fbsbx.com&oh=055b755 9cce4efcacc5630e854936d47&oe=60995445', 1|Message-Server | 2021-05-09T17:57:39: command: '/Dev/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -s how_format -show_streams https://cdn.fbsbx.com/v/t59.3654-21/183098887_524357068578588_8345053379644033323_n.mp4/audioclip-1620563256000-16 49.mp4?_nc_cat=100&ccb=1-3&_nc_sid=7272a8&_nc_ohc=Ys1YiHg8JcMAX82ghZI&_nc_ht=cdn.fbsbx.com&oh=055b7559cce4efcacc5630e854936d47&oe=60995445' , 1|Message-Server | 2021-05-09T17:57:39: exitCode: 1, 1|Message-Server | 2021-05-09T17:57:39: signal: undefined, 1|Message-Server | 2021-05-09T17:57:39: signalDescription: undefined, 1|Message-Server | 2021-05-09T17:57:39: stdout: '', 1|Message-Server | 2021-05-09T17:57:39: stderr: 'https://cdn.fbsbx.com/v/t59.3654-21/183098887_524357068578588_8345053379644033323_n.mp4 /audioclip-1620563256000-1649.mp4?_nc_cat=100&ccb=1-3&_nc_sid=7272a8&_nc_ohc=Ys1YiHg8JcMAX82ghZI&_nc_ht=cdn.fbsbx.com&oh=055b7559cce4efcacc 5630e854936d47&oe=60995445: Resource temporarily unavailable', 1|Message-Server | 2021-05-09T17:57:39: failed: true, 1|Message-Server | 2021-05-09T17:57:39: timedOut: false, 1|Message-Server | 2021-05-09T17:57:39: isCanceled: false, 1|Message-Server | 2021-05-09T17:57:39: killed: false 1|Message-Server | 2021-05-09T17:57:39: }

Running ffmpeg -version gives the following output:
ffmpeg version 3.4.8-0ubuntu0.2 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04) configuration: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100

The url is valid. Could you please help me out.

Cannot access 'execa' before initialization at getFFprobeWrappedExecution

I am unable to use this npm package in my angular component .

But however this npm package works at this repl bin

I understand that repl.it uses the commonJs version of the NPM Module & we need to use the es6 version in angular project so I am taking the following steps.

  1. npm install --save get-video-duration
  2. adding "node_modules/get-video-duration/dist/es6/index.js" to scripts in angular.json
    3.declare var getVideoDurationInSeconds :any;in my angular component
getVideoDurationInSeconds('http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4').then((duration) => {
      console.log(duration)
    })

But however this throws a ReferenceError: Cannot access 'execa' before initialization Error !!!!!!

Angular

Hi!! It is possible to run this module in Angular?

I am trying to do it but I can't. If it is possible, can you write an example

Thanks!

Not working on Linux?

Hey guys!
Im using your package to get video duration after uploading on S3 Bucket. On my local computer, its working perfectly, but after releasing to Linux server, the whole app is crashing and Im getting error "TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined". If I comment import "//import {getVideoDurationInSeconds} from 'get-video-duration';" app is working again. Just cant understand what`s problem

Add a way to take from a video link ?

Hello, is there a way to take the duration of a youtube video ?

getDuration('https://www.youtube.com/watch?v=IDVIDEO').then((duration) => { console.log(duration); });
like that ?

thank you.

Not working in Firebase Cloud Functions

Hi,

I have tried using the module in Firebase Cloud Functions environment which is a normal Node.js environment but all three options of URL, file, and stream do not work.

Here are my errors:

Using the public URL:

{ Error: spawn ffprobe ENOENT at exports._errnoException (util.js:1020:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:197:32) at onErrorNT (internal/child_process.js:376:16) at _combinedTickCallback (internal/process/next_tick.js:80:11) at process._tickDomainCallback (internal/process/next_tick.js:128:9) code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn ffprobe', path: 'ffprobe', spawnargs: [ '-v', 'error', '-show_format', '-show_streams', 'https://storage.googleapis.com/adboard-dev.appspot.com/5HRuyysoMxe9Tb5vPLDbhEaHtkH2%2F-LAve5VogdAr4ZohU-DE%2FSampleVideo_1280x720_1mb.mp4?GoogleAccessId=firebase-adminsdk-3lthu@adboard-dev.iam.gserviceaccount.com&Expires=16447017600&Signature=cbhn%2BtY2%2FtvcRkvsFp1ywhHKiz%2FLfabfMk6HbD4TEGd%2Brf4njcMz1mQVf6H8nyulTBoRHIgC2uENFEPoEjtON6Um0Jb9P9jgikj6PdhS98m1sPDpTjMiFCTWk6ICjTI%2B%2BWuSVGgDX0tRuq3fADZABKaEcl3CEAI17DCVH98a40XttIDZqeqxIDu1iLi%2F8apQy44pAPJsmVR2dkYHk8Am8e7jIT1OnXG3adO34U3TNhsziPryIIpzo68QANENeieulvleic2BEi7KUhN1K8IxzJXxAfkt9RAFbdrwh%2FOpQ7zTGPRzTC3Vz2FnmKSXVtdKtmftg7BlEXrRr3D7ELJ53g%3D%3D' ], stdout: '', stderr: '', failed: true, signal: null, cmd: 'ffprobe -v error -show_format -show_streams https://storage.googleapis.com/adboard-dev.appspot.com/5HRuyysoMxe9Tb5vPLDbhEaHtkH2%2F-LAve5VogdAr4ZohU-DE%2FSampleVideo_1280x720_1mb.mp4?GoogleAccessId=firebase-adminsdk-3lthu@adboard-dev.iam.gserviceaccount.com&Expires=16447017600&Signature=cbhn%2BtY2%2FtvcRkvsFp1ywhHKiz%2FLfabfMk6HbD4TEGd%2Brf4njcMz1mQVf6H8nyulTBoRHIgC2uENFEPoEjtON6Um0Jb9P9jgikj6PdhS98m1sPDpTjMiFCTWk6ICjTI%2B%2BWuSVGgDX0tRuq3fADZABKaEcl3CEAI17DCVH98a40XttIDZqeqxIDu1iLi%2F8apQy44pAPJsmVR2dkYHk8Am8e7jIT1OnXG3adO34U3TNhsziPryIIpzo68QANENeieulvleic2BEi7KUhN1K8IxzJXxAfkt9RAFbdrwh%2FOpQ7zTGPRzTC3Vz2FnmKSXVtdKtmftg7BlEXrRr3D7ELJ53g%3D%3D', timedOut: false, killed: false }

Downloading the file then passing it:
{ Error: spawn ffprobe ENOENT at exports._errnoException (util.js:1020:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:197:32) at onErrorNT (internal/child_process.js:376:16) at _combinedTickCallback (internal/process/next_tick.js:80:11) at process._tickDomainCallback (internal/process/next_tick.js:128:9) code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn ffprobe', path: 'ffprobe', spawnargs: [ '-v', 'error', '-show_format', '-show_streams', '/tmp/SampleVideo_1280x720_1mb.mp4' ], stdout: '', stderr: '', failed: true, signal: null, cmd: 'ffprobe -v error -show_format -show_streams /tmp/SampleVideo_1280x720_1mb.mp4', timedOut: false, killed: false }

Finally, using file stream:
{ AssertionError: No duration found! at ffprobe.then (/user_code/node_modules/get-video-duration/index.js:34:3) at process._tickDomainCallback (internal/process/next_tick.js:135:7) name: 'AssertionError', actual: null, expected: true, operator: '==', message: 'No duration found!', generatedMessage: false }

I tried mp4 and avi videos of different sizes but with no success.

I made sure ffprobe is included in my package.json.

Thanks.

inmemory

Is it possible to use this somehow so that we dont have to save the file to a disk before retrieving the duration? The use case is, the user uploads the video, and the server uploads it to an amazon s3 storage

Can't access ffprobe on built electron app

I'm working on an electron app that relies on getVideoDurationInSeconds to get the duration of video files. In the dev packaged environment, everything works well, but after the app is built, this package can't seem to find the ffprobe.exe. Here is the error:

Error: spawn C:PATH_TO_APP\resources\app.asar\node_modules\get-video-duration\node_modules\ffprobe-static\bin\win32\x64\ffprobe.exe ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:264)
    at onErrorNT (internal/child_process.js:456)
    at processTicksAndRejections (internal/process/task_queues.js:80)

Here is the setup:

"devDependencies": {
    "electron": "^8.0.0",
    "electron-builder": "^22.3.2",
    "electron-packager": "^14.2.1"
  },
  "dependencies": {
    "fix-webm-duration": "^1.0.0",
    "get-video-duration": "^1.0.3",
    "ps-list": "^6.3.0"
  }

Thanks!

/app/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams

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.