Giter Site home page Giter Site logo

jimmylaurent / torrent-search-api Goto Github PK

View Code? Open in Web Editor NEW
386.0 386.0 102.0 743 KB

Yet another node torrent scraper (supports iptorrents, torrentleech, torrent9, torrentz2, 1337x, thepiratebay, Yggtorrent, TorrentProject, Eztv, Yts, LimeTorrents)

License: MIT License

JavaScript 10.10% HTML 89.90%

torrent-search-api's People

Contributors

belphemur avatar breaklime avatar chiclemon avatar cyb3rre4per avatar dependabot[bot] avatar dewep avatar francescov1 avatar jimmylaurent avatar navispeed avatar soudini avatar thetoto avatar tiphedor avatar travishorn avatar tristepin avatar yboyer avatar yeikel avatar ylon avatar yourit 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  avatar  avatar  avatar  avatar  avatar

torrent-search-api's Issues

Returning empty array with Promise stuck as Pending

Hi everyone,

I am currently trying to use torrent-search-api to query and download torrents from IPTorrents. The code I had was working for months without any issue but I had to step away and let it sit for about 3 months. I come back and start it up only to find out none of the queries are working. I haven't touched anything since then. I pulled out only the code relating to the torrent search and set it in a file and I am still running into the same issue.

When I do the query VIA my original code, I am being returned an empty array of torrents. When I stripped out the code and only ran the part that was querying torrent, I was getting an undefined object and it seemed that the promise was stuck in a pending state even using the await function.

I have tried:

  • Chaning the URL for IpTorrents to other countries and with/without SSL (I am now running a fresh install of torrent-search-api)
  • I am 100% sure my credentials are proper VIA my username and password.
  • Adding loops and trying to force the promise to resolve

I have no idea how to catch the errors for the TorrentSearchAPI and am hoping I can find a way to obtain that so I can see what is wrong.


const torrentSearch = require('torrent-search-api');
torrentSearch.enableProvider('IpTorrents', 'USER', 'PASSWORD');
const results = startTorrentQuery();
//torrentSearch.enablePublicProviders();
console.log(results);

async function startTorrentQuery() {
    return await torrentSearch.search('1080', 'Movies', 20);
}

badtorrentsearch

`fixUnstableUrl` fails on cloudscraper

When cloudscraper is enabled on a provider, fixUnstableUrl will fail resolving the tracker url. The reason is that cloudscaper already handles the redirections in order to resolve the challenge. Hence the statusCode is never 300 and we end up with the following case.

I gave it a shot at fixing it because I thought it would be quick but it's a bit more tricky than thought. I'll give it another shot this eve or tomorrow I believe.

In the meantime, here is a hack for people in the same situation :

torrentSearch.overrideConfig("Yggtorrent", {
  baseUrl: "https://www2.yggtorrent.ch"
});

@JimmyLaurent I'll try having the fixUnstableUrl be working as expected but that might not be possible. Hence, would you be fine if I make a PR with a periodical check that alters the baseUrl when it finds a redirection? If not, any suggestion?

Yggtorrent download not working (login)

Hi

First thx for your job :-)
Actually when I'm using the downloadTorrent to download file from YGGTorrent provider I got "Vousd evez vous connecter pour télécharger un torrent" .

I already check if the domain is always good, and it's case... any idea ?

thanks !

Updating to 1.1.0 gives errors

After updating the module from 1.0.26 to latest 1.1.0. The following very specific error arises for whatever search is made.

Call: search(...)
Arguments:

[ 'torrent9',
  '1337x',
  'ThePirateBay',
  'Yggtorrent',
  'KickassTorrents',
  'Rarbg',
  'TorrentProject',
  'torrentz2' ] '1080' undefined undefined

Error thrown:

TypeError: fn.apply is not a function
    at .../node_modules/wrap-fn/index.js:75:16
    at .../node_modules/wrap-fn/index.js:57:27
    at get (.../node_modules/x-ray-scraper/src/crawler/index.js:75:27)
    at next (.../node_modules/enqueue/index.js:70:17)
    at .../node_modules/enqueue/index.js:48:12
    at crawler (.../node_modules/x-ray-scraper/src/crawler/index.js:52:7)
    at Promise (.../node_modules/x-ray-scraper/src/request.js:7:7)
    at new Promise (<anonymous>)
    at request (.../node_modules/x-ray-scraper/src/request.js:5:12)
    at getLoadedSource (.../node_modules/x-ray-scraper/src/source.js:8:12)
    at crawl (.../node_modules/x-ray-scraper/src/Xray.js:31:14)
    at Function.crawl.then (.../node_modules/x-ray-scraper/src/Xray.js:87:14)

I'm digging I will post my findings.

No response from providers

It seems that all providers except "Rargb" are death or malfunctioned.
For some of them, i could say for quite a while.

Couple of days ago, I've checked all providers with provided api method: torrentSearch.isProviderActive('provider_name');

Response was true only from "Rargb".

Need help for build script please

Hello,

thank you for your job !

But i dont know, who is my problem..

const torrentSearch = require('torrent-search-api');
TorrentSearchApi.enableProvider('Yggtorrent', 'My username', 'MyPassword');
TorrentSearchApi.getActiveProviders();
[
{
name: 'Yggtorrent',
public: false,
categories: [
'All', 'Videos',
'Movies', 'TV',
'Emulation', 'Games',
'Applications', 'Music',
'Books', 'GPS',
'XXX'
]
}
]

The command above work perfectly (on console node) but the command below i not work ..

async function getTorrents() {
... const torrents = await TorrentSearchApi.search('1080', 'Movies', 20);
}

getTorrents()

Promise { }

Promise ?

Sort by seeders with several providers

I have no problem if I'm enabling only one provider (i get the torrents with the most seeders) but if I have two providers, I get at the top torrents with 200 seeders (but i have more than 3000 with only one of the two providers)

YggTorrent usage issue

Hi !
Knowing that the domain suffix changed for YggTorrent, I forked and edited the file lib/providers/yggtorrent.js in order to change the baseUrl parameter to https://yggtorrent.is/
However, I still cannot reach any data, the API always returns an empty object.
Some sample code :
// credentials login
torrentSearch.enableProvider("Yggtorrent", "my-username", "my-password");
torrentSearch.search("Yggtorrent", '1080', 'Movies')
.then(torrents => {
res.send(torrents);
})
.catch(err => {
res.send(err);
});

Anyone has any idea or successfuly performed an API request for the Yggtorrent provider ?

Cheers

RARBG error

I'm getting the following error occasionally:

TypeError: Cannot read property 'then' of undefined
    at Rarbg.search (/app/node_modules/torrent-search-api/lib/providers/rarbg.js:31:7)
    at Promise.all.selectedProviders.map.p (/app/node_modules/torrent-search-api/index.js:55:53)
    at Array.map (native)
    at TorrentSearchApi._search (/app/node_modules/torrent-search-api/index.js:55:42)
    at TorrentSearchApi.search (/app/node_modules/torrent-search-api/index.js:34:19)

Any thoughts?

Torrentz2 api

its seems like the torrentz2 api is not working.any search comes with no results.

ES6 version?

Hi,
First many thanks for this module which is clearly the best I tried so far for torrents.
I'm just an hobbist and I probably don't understand half of what I'm using so sorry in advance if my question is stupid.
I would love to use your module in an Angular/Electron app but I'm facing the problem of CommonJS module in an ES6 project (require/export ...). I tried many things (like the cjs-to-es6 module) but it's clearly not straightforward and it generates me lots of compilation errors.
Do you have any ambitions to rewrite your module in ES6 ? Or maybe any idea of how can I use your module in an Electron/Angular 6 project?
Oh, and sorry in advance for my english... :)

Empty result

Why the search always return a empty list?

const TorrentSearchApi = require('torrent-search-api');

const torrentSearch = new TorrentSearchApi();

torrentSearch.enableProvider('Torrentz2');
console.log(torrentSearch.isProviderActive('Torrentz2'));

torrentSearch.search('query')
    .then(torrents => {
        console.log(torrents);
    })
    .catch(err => {
        console.log(err);
    });

p.s. the provider is online

yggtorrent subcategory

"subcategory" have to be renamed as "sub_category" in the yggtorrent.js provider file to make it work.
Thank for your great work. I use it everyday.

On browser usage

Is there a way to use the library on the browser; for example to be part of an Angular or Ionic application.

I tried to do so. Some functions like getProviders() work fine but when I use search(..), I get this error message: TypeError: superagent.agent is not a function

Thanks,

Error: To perform request, define both url and callback

Since few days, I have an issue when I use this (awesome) module with Yggtorrent website.
I use last (1.0.22) version of torrent-search-api like this :

const TorrentSearchApi = require('torrent-search-api');

// Yggtorrent connector
const torrentSearch = new TorrentSearchApi();
torrentSearch.enableProvider('Yggtorrent', 'USERNAME', 'PASSWORD');
torrent =  {
  title: 'Torrent title',
  time: '3 heures',
  seeds: 1,
  peers: 62,
  size: '1.06GB',
  desc: 'https://yggtorrent.com/torrent/path/to/my/torrent',
  provider: 'Yggtorrent' 
}
path = '/home/kyane/code/autoratio/126363.torrent'

// Download the torrent
await torrentSearch.downloadTorrent(selectedTorrent, filePath)
  .catch(err => {
    console.log(err);
  });

But when I run the script, I always have this stacktrace, I don't understand what's wrong

Error: To perform request, define both url and callback
    at performRequest (/home/kyane/code/autoratio/node_modules/cloudscraper/index.js:80:11)
    at cloudscraper.request (/home/kyane/code/autoratio/node_modules/cloudscraper/index.js:61:3)
    at tryCatcher (/home/kyane/code/autoratio/node_modules/bluebird/js/release/util.js:16:23)
    at ret (eval at makeNodePromisifiedEval (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:13:39)
    at ensureLoginPromise.then (/home/kyane/code/autoratio/node_modules/torrent-search-api/lib/torrent-provider.js:190:42)
    at tryCatcher (/home/kyane/code/autoratio/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promise.js:693:18)
    at Promise._fulfill (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promise.js:638:18)
    at Promise._resolveCallback (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promise.js:432:57)
    at Promise._settlePromiseFromHandler (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promise.js:524:17)
    at Promise._settlePromise (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promise.js:693:18)
    at Promise._fulfill (/home/kyane/code/autoratio/node_modules/bluebird/js/release/promise.js:638:18)
    at /home/kyane/code/autoratio/node_modules/bluebird/js/release/nodeback.js:42:21
    at giveResults (/home/kyane/code/autoratio/node_modules/cloudscraper/index.js:244:5)
    at Request._callback (/home/kyane/code/autoratio/node_modules/cloudscraper/index.js:109:7)
    at Request.self.callback (/home/kyane/code/autoratio/node_modules/request/request.js:186:22)
    at emitTwo (events.js:126:13)

Category search within multiple providers

It is a nice feature to be able to search from multiple providers by enabling the providers and calling a single search function.

But, because the categories are heterogeneous between the providers, the category search is a bit impractical.

I mean, doing this torrentSearch.search('1080', 'Movies') skips TPB provider, as the Movie category is not defined on that provider. Furthermore, the possible categories in TPB are actually more grained than defined in the provider (e.g. there is a HD Movies category which is a subcategory of Videos).

It would be nice to either have some kind od mapping which would unify the categories of all providers, or be able to pass a provider/category map as the parameter to the search function.

Search results showing wrong seed count

I have not looked at every provider, but for ThePirateBay at least, the seed count returned is different from the seed count actually displayed on ThePirateBay website.

As a result the results I expect to see (highest seeds first) are not what appear, since the sort also gets messed up.

Dependency not found: * _http_common in ./node_modules/http-outgoing/index.js

Hi Devs,

I have a problem In Vuejs when I am importing the file index.js who has the following code.

Index.js File

         `const torrentSearch = require('torrent-search-api');
          torrentSearch.enablePublicProviders();
          
          const movies = async () =>{
                  const torrents = await torrentSearch.search('twilight', 'Movies', 4);
                  const promises = []

                  torrents.forEach((e) =>{ promises.push(e) });
                  //console.log(promises);
                 await new Promise.all(promises);
         };
         //movies();

`

I want to use the index.js in another place, but when I import it, it shows me the following error:

_This dependency was not found:
_http_common in ./node_modules/http-outgoing/index.js
To install it, you can run: npm install --save http_common

[ADD] x[BiT] as a provider (have rss and api)

https://xbit.pw/readme

https://xbit.pw/?search=ubuntu

Base-RSS:
https://xbit.pw/rss

Base-RSS search:
https://xbit.pw/rss?search=ubuntu

Base-RSS search with limits number of output:
https://xbit.pw/rss?search=ubuntu&limit=5

Basic magnet view:
https://xbit.pw/?id=1

Basic magnet files view:
https://xbit.pw/?files=1&id=1

Recently discovered files:
https://xbit.pw/files

Stats page:
https://xbit.pw/stats

---------------------------------------------------------------

Json-API with search and limit output (limit can be max. 100):
https://xbit.pw/api?search=ubuntu&limit=3

Json-API latest 1000:
https://xbit.pw/api

---------------------------------------------------------------

:)

Ygg url updater

Hey,

Ygg url have been update, from https://ww3.yggtorrent.gg to https://www2.yggtorrent.gg

Btw, thank's for this awesome packag, I'm building a web UI over it : https://github.com/wesfox/TorAPI, it's far from being finished but it's on it's way :)

Login error on Ygg

It seems that the authentication with Ygg started to fail. I tried to debug it but I'm lacking of time to go further now. Will look at it deeper tomorrow most probably. But basically the torrent download fails because Ygg is responding: "Vous devez vous connecter pour télécharger un torrent"

Hence my guess is a trouble with the cookie that is stored in the cookieJar.

Search torrents not working

Hello everyone,

I install torrent-search-api and try to execute the quick example :

const TorrentSearchApi = require('torrent-search-api');
 
TorrentSearchApi.enableProvider('Torrent9');
 
// Search '1080' in 'Movies' category and limit to 20 results
const torrents = await TorrentSearchApi.search('1080', 'Movies', 20);

But i had this error :

const torrents = await TorrentSearchApi.search('1080', 'Movies', 20);
SyntaxError: await is only valid in async function
at Module._compile (internal/modules/cjs/loader.js:721:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

How can i resolve this ?

I'm on Windows.

Thank's ! :)

Problem with cloudscraper

Hi,
thanks for your library.
But i think there is a probleme with cloudscraper and torrent9:
I ran this code:

const TorrentSearchApi = require('torrent-search-api');

const torrentSearch = new TorrentSearchApi();

torrentSearch.enableProvider('Torrent9');
console.log(torrentSearch.isProviderActive('Torrent9'));

torrentSearch.search('linux')
    .then(torrents => {
        console.log(torrents);
    })
    .catch(err => {
        console.log(err);
    });

When my VPN is not connected it works well, but when i use it, i get this results:

true
[]

Wrong yggtorrrent URL

Yggtorrent has recently updated their URL to yggtorrent.pe, it should be updated.

YggTorrent download failed

Hey ! First, thx for your share 👍

However, content of my torrent file when i use downloadTorrent function is "Vous devez vous connecter pour télécharger un torrent" with YggTorrent provider.
Someone else have this issue ?

Download error with 1337x - Protection prevent download

Hi

I have an issue when i'm trying to download a torrent from 1337x.
In fact, when we are downloading with itorrents mirror, we face a protection that asks to wait 5 seconds before downloading the torrent. (you can see this here if you click on itorrents download.)

I'm receiving the html page as a result from the download. (I guess it's because of the protection since i have these lines in the return buffer)

 <h1><span data-translate="checking_browser">Checking your browser before accessing</span> itorrents.org.</h1>
    
    <p data-translate="process_is_automatic">This process is automatic. Your browser will redirect to your requested content shortly.</p>
    <p data-translate="allow_5_secs">Please allow up to 5 seconds&hellip;</p>

Do you know the solution to download the torrent and not the protection page html ?

No Active Providers

The function .getActiveProviders() returns [] and .isActiveProvider() returns false when I am able to access them in my browser. As well as this a .search() function fails to complete.

Fail to download from T411

Hi i tried to use the T411 part to find torrents, it's working well.
But when i try to download the torrent it's failling

I call
torrentSearch.downloadTorrent(cachedTorrent) .then(buffer => { _logger.debug (buffer ); }) .catch(err => { console.log(err); });

With the torrent object as follow
title=47.meters.down.2017.french.720p.bluray.x264-lost.mkv, time=23 heures, seeds=232, peers=91, size=3.27 Go, desc=https://t411.si/torrents/55551/47-meters-down-2017-french-720p-bluray-x264-lost-mkv, provider=T411

And i got the error Error: options.uri is a required argument at /torrent-search-api/lib/torrent-provider.js:181:42

Cannot read property 'catch' for silentRejection

TypeError: Cannot read property 'catch' of undefined at exports.silentRejection (C:\xxx\xxx\xxx\torrent-scraper\node_modules\torrent-search-api\lib\utils\helpers.js:7:36) at C:\xxx\xxx\xxx\torrent-scraper\node_modules\torrent-search-api\lib\ProviderManager.js:109:49 at Array.map (<anonymous>) at ProviderManager.search (C:\xxx\xxx\xxx\torrent-scraper\node_modules\torrent-search-api\lib\ProviderManager.js:109:8)

This started happening with the latest fix commit/version.

  • Edit: downgraded to previous version and it's working fine, not doing anything special either
  • my setup is: enable all public providers, disable torrent9, search for tv series

Look for all torrent

Is there a way to look for all torrent using pagination of course
I tried like this const torrents = await TorrentSearchApi.search('*', 'Movies', 10);

But without success so far

Search in all public providers

How can I search all public or more than one in public providers.

torrentSearch.search(['IpTorrents', 'Torrent9'], '1080', 'Movies', 20) .then(torrents => { console.log(torrents); }) .catch(err => { console.log(err); });

When I use that code it returns

[]

Standard JS formatting

Hello,
would you be ok to use standardjs formatting, or tell what kind of formatting you're using.
because now seems difficult to merge.
if you can want I can make a PR.
regards

TorrentLeech Provider Not Working

The TorrentLeech Provider no longer searches. I have tried updating the cookie contents and it does not work. I have tried with versions 1.1.3 and 1.1.4.

Download a torrent.

Hi,
I'm trying to get a single download link.

When I put my search request with

app.post('/search2', torrent_controller.searchNewTorrent);

exports.searchNewTorrent = async (req, res) => { const term = req.body.term; const torrents = await TorrentSearchApi.search(['YggTorrent'], term, 'Movies'); };

I display a list of results, however, I do not know how to make a link to download ONE torrent without having to search directly on itself. Is there an opportunity to downloadById?
Thank you

Upgrade cloudscraper to solve Challenge evaluation failed due to unexpected token

I have this error reporting from cloudscraper

2019-05-23T16:03:05.395672+00:00 app[worker.1]: ### Cloudflare may have changed their technique, or there may be a bug.
2019-05-23T16:03:05.395673+00:00 app[worker.1]: ### Bug Reports: https://github.com/codemanki/cloudscraper/issues
2019-05-23T16:03:05.395675+00:00 app[worker.1]: ### Check the detailed exception message that follows for the cause.
2019-05-23T16:03:05.395677+00:00 app[worker.1]:
2019-05-23T16:03:05.395679+00:00 app[worker.1]: SyntaxError: Challenge evaluation failed: Unexpected token |
2019-05-23T16:03:05.395680+00:00 app[worker.1]: at solveChallenge (/app/node_modules/cloudscraper/index.js:254:21)
2019-05-23T16:03:05.395681+00:00 app[worker.1]: at Timeout._onTimeout (/app/node_modules/cloudscraper/index.js:179:7)
2019-05-23T16:03:05.395683+00:00 app[worker.1]: at ontimeout (timers.js:436:11)
2019-05-23T16:03:05.395684+00:00 app[worker.1]: at tryOnTimeout (timers.js:300:5)
2019-05-23T16:03:05.395686+00:00 app[worker.1]: at listOnTimeout (timers.js:263:5)
2019-05-23T16:03:05.395687+00:00 app[worker.1]: at Timer.processTimers (timers.js:223:10)```

**Possible solutions:** Upgrade cloudscraper to the latest version fixes the error. Got that from [cloudscraper](https://github.com/codemanki/cloudscraper/issues/190) and tested it on my instance.

Syntax Error

I just use the quick example code and obtain:

class TorrentSearchApi {
^^^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

Return category in search results (if present)

I may have missed this for specific providers, but it would be useful to be able to get a category back in each search result from the various providers, as opposed to having to go scrape it / use the getTorrentDetails function.

Parse redirected page

How to parse redirected page such as ISOHUNT, the download button and magnet buttons are on detail page, there are no download button / magnet button on search result page.

Yggtorrent login not working

I use :

torrentSearch.enableProvider('Yggtorrent', 'USERNAME', 'PASSWORD');

but when i write the torrent on the disk i got a page that ask me to connect

getTorrentDetails() for torrents from Yggtorrent return null

It's me again. (sorry for the spam)
Is there any way to fix this? It works fine for other providers like torrent9 but for Yggtorrent it always return null.
I tried to find the element "description" in the source code of the website torrent page but it seems that they maybe changed this div name by "default".

Can't download with yggtorrent

When I try to download with yggTorrent provider I always get this error in the downloaded file : "Vous devez vous connecter pour télécharger un torrent" (You must be logged in to download a torrent)
I guess the authentication isn't working.

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.