Giter Site home page Giter Site logo

steamworkshopdownloader's People

Contributors

nipodemos avatar ronram5126 avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

steamworkshopdownloader's Issues

Downloads old version?

I'm trying to download a mod collection for Rimworld and most mods are outdated when the mods themselves are updated.
I think some files aren't downloaded but i'm not sure.
Any help?

Error on npm start

I get this error when I run npm start.
The urls examples look like file url not collection url, I tried both and none worked. :(

> node index.js

/Users/craigyu/Downloads/steamWorkshopCrawler/steamworkshopdownloader-master/node_modules/jsdom/lib/jsdom/living/helpers/dates-and-times.js:235
  } catch {
          ^

SyntaxError: Unexpected token {
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/craigyu/Downloads/steamWorkshopCrawler/steamworkshopdownloader-master/node_modules/jsdom/lib/jsdom/living/helpers/form-controls.js:18:5)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `node index.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.```

Downloads don't actually happen.

image_2023-05-10_213935176
image_2023-05-10_213947697

It downloads folders of the title of the addons, But wont actaully download any content of the addon.
It just makes a folder and titles the folder.

Multiple errors while downloading a collection

Hello! I am downloading this collection: https://steamcommunity.com/sharedfiles/filedetails/?id=2040151856

I had an error about folder naming which i commented in #4 , but i temporaly change the folder name to ${downloadDir/ collection ${count} so the name of the folder was collection 0 and it solved that problem.
However, now i have other errors: i can't download some itens in the collection... it gives an error:

downloading Metro Stations: More Platforms & Special Tracks [For Sunset Harbor update]
    0. Metro 1 Platform Curved 1 For Sunset Harbor
[
  Error: connect ECONNREFUSED 127.0.0.1:80
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 80
  }
]

a few worked, and a few did not worked, giving this error.
I opended cmd with administrator rights

here is the full output:

> [email protected] start C:\Users\Alan\Downloads\steamworkshopdownloader
> node index.js

downloading Metro Stations: More Platforms & Special Tracks [For Sunset Harbor update]
    0. Metro 1 Platform Curved 1 For Sunset Harbor
[
  Error: connect ECONNREFUSED 127.0.0.1:80
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 80
  }
]
Metro 1 Platform Curved 1 For Sunset Harbor
Metro Stations: More Platforms & Special Tracks [For Sunset Harbor update]
[
  Error: connect ECONNREFUSED 127.0.0.1:80
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 80
  }
]
(node:5304) UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED 127.0.0.1:80
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
(node:5304) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside 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:5304) [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.
    1. Metro 1 Platform Curved 2 For Sunset Harbor
    2. Metro 1 Platform Deeper 1 For Sunset Harbor
[
  Error: connect ECONNREFUSED 127.0.0.1:80
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 80
  }
]
Metro 1 Platform Deeper 1 For Sunset Harbor
Metro Stations: More Platforms & Special Tracks [For Sunset Harbor update]
[
  Error: connect ECONNREFUSED 127.0.0.1:80
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 80
  }
]
(node:5304) UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED 127.0.0.1:80
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
(node:5304) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside 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: 2)
    3. Metro 1 Platform Deeper 2 For Sunset Harbor
[
  Error: connect ECONNREFUSED 127.0.0.1:80
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 80
  }
]
Metro 1 Platform Deeper 2 For Sunset Harbor
Metro Stations: More Platforms & Special Tracks [For Sunset Harbor update]
[
  Error: connect ECONNREFUSED 127.0.0.1:80
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 80
  }
]
(node:5304) UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED 127.0.0.1:80
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
(node:5304) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside 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: 3)
    4. Metro 1 Platform Diagonal 1 For Sunset Harbor
    5. Metro 1 Platform Diagonal 2 For Sunset Harbor
    6. Metro 1 Platform Rotated For Sunset Harbor
    7. Metro 2 Platforms Cross For Sunset Harbor
    8. Metro 2 Platforms Cross X (45 Degree) For Sunset Harbor
    9. Metro 2 Platforms Cross X (Diagonal) For Sunset Harbor
    10. Metro 2 Platforms Parallel 1 For Sunset Harbor
    11. Metro 2 Platforms Parallel 2 For Sunset Harbor
    12. Metro 3 Platforms Cross For Sunset Harbor
    13. Metro 3 Platforms Parallel 1 For Sunset Harbor
[
  Error: connect ECONNREFUSED 127.0.0.1:80
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 80
  }
]
Metro 3 Platforms Parallel 1 For Sunset Harbor
Metro Stations: More Platforms & Special Tracks [For Sunset Harbor update]
[
  Error: connect ECONNREFUSED 127.0.0.1:80
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 80
  }
]
(node:5304) UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED 127.0.0.1:80
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
(node:5304) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside 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: 4)
    14. Metro 3 Platforms Parallel 2 For Sunset Harbor
    15. Metro 3 Platforms Star For Sunset Harbor
    16. Metro 4 Platforms Cross For Sunset Harbor
[
  Error: connect ECONNREFUSED 127.0.0.1:80
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 80
  }
]
Metro 4 Platforms Cross For Sunset Harbor
Metro Stations: More Platforms & Special Tracks [For Sunset Harbor update]
[
  Error: connect ECONNREFUSED 127.0.0.1:80
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '127.0.0.1',
    port: 80
  }
]
(node:5304) UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED 127.0.0.1:80
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
(node:5304) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside 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: 5)
    17. Metro 5 Platforms Cross For Sunset Harbor
Metro 5 Platforms Cross For Sunset Harbor
Metro Stations: More Platforms & Special Tracks [For Sunset Harbor update]
Error: Request failed with status code 504
    at createError (C:\Users\Alan\Downloads\steamworkshopdownloader\node_modules\axios\lib\core\createError.js:16:15)
    at settle (C:\Users\Alan\Downloads\steamworkshopdownloader\node_modules\axios\lib\core\settle.js:17:12)
    at IncomingMessage.handleStreamEnd (C:\Users\Alan\Downloads\steamworkshopdownloader\node_modules\axios\lib\adapters\http.js:236:11)
    at IncomingMessage.emit (events.js:327:22)
    at endReadableNT (_stream_readable.js:1201:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  config: {
    url: 'http://steamworkshop.download/online/steamonline.php',
    method: 'post',
    data: 'item=2040866947&app=255710',
    headers: {
      Accept: 'application/json, text/plain, */*',
      'Content-Type': 'application/x-www-form-urlencoded',
      'User-Agent': 'axios/0.19.2',
      'Content-Length': 26
    },
    transformRequest: [ [Function: transformRequest] ],
    transformResponse: [ [Function: transformResponse] ],
    timeout: 0,
    adapter: [Function: httpAdapter],
    xsrfCookieName: 'XSRF-TOKEN',
    xsrfHeaderName: 'X-XSRF-TOKEN',
    maxContentLength: -1,
    validateStatus: [Function: validateStatus]
  },
  request: <ref *1> ClientRequest {
    _events: [Object: null prototype] {
      socket: [Function (anonymous)],
      abort: [Function (anonymous)],
      aborted: [Function (anonymous)],
      error: [Function (anonymous)],
      timeout: [Function (anonymous)],
      prefinish: [Function: requestOnPrefinish]
    },
    _eventsCount: 6,
    _maxListeners: undefined,
    outputData: [],
    outputSize: 0,
    writable: true,
    _last: true,
    chunkedEncoding: false,
    shouldKeepAlive: false,
    useChunkedEncodingByDefault: true,
    sendDate: false,
    _removedConnection: false,
    _removedContLen: false,
    _removedTE: false,
    _contentLength: null,
    _hasBody: true,
    _trailer: '',
    finished: true,
    _headerSent: true,
    socket: Socket {
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: 'steamworkshop.download',
      _readableState: [ReadableState],
      readable: true,
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      _writableState: [WritableState],
      writable: false,
      allowHalfOpen: false,
      _sockname: null,
      _pendingData: null,
      _pendingEncoding: '',
      server: null,
      _server: null,
      parser: null,
      _httpMessage: [Circular *1],
      [Symbol(asyncId)]: 10870,
      [Symbol(kHandle)]: [TCP],
      [Symbol(kSetNoDelay)]: false,
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0
    },
    _header: 'POST /online/steamonline.php HTTP/1.1\r\n' +
      'Accept: application/json, text/plain, */*\r\n' +
      'Content-Type: application/x-www-form-urlencoded\r\n' +
      'User-Agent: axios/0.19.2\r\n' +
      'Content-Length: 26\r\n' +
      'Host: steamworkshop.download\r\n' +
      'Connection: close\r\n' +
      '\r\n',
    _onPendingData: [Function: noopPendingOutput],
    agent: Agent {
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      defaultPort: 80,
      protocol: 'http:',
      options: [Object],
      requests: {},
      sockets: [Object],
      freeSockets: {},
      keepAliveMsecs: 1000,
      keepAlive: false,
      maxSockets: Infinity,
      maxFreeSockets: 256,
      [Symbol(kCapture)]: false
    },
    socketPath: undefined,
    method: 'POST',
    maxHeaderSize: undefined,
    insecureHTTPParser: undefined,
    path: '/online/steamonline.php',
    _ended: true,
    res: IncomingMessage {
      _readableState: [ReadableState],
      readable: false,
      _events: [Object: null prototype],
      _eventsCount: 3,
      _maxListeners: undefined,
      socket: [Socket],
      httpVersionMajor: 1,
      httpVersionMinor: 1,
      httpVersion: '1.1',
      complete: true,
      headers: [Object],
      rawHeaders: [Array],
      trailers: {},
      rawTrailers: [],
      aborted: false,
      upgrade: false,
      url: '',
      method: null,
      statusCode: 504,
      statusMessage: 'Gateway Time-out',
      client: [Socket],
      _consuming: false,
      _dumped: false,
      req: [Circular *1],
      responseUrl: 'http://steamworkshop.download/online/steamonline.php',
      redirects: [],
      [Symbol(kCapture)]: false
    },
    aborted: false,
    timeoutCb: null,
    upgradeOrConnect: false,
    parser: null,
    maxHeadersCount: null,
    reusedSocket: false,
    _redirectable: Writable {
      _writableState: [WritableState],
      writable: true,
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      _options: [Object],
      _redirectCount: 0,
      _redirects: [],
      _requestBodyLength: 26,
      _requestBodyBuffers: [],
      _onNativeResponse: [Function (anonymous)],
      _currentRequest: [Circular *1],
      _currentUrl: 'http://steamworkshop.download/online/steamonline.php',
      [Symbol(kCapture)]: false
    },
    [Symbol(kCapture)]: false,
    [Symbol(kNeedDrain)]: false,
    [Symbol(corked)]: 0,
    [Symbol(kOutHeaders)]: [Object: null prototype] {
      accept: [Array],
      'content-type': [Array],
      'user-agent': [Array],
      'content-length': [Array],
      host: [Array]
    }
  },
  response: {
    status: 504,
    statusText: 'Gateway Time-out',
    headers: {
      server: 'nginx/1.16.0',
      date: 'Mon, 20 Apr 2020 01:48:28 GMT',
      'content-type': 'text/html',
      'transfer-encoding': 'chunked',
      connection: 'close'
    },
    config: {
      url: 'http://steamworkshop.download/online/steamonline.php',
      method: 'post',
      data: 'item=2040866947&app=255710',
      headers: [Object],
      transformRequest: [Array],
      transformResponse: [Array],
      timeout: 0,
      adapter: [Function: httpAdapter],
      xsrfCookieName: 'XSRF-TOKEN',
      xsrfHeaderName: 'X-XSRF-TOKEN',
      maxContentLength: -1,
      validateStatus: [Function: validateStatus]
    },
    request: <ref *1> ClientRequest {
      _events: [Object: null prototype],
      _eventsCount: 6,
      _maxListeners: undefined,
      outputData: [],
      outputSize: 0,
      writable: true,
      _last: true,
      chunkedEncoding: false,
      shouldKeepAlive: false,
      useChunkedEncodingByDefault: true,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      _contentLength: null,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      socket: [Socket],
      _header: 'POST /online/steamonline.php HTTP/1.1\r\n' +
        'Accept: application/json, text/plain, */*\r\n' +
        'Content-Type: application/x-www-form-urlencoded\r\n' +
        'User-Agent: axios/0.19.2\r\n' +
        'Content-Length: 26\r\n' +
        'Host: steamworkshop.download\r\n' +
        'Connection: close\r\n' +
        '\r\n',
      _onPendingData: [Function: noopPendingOutput],
      agent: [Agent],
      socketPath: undefined,
      method: 'POST',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      path: '/online/steamonline.php',
      _ended: true,
      res: [IncomingMessage],
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: false,
      _redirectable: [Writable],
      [Symbol(kCapture)]: false,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype]
    },
    data: '<html>\r\n' +
      '<head><title>504 Gateway Time-out</title></head>\r\n' +
      '<body>\r\n' +
      '<center><h1>504 Gateway Time-out</h1></center>\r\n' +
      '<hr><center>nginx/1.16.0</center>\r\n' +
      '</body>\r\n' +
      '</html>\r\n'
  },
  isAxiosError: true,
  toJSON: [Function (anonymous)]
}

can you look at this in your free time? thanks!

Error: if collections has characters that can't be used to name a folder, it gives error

Hello!!
First i wanna say thank you for doing this code, it will save me tons of time!!!

However i met this issue:
The collection has a [ in the name (link: Metro Stations: More Platforms & Special Tracks [For Sunset Harbor update] ), so, because it uses the name of the collection to create the folder, it gives an error, and it is unable to continue

> [email protected] start C:\Users\Nipodemos\Downloads\steamworkshopdownloader
> node index.js

https://steamcommunity.com/sharedfiles/filedetails/?id=2040151856
Error: ENOENT: no such file or directory, mkdir './downloads/Metro Stations: More Platforms & Special Tracks [For Sunset Harbor update]'
    at Object.mkdirSync (fs.js:934:3)
    at C:\Users\Nipodemos\Downloads\steamworkshopdownloader\index.js:40:16
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async download (C:\Users\Nipodemos\Downloads\steamworkshopdownloader\index.js:28:5) {
  errno: -4058,
  syscall: 'mkdir',
  code: 'ENOENT',
  path: './downloads/Metro Stations: More Platforms & Special Tracks [For Sunset Harbor update]'
}

I know a little bit of programming, but i don't know to program in node.
Could you see this when you have free time? it would be awesome!

1 vulnerability + No download

Hi,

First of all thanks for this piece of work !

I'm encountering some difficulties to download mods from the workshop for Tabletop Simulator.

Here is all I made :

C:\Users\Jerome\Desktop\steamworkshopdownloader-master\steamworkshopdownloader-master>npm install
npm WARN [email protected] No repository field.
added 103 packages from 138 contributors and audited 143 packages in 2.33s
found 1 low severity vulnerability
run npm audit fix to fix them, or npm audit for details

C:\Users\Jerome\Desktop\steamworkshopdownloader-master\steamworkshopdownloader-master>npm audit fix
npm WARN [email protected] No repository field.
up to date in 0.305s
fixed 0 of 1 vulnerability in 143 scanned packages
1 vulnerability required manual review and could not be updated

C:\Users\Jerome\Desktop\steamworkshopdownloader-master\steamworkshopdownloader-master>npm install
npm WARN [email protected] No repository field.
added 103 packages from 138 contributors and audited 143 packages in 1.448s
found 1 low severity vulnerability
run npm audit fix to fix them, or npm audit for details

C:\Users\Jerome\Desktop\steamworkshopdownloader-master\steamworkshopdownloader-master>npm start

[email protected] start C:\Users\Jerome\Desktop\steamworkshopdownloader-master\steamworkshopdownloader-master
node index.js

downloading The Settlers of Catan + Expansions (Scripted)

C:\Users\Jerome\Desktop\steamworkshopdownloader-master\steamworkshopdownloader-master>npm start

[email protected] start C:\Users\Jerome\Desktop\steamworkshopdownloader-master\steamworkshopdownloader-master
node index.js

downloading The Settlers of Catan + Expansions (Scripted)

C:\Users\Jerome\Desktop\steamworkshopdownloader-master\steamworkshopdownloader-master>npm audit

                   === npm audit security report ===


                             Manual Review
         Some vulnerabilities require your attention to resolve

      Visit https://go.npm.me/audit-guide for additional guidance

Low Prototype Pollution

Package minimist

Patched in >=0.2.1 <1.0.0 || >=1.2.3

Dependency of download-file

Path download-file > mkdirp > minimist

More info https://npmjs.com/advisories/1179

found 1 low severity vulnerability in 143 scanned packages
1 vulnerability requires manual review. See the full report for details.

I don't have a Download folder after that and can't find where it would be if it worked.

Do you know what could cause this ?

The mod I'm trying to get is this one : https://steamcommunity.com/sharedfiles/filedetails/?id=694025908

Thanks in advance

Jerome

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.