GithubHelp home page GithubHelp logo

twecoll's Introduction

Twecoll is a Twitter command-line tool written in Python. It can be used to retrieve data from Twitter and purge likes (its only data-altering feature). It is based on a sub-command principle meaning calls to twecoll are based on a keyword which instructs twecoll what to do. Below is a list of examples followed by a brief explanation of each command. Running twecoll requires Python 2.7 and the argparse library. It was tested with igraph 0.6 and 0.7.1. The igraph library is optional and is used to generate a clustered graph of the network.

Note: I am not planning to maintain this further. If you don't care about the likes, have a look at nucoll which provides similar functionality.

Contributors

Thank you to @lucahammer and @PeterTheOne for contributing time, feedback & pull requests to this project.

Installation

Place twecoll in your path and create a working directory to store the data collected. Twecoll creates a number of files and folders to store its data.

  • fdat: directory containing friends of friends files
  • img: directory containing avatar images of friends
  • .dat: extension of account details data (friends, followers, avatar URL, etc. for account friends)
  • .twt: extension of tweets file (timestamp, tweet)
  • .fav: extension of likes file (id, timestamp, user id, screen name, tweet)
  • .gml: extension of edgelist file (nodes and edges)
  • .f: friends data (fdat)

Twecoll uses oauth and has been updated to support the 1.1 version of the Twitter REST API. Register your own copy of twecoll on http://apps.twitter.com and copy the consumer key and secret.

The first time you run a twecoll command, it will ask you for the consumer key and consumer secret. It will then retrieve the oauth token. Follow the instructions on the console. An HTTP Error 401 will be thrown if the key and secret cannot be used to retrieve the access token details.

Examples

Download and Purge Likes

Historically, this was twecoll's main use: download all favorited/liked tweets in a file for search purposes. Let's take the handle 'jdevoo' as an example.

$ twecoll likes jdevoo

This will produce a jdevoo.fav file containing all likes including a tweet ID, timestamp, user ID, handle, text (urf-8). In order to purge the likes, twecoll needs the .fav file. You can the execute:

$ twecoll likes -p jdevoo

This is the only command that alters account data. You will need to select the Read+Write permission model for this to work when registering twecoll.

Downloading Tweets

Twecoll can download up to 3000 tweets for a handle or run search queries.

$ twecoll tweets jdevoo

This would generate a jdevoo.twt file containing all tweets including timestamp and text (utf-8). In order search for tweets related to a certain hashtag or run a more advanced query, use the -q switch and double-quotes around the query string:

$ twecoll tweets -q "#dg2g"

This will also generate a .twt file name with the url-encoded search string.

Generating a Graph

It is possible to generate a GML file of your first and second degree relationships on Twitter. This is a two-step process that takes time due to API throttling by Twitter. In order to generate the graph, twecoll retrieves the handle's friends (or followers) and all friends-of-friends (2nd degree relationships). It then calculates the relations between those, ignoring 2nd degree relationships to which the handle is not connected. In other words, it looks only for friend relationships among the friends/followers of the handle or query tweets initially supplied.

First retrieve the handle details

$ twecoll init jdevoo

This generates a jdevoo.dat file. It also populates an img directory with avatar images. It is also possible to initialize from a .twt file using the -q option. In this example, retrieve friends of each entry in the .dat file.

$ twecoll fetch jdevoo

This populates the fdat directory. You can now generate the graph file using the defaults.

$ twecoll edgelist jdevoo

This generates a jdevoo.gml file in Graph Model Language. If you have installed the python version of igraph, a .png file will also be generated with a visualization of the GML data. You can also use other packages to visualize your GML file, e.g. Gephi. The GML file will include friends, followers, memberships and statuses counts as properties. If followers count is not equal to zero, the friends-to-followers and listed-to-followers ratios will be calculated.

See also the wiki section for more ideas.

Usage

Twecoll has built-in help, version and API status switches invoked with -h, -v and -s respectively. Each command can also be invoked with the help switch for additional information about its sub-options.

$ twecoll -h
usage: twecoll [-h] [-v] [-s]
               {resolve,init,fetch,tweets,likes,edgelist} ...

Twitter Collection Tool

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -s, --stats           show Twitter throttling stats and exit

sub-commands:
  {resolve,init,fetch,tweets,likes,edgelist}
    resolve             retrieve user_id for screen_name or vice versa
    init                retrieve friends data for screen_name
    fetch               retrieve friends of handles in .dat file
    tweets              retrieve tweets
    likes               retrieve likes
    edgelist            generate graph in GML format

Changes

  • Version 1.1
    • Initial commit
  • Version 1.2
    • Added option to init to retrieve followers instead of friends
  • Version 1.3
    • simplified metrics now included in GML file
  • Version 1.4
    • Simplified membership retrieval and improved graphs
  • Version 1.5
    • Changes to community finding and visualization
  • Version 1.6
    • Added support for multiple arguments in edgelist
  • Version 1.7
    • Added ability to add list members to dat file
  • Version 1.8
    • Fetch tweets from list for a given user
  • Version 1.9
    • Renamed favorites to likes
  • Version 1.10
    • Restored possibility to mix files using edgelist
  • Version 1.11
    • Suppress nodes with missing data in edgelist by default
  • Version 1.12
    • Improved init
  • Version 1.13
    • Added option to skip mentions from queries in init

twecoll's People

Contributors

jdevoo avatar lucahammer avatar petertheone avatar vitorarins 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  avatar  avatar  avatar  avatar  avatar

twecoll's Issues

[Question] Fetch to Skip .f files already created

Hey jdevoo thank you for this amazing tool.

I would like to know how I would go about skipping the .f files in the fdat folder. If that's possible? I am querying an account with ~430k followers and so if I could skip the ones that have already been populated in the fdat folder that would be beneficial, but I'm not sure how to do this.

It appears that at present the fetch function will still call the API for ones that are in the fdat folder. This can also be confirmed by the fact that when the script is running it will say 430,000 remaining etc.

Thank you

Increase cursor count?

Is there a way to increase the "count" of what the cursor returns?

I've mainly used the Tweepy library in the past, but trying out Twecoll for a project now.

The call in Tweepy and other Twitter API wrappers is something like:

tweepy.Cursor(api.followers, screen_name='username', count=200).items()

which allows the cursor to return 3000 users before having to wait 15 minutes for the rate limit.

I tried using Twecoll to go through an account with ~15k followers .

python twecoll init screename -o .
python twecoll fetch screename .

but it would only pull 15 users at a time (when fetching) and thus take days/weeks for the 15k followers.

Only 50% followers

Hi,
In the command "python twecoll init xxxxxxxx --followers" only extract 50% of followers.
It is normal?

Best regards
barri

GML not able to import into Gephi

Hi - I created a GML file using Twecoll, but it won't import into Gephi. I try, but Gephi says "Impossible to find a compatible importer. The file format is not supported. Check file's extension."

Can anyone help?

"Diff'ing sets" question related to "intersection of sets"

Hi there,

Forgive my lack of skill here - I'm not a programmer so things such as this are quite hard for me to grasp. In the wiki you detail a method of diff'ing two .dat files using this method: -

awk -F ',' 'NR==FNR {m[$1]++; next} !m[$1]' dr_rick.dat jdevoo.dat

Could I ask how you could alter this in order to find the intersect between two .dat files? I.e. finding out who are friends (or followers) of both accounts?

Thanks in advance!

Retweet graph

I think the follower map on Twitter is very interesting, but I would be more interested in the retweet graph. i.e. among a group of followers, starting from a particular user... do the users retweet each other...

Is that something that twecoll could easily implement?

Thank you for the wonderfully simple and useful tool.

Regards,
-FT

[Errno 22] Invalid argument - Fetch Function

Hey, I seem to be getting this error on fetch. The script will then stop running once it occurs.

It appeared as below:

Processing 508925997...
HTTPError 429 at 10:26. Waiting -1m to resume (433922 items left)...[Errno 22] Invalid argument

Attribute "user_id" does not conform to GML specification

Hi

I recently ran into an issue (documented here where on reading in GML files created by Twecoll, and merging them using NetworkX , I could not then write the resultant data back out as GML.

It turns out that, I am told (but cannot find a reference) that GML does not support underscores on attribute names.

NetworkX developers are loose with the reading of GML (i.e. they allow non-compliant GML to be read in) but they do not allow it to be written.

I though that you would want to know this.

edgelist with multiple files

When running edgelist with multiple arguments, an error with duplicate node id occurs. This is due to the use of the line number as identifier for the GML file. For each file, the line count restarts and causes a problem for the igraph GML parser.
The use of line numbers was introduced to avoid large Twitter IDs (which are unique) when using igraph.

Error with urllib3

I edited the code so I use urllib3 and now I get this error:

Traceback (most recent call last):
  File "./twecoll", line 84, in <module>
    class Request(urllib3.request):
TypeError: module.__init__() takes at most 2 arguments (3 given)

What is lfr and ffr?

They are in your code, and in the resulting data, but is not clear what they mean?

-FT

Reverse auth credentials are invalid

The above error is displayed when I try to run the script for the first time. I enter the api and secret key, then the script returns an url where we can authorize it. It then is supposed to return a PIN number, but instead we are given this error "Reverse auth credentials are invalid".

out of index error on quotation marks in location field

If there is a single quotation mark (" or ') instead of two ("text", 'text') in the location field, the script throws an error. I am not sure yet if it only happens when the quotation mark is at the beginning of the field. I assume that the csv reader is thrown off by it.

empty search query

twecoll tweets -q "nntaleb AND doctrine" does not return anything but web interface shows results

twecoll edgelist: Visualization skipped

Hi,
I do not remember well, but I guess I have the following error because I upgraded igraph. The project is now called python-igraph and it seems twecoll is lost with the new igraph.

Did someone got this message to? And found a solution?

Visualization skipped. To avoid name collision with the igraph project, this visualization library has been renamed to ‘jgraph’. Please upgrade when convenient.

Thanks ! Best, Jérémie

HTTP ERROR 401 : Authorization Required

Hi jdevoo, I am trying to use twecoll from the last two weeks from now. I have an approved developer account and also have created an app on the dev.twitter.com for the Twitter API consumer keys. I run the code using Windows Powershell, using python 2.7. Although I am still facing the HTTP error 401. (Snap attached). I am using the latest version of twecoll. Please help.
error

Problem collecting data.

I have a question regarding an error. I believe this error is because there was a Internet disconnection. I solved it by running again twecoll fetch. However, the program did something I did not expect. My question is then, after restarting the script, why it went back to collect data which was previously collected, and later jumps until where it was before the Internet connection problem?

Find below the code to understand better:

HTTPError 429 at 20:48. Waiting 15m to resume (8564 items left)...
Processing 1277878784...
Processing 2814630924...
<urlopen error [Errno -2] Name or service not known>
pi@raspberrypi:~/Desktop/twecoll $ python twecoll fetch "fullExport2"
Processing 455956478...
HTTPError 401 with 455956478. Skipping...
Processing 979104499...
HTTPError 401 with 979104499. Skipping...
Processing 983328241...
HTTPError 401 with 983328241. Skipping...
Processing 740795770014683136...
HTTPError 401 with 740795770014683136. Skipping...
Processing 346750636...
HTTPError 401 with 346750636. Skipping...
Processing 762921241414144000...
HTTPError 401 with 762921241414144000. Skipping...
Processing 2427376529...
HTTPError 401 with 2427376529. Skipping...
Processing 2188828472...
HTTPError 401 with 2188828472. Skipping...
Processing 1204197542...
HTTPError 401 with 1204197542. Skipping...
Processing 712010124504780800...
HTTPError 401 with 712010124504780800. Skipping...
Processing 485198649...
HTTPError 401 with 485198649. Skipping...
Processing 2614611833...
HTTPError 401 with 2614611833. Skipping...
Processing 238970728...
HTTPError 401 with 238970728. Skipping...
Processing 2419280250...
HTTPError 401 with 2419280250. Skipping...
Processing 759505530108973056...
HTTPError 401 with 759505530108973056. Skipping...
Processing 4135831001...
HTTPError 429 at 21:31. Waiting 15m to resume (11443 items left)...
Processing 4135831001...
HTTPError 401 with 4135831001. Skipping...
Processing 348384526...
HTTPError 401 with 348384526. Skipping...
Processing 729221168184623104...
HTTPError 401 with 729221168184623104. Skipping...
Processing 703995826...
HTTPError 401 with 703995826. Skipping...
Processing 1165903134...
HTTPError 401 with 1165903134. Skipping...
Processing 1692064393...
HTTPError 401 with 1692064393. Skipping...
Processing 777598742753112064...
HTTPError 401 with 777598742753112064. Skipping...
Processing 2445408019...
HTTPError 401 with 2445408019. Skipping...
Processing 2755043344...
HTTPError 401 with 2755043344. Skipping...
Processing 2523251996...
HTTPError 401 with 2523251996. Skipping...
Processing 333058829...
HTTPError 401 with 333058829. Skipping...
Processing 548284207...
HTTPError 401 with 548284207. Skipping...
Processing 915499807...
HTTPError 401 with 915499807. Skipping...
Processing 278683371...
HTTPError 401 with 278683371. Skipping...
Processing 754786801605279744...
HTTPError 401 with 754786801605279744. Skipping...
Processing 420584458...
HTTPError 429 at 21:47. Waiting 15m to resume (10688 items left)...
Processing 420584458...
HTTPError 401 with 420584458. Skipping...
Processing 728086226...
HTTPError 401 with 728086226. Skipping...
Processing 3227640515...
HTTPError 401 with 3227640515. Skipping...
Processing 763426385985757189...
HTTPError 401 with 763426385985757189. Skipping...
Processing 894072607...
HTTPError 401 with 894072607. Skipping...
Processing 174046229...
HTTPError 401 with 174046229. Skipping...
Processing 757706940764000256...
HTTPError 401 with 757706940764000256. Skipping...
Processing 2199291223...
HTTPError 401 with 2199291223. Skipping...
Processing 549302496...
HTTPError 401 with 549302496. Skipping...
Processing 518580822...
HTTPError 401 with 518580822. Skipping...
Processing 542590791...
HTTPError 401 with 542590791. Skipping...
Processing 3368799917...
HTTPError 401 with 3368799917. Skipping...
Processing 4483120175...
HTTPError 401 with 4483120175. Skipping...
Processing 37389342...
HTTPError 401 with 37389342. Skipping...
Processing 149512577...
HTTPError 401 with 149512577. Skipping...
Processing 701459716845731840...
HTTPError 429 at 22:02. Waiting 15m to resume (9981 items left)...
Processing 701459716845731840...
HTTPError 401 with 701459716845731840. Skipping...
Processing 1360067796...
HTTPError 401 with 1360067796. Skipping...
Processing 91198608...
HTTPError 401 with 91198608. Skipping...
Processing 3401588199...
HTTPError 401 with 3401588199. Skipping...
Processing 346777689...
HTTPError 401 with 346777689. Skipping...
Processing 41638738...
HTTPError 401 with 41638738. Skipping...
Processing 15335468...
HTTPError 401 with 15335468. Skipping...
Processing 1511618528...
HTTPError 401 with 1511618528. Skipping...
Processing 2350188882...
HTTPError 404 with 2350188882. Skipping...
Processing 107654185...
HTTPError 401 with 107654185. Skipping...
Processing 4795645257...
HTTPError 401 with 4795645257. Skipping...
Processing 717491524582383618...
HTTPError 401 with 717491524582383618. Skipping...
Processing 714027263788982273...
HTTPError 401 with 714027263788982273. Skipping...
Processing 1112659710...
HTTPError 401 with 1112659710. Skipping...
Processing 1413408344...
HTTPError 401 with 1413408344. Skipping...
Processing 4187643617...
HTTPError 429 at 22:18. Waiting 15m to resume (8939 items left)...
Processing 4187643617...
HTTPError 401 with 4187643617. Skipping...
Processing 549048484...
HTTPError 401 with 549048484. Skipping...
Processing 214242505...
HTTPError 401 with 214242505. Skipping...
Processing 587367573...
HTTPError 401 with 587367573. Skipping...
Processing 4690380504...
HTTPError 401 with 4690380504. Skipping...
Processing 2814630924...
Processing 1614584052...
Processing 140782566...
Processing 737307356703383552...
Processing 424208099...
Processing 1368863274...
Processing 3296594749...
HTTPError 404 with 3296594749. Skipping...
Processing 151443076...
Processing 137989363...
HTTPError 429 at 22:34. Waiting 15m to resume (8555 items left)...
Processing 137989363...
Processing 716668060833329152...
Processing 380526746...
Processing 371932423...
Processing 1381844899...
Processing 123171022...
Processing 372238505...
Processing 490197240...
Processing 3974988947...
Processing 280939961...
Processing 98785063...
Processing 135129703...
Processing 885952021...

Why these jumps? It is all normal and all right?

In adition, and even if its not related to this, I also encountered the problem list index out of range. And as described here by @lucahammer , I solved by deleting the empty line. No idea why this happened.

Thanks in advance,
Javier

list index out of range

Hi,
Python 2.7.5 on OS X 10.8.3, with the script copied to Library/Frameworks/Python.framework/Versions/2.7/bin/ i'm getting a list index out of range error, no other activity.

Best regards.

script stops because it can't encode something

It ran fine until the following message turned up:
“Processing 745273...
'ascii' codec can't encode character u'\u270c' in position 35: ordinal not in range(128)”

(I am new to Python so I can't submit a fix right now. Sry. Thanks for the great work.)

No working init with large account

python twecoll init vodafone_es --followers
HTTPError 429 at 17:30. Waiting 15m to resume...
HTTPError 429 at 17:46. Waiting 15m to resume...

Solution?

Best regards.
Barri

fetch command

Hello,
I want to study some hashtags during a certain week. Since I want fo study multiple hashtags I will not be able to run the fetch command during that week, due to the API requests limitations. My question is: if I run the init command referred to the hashtags, will I be then able to run the fetch command in a second time? In other words does the fetch command refers to the .dat file generated by the init command? Moreover, if it does there is a time limit for me to start the fetch command to make it refer to the desired week?
thanks in advance and for the marvelous script

Search Queries

Advanced search queries utilizing "until:" or "since:" do not seem to return any tweets

HTTP Error 401: Authorization Required

I'm a complete amateur, so please forgive me if this is an obvious question.

I was using Twecoll, but for various reasons, I closed the twitter account that it was using, and so the keys are no longer valid. I want to link Twecoll to a new account, but for the life of me, I can't work out how to input a new consumer/secret key. Is this stored somewhere cunning?

My understanding was that it was written to a file that would be .twecoll, but no such luck finding it...

Any help would be appreciated.

Resest OAuth

Great tool, thanks. How do I reset the OAuth? It does not seem to be giving me access any longer.

missing favorites

not all favorites seem to be retrieved
while the count retrieved matches what's available through the web interface, it does not match favourites_count from show

Syntax Error

Hi! I just downloaded and tried to run it. I get the following:

File "./twecoll", line 473
id0 = {user_id: val[0] for user_id, val in dat.iteritems() if val[1] in args.screen_name}

-KL

HTTP Error 401: Unauthorized

Hello i am new in python. Thank you for your script. What can i do about this?

C:\Python27>python twecoll.py fetch andigraf
Processing 117273797...

HTTP Error 401: Unauthorized

Init Command does not fetch all the followers of the first account

Hi,

I am just starting to use Twecoll, so this may be a problem of my making, but I do not think so.

Following the instructions here, https://medium.com/@Luca/how-to-collect-any-twitter-follower-network-with-the-python-script-twecoll-c482eeb61f77 I have started to use Twecoll.

I began by running

python twecoll init wingsscotland

After the set up of the keys for the API it all seemed to work fine.

The output was
Setup complete and /Users/ian/.twecoll created. Processing 100 starting from 77821953... Processing 65 starting from 404123976... Done.

if I open wingsscotland.dat in a text editor, I can see 165 lines.

I expected it to start by gathering 55,208 followers (see https://twitter.com/WingsScotland/followers )

This looks like issue #36 - but may not be the same.

I wonder if you can suggest anything to fix this please?

Thanks

Ian

memberships broken

the memberships call returns 20 lists at a time. The current version hangs when the rate limit is reached.

field larger than field limit (131072)

looking to run edgelist on a large collection and can't get around the "field larger than field limit (131072)" err.

have tried updating edgelist function to increase field_size_limit w/ csv.field_size_limit(sys.maxsize)

is there a best practice recommendation around this or is my data set too large?

thanks

Init Command not fetching all the accounts I follow

I tried using Twecoll for my own account. The "init" command collects only around 66% of the people I follow. I have adjusted the FMAX parameter in the file to ensure the limit does not exceed.

After collecting ~2/3rds of accounts I follow, I get the "done" message.

I follow ~150 accounts, and I got ~100 accounts in the .dat file.

URLError not caught

Some Twitter API calls throw URLErrors (timeouts) and Twecoll only catches HTTPErrors.

HTTP 401 error, but new setup does not work

Hi,

I've used twecoll for some time with a rasberry pi and a weekly run.
Now I realized that the script is broken and by investigating I get the following.
When running the twecoll directly with twecoll.py init [myname] I get this
HTTP Error 401: Authorization Required
twecoll list and
twecoll edgelist
work

what can I do to get a proper init run?

recreating the Twiiter Keys and trying a complete restart does not work

Thanks for any hint

Georg

Question about the 'init' stage of twecoll

Hi,

When the 'init' stage is executed: -

python twecoll init jdevoo

Is this returning a list of jdevoo's followers. Or a list of people who jdevoo follows ?

Is there any way of specifying this at all if you require one or the other?

Similarly when the 'fetch' stage is run, can you specify whether you are looking at followers or following?

Thanks!

"Authorize the script" step didn't return a PIN

When I executed the "(2) Now, open this link and authorize the script..." step (by opening the provided URL in a browser) I wasn't presented with a PIN after authorizing. Instead, the browser just displayed a brief message about redirecting to my app, and then did so. (I'm pretty sure I saw no PIN on the brief interstitial page.)

I tried this in a browser where I was already logged in to the app's associated Twitter account (in which case, I was simply asked to grant access) and then ran the script again, and this time opened the URL in an incognito window. (Where I had to log into the account again.) Same results both times.

Command I ran: python twecoll init AuthorFreeman --followers

I'll attach a screenshot of the auth screen I saw.

Thanks for any help you can give me.

screen shot 2018-10-14 at 12 40 38 am

mentions VS friends

I collected a following/followee network of a hashtag with the help of @lucahammer , and using his modified script:

twecoll tweets -q "#hashtag"
twecoll init -q "#hashtag"
twecoll fetch "hashtag"
twecoll edgelist "hashtag"

However, when I open the file in Gephi, I see mention and friends types. I do not know why this happens, since I wanted to create just the following/followee network of the accounts found inside a hashtag.

Any suggestions?

captura de pantalla 2016-11-26 a les 19 38 08

SyntaxError: invalid syntax line 121

Hi, first i'm not a developer, just a curious CM. I'm trying to use twecoll with python for make graphics of followers and hashtags. It's the first time i use it. When i tried, this is what happened:

PS C:\twecoll> python twecoll init sisepuedesanse –followers
File "twecoll", line 121
query = map(lambda (k, v): (k, urllib.quote(v)), urlparse.parse_qsl(query))
^
SyntaxError: invalid syntax

Could anyone help me with this?

Thanks

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.