├── .editorconfig ├── .eslintrc.js ├── .gitattributes ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── examples.js ├── output ├── days.csv ├── days.json ├── months.csv ├── months.json ├── weeks.csv └── weeks.json ├── package.json ├── src └── echo-table-2-file.js ├── static └── CoolGithubProjects.html └── test └── echo.test.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = crlf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "extends": "standard", 3 | "installedESLint": true, 4 | "plugins": [ 5 | "standard" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | output/* linguist-vendored 2 | static/* linguist-vendored 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dest 3 | output 4 | npm-debug.log 5 | .DS_Store 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | cache: 4 | directories: 5 | - node_modules 6 | notifications: 7 | email: false 8 | node_js: 9 | - "4.1" 10 | before_install: 11 | - npm i -g npm@^2.0.0 12 | before_script: 13 | - npm prune 14 | script: 15 | - npm run test 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Gil Ferreira 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Echo - Convert HTML tables to JSON/CSVs 2 | Nix Build: TravisCI: ![Travis CI Status](https://travis-ci.org/misterGF/echo.svg?branch=master) 3 | 4 | Windows Build: AppVeoyr: ![AppVeyour](https://ci.appveyor.com/api/projects/status/ggni7vsm023ux3am?svg=true) 5 | 6 | NPM: ![NPM Version](https://img.shields.io/npm/v/echo-table-2-file.svg) 7 | 8 | Echo is able to read tables from a website or a html file and convert it to JSON or CSV. 9 | Perfect for saving data from a website and loading it into excel, database, etc. 10 | 11 | ![Echo Icon](http://res.cloudinary.com/gatec21/image/upload/c_scale,w_600/v1455140518/TABLE_ujdxuv.jpg) 12 | --- 13 | 14 | ## Install 15 | ```javascript 16 | npm i "echo-table-2-file" 17 | ``` 18 | --- 19 | 20 | ## Example usage 21 | For our examples we will be using the tables from www.coolgithubprojects.com. 22 | We use **.convert** for local HTML files and **.convertUrl** for online retrieval. 23 | 24 | ``` javascript 25 | // Site was saved locally in process folder. The follow code will read it and generate the json. 26 | var echo = require('echo-table-2-file'); 27 | echo.convert('process', 'output', 'json'); 28 | 29 | ``` 30 | 31 | ``` javascript 32 | // Here we grab the tables from the site and save the data to a csv (default type). 33 | var echo = require('echo-table-2-file'); 34 | echo.convertUrl('https://www.coolgithubprojects.com', 'output'); 35 | 36 | ``` 37 | 38 | ``` javascript 39 | // Lastly, we filter the tables to only include the month table (based on table ID). 40 | var echo = require('echo-table-2-file'); 41 | echo.convertUrl('https://www.coolgithubprojects.com', 'output', 'months'); 42 | 43 | /* OUTPUT EXAMPLE : ./output/month.csv 44 | 45 | "0","Language","Change","Name" 46 | "","JavaScript","+5607","iojs/io.js" 47 | "","Go","+5439","golang/go" 48 | "","Other","+4581","prakhar1989/awesome-courses" 49 | "","JavaScript","+4045","dimsemenov/PhotoSwipe" 50 | "","PHP","+3284","isohuntto/openbay" 51 | ... 52 | 53 | */ 54 | ``` 55 | 56 | --- 57 | 58 | ## Contributing 59 | Pull requests welcome! 60 | -------------------------------------------------------------------------------- /examples.js: -------------------------------------------------------------------------------- 1 | // Site was saved locally in process folder. The follow code will read it and generate the json. 2 | var echo = require('./src/echo-table-2-file'); // Ch 3 | 4 | //console.log("Get all tables as json"); // Convert requires html files being put into the path 5 | //echo.convert('process', 'dest', 'json'); 6 | 7 | // Same as above but filtered down to just the months table 8 | //console.log("Get the months table as csv"); 9 | //echo.convert('process', 'dest', 'csv', 'months'); 10 | 11 | // Here we grab the tables from the site and save the data to a csv (default type). 12 | console.log("Get all tables from website"); 13 | echo.convertUrl('https://www.coolgithubprojects.com', 'dest'); 14 | //echo.convertUrl('https://www.coolgithubprojects.com', 'dest', 'json'); 15 | // Lastly, we filter the tables to only include the month table (based on table ID). 16 | //console.log("Get the months table as csv"); 17 | //echo.convertUrl('https://www.coolgithubprojects.com', 'dest', 'csv', 'months'); 18 | -------------------------------------------------------------------------------- /output/days.csv: -------------------------------------------------------------------------------- 1 | "0","Language","Change","Name" 2 | "","Other","+69","prakhar1989/awesome-courses" 3 | "","Other","+54","wasabeef/awesome-android-ui" 4 | "","JavaScript","+54","cachethq/Cachet" 5 | "","Haskell","+44","begriffs/postgrest" 6 | "","Swift","+29","lexrus/VPNOn" 7 | "","Other","+23","vhf/free-programming-books" 8 | "","Python","+22","vinta/awesome-python" 9 | "","Other","+22","h5bp/Front-end-Developer-Interview-Questions" 10 | "","Java","+20","Netflix/ice" 11 | "","PHP","+20","cachethq/Cachet" 12 | "","Nimrod","+18","Araq/Nim" 13 | "","Ruby","+17","inf0rmer/blanket" 14 | "","Python","+17","isislab/CTFd" 15 | "","JavaScript","+17","STRML/react-grid-layout" 16 | "","PHP","+15","isohuntto/openbay" 17 | "","JavaScript","+15","alvarotrigo/fullPage.js" 18 | "","JavaScript","+14","Semantic-Org/Semantic-UI" 19 | "","Other","+13","wasabeef/awesome-android-libraries" 20 | "","JavaScript","+13","angular/angular.js" 21 | "","CoffeeScript","+13","Pathgather/please-wait" 22 | "","Other","+12","papers-we-love/papers-we-love" 23 | "","JavaScript","+11","staltz/cycle" 24 | "","JavaScript","+11","auchenberg/chrome-devtools-app" 25 | "","Java","+11","MostafaGazar/soas" 26 | "","C++","+11","zhihu/kids" 27 | "","Python","+10","goagent/goagent" 28 | "","Other","+9","fcambus/nginx-resources" 29 | "","CSS","+9","twbs/bootstrap" 30 | "","JavaScript","+9","mauriciosoares/core.js" 31 | "","Java","+9","xiprox/ErrorView" 32 | "","C++","+9","Qihoo360/phptrace" 33 | "","CSS","+9","Dogfalo/materialize" 34 | "","JavaScript","+9","gorhill/uBlock" 35 | "","JavaScript","+8","knsv/mermaid" 36 | "","C++","+8","SFTtech/openage" 37 | "","Java","+8","MizzleDK/Mizuu" 38 | "","JavaScript","+8","cssdream/cssgrace" 39 | "","JavaScript","+8","hellgrenj/hulken" 40 | "","C","+8","torvalds/linux" 41 | "","Other","+8","cyberwizardinstitute/workshops" 42 | "","JavaScript","+7","Matt-Esch/virtual-dom" 43 | "","Go","+7","johnwilson/bytengine" 44 | "","JavaScript","+7","typpo/textbelt" 45 | "","JavaScript","+7","irrationalistic/nchat" 46 | "","Python","+7","kragniz/json-sempai" 47 | "","Objective-C","+7","cwRichardKim/RKNotificationHub" 48 | "","Go","+7","dockerboard/dockerboard" 49 | "","JavaScript","+6","emberjs/ember.js" 50 | "","JavaScript","+6","mbostock/d3" 51 | "","Ruby","+6","rom-rb/rom" 52 | "","Objective-C","+6","kevinzhow/PNChart" 53 | "","Go","+6","andlabs/ui" 54 | "","Python","+6","emirozer/fake2db" 55 | "","Python","+6","ansible/ansible" 56 | "","Python","+6","mishbahr/django-responsive2" 57 | "","Other","+6","StevenSLXie/Tutorials-for-Web-Developers" 58 | "","JavaScript","+6","facebook/react" 59 | "","C++","+6","cloudflare/lua-aho-corasick" 60 | "","Python","+6","alixander/PyScribe" 61 | "","JavaScript","+6","joyent/node" 62 | "","CSS","+6","eduardoboucas/include-media" 63 | "","Ruby","+6","foxnewsnetwork/arrows" 64 | "","JavaScript","+6","leanote/leanote" 65 | "","JavaScript","+6","FelisCatus/SwitchyOmega" 66 | "","Other","+6","dkhamsing/ios-asset-names" 67 | "","Python","+5","getsentry/sentry" 68 | "","JavaScript","+5","iojs/io.js" 69 | "","Java","+5","emmano/Scopes" 70 | "","Python","+5","mitsuhiko/flask" 71 | "","Java","+5","libgdx/libgdx" 72 | "","JavaScript","+5","petkaantonov/bluebird" 73 | "","Shell","+5","sabotage-linux/sabotage" 74 | "","JavaScript","+5","Polymer/polymer" 75 | "","TypeScript","+5","mozilla/shumway" 76 | "","JavaScript","+5","shanzi/sketch-rendering" 77 | "","JavaScript","+5","dimsemenov/PhotoSwipe" 78 | "","Java","+5","iluwatar/java-design-patterns" 79 | "","JavaScript","+5","resume/resume.github.com" 80 | "","Shell","+5","robbyrussell/oh-my-zsh" 81 | "","PHP","+5","padraic/humbug" 82 | "","Other","+5","kbandla/APTnotes" 83 | "","Python","+5","django/django" 84 | "","Java","+5","daimajia/AndroidSwipeLayout" 85 | "","Other","+5","caesar0301/awesome-public-datasets" 86 | "","JavaScript","+5","Automattic/socket.io" 87 | "","C","+5","twitter/twemproxy" 88 | "","Objective-C","+5","k06a/LaunchScreenViewController" 89 | "","JavaScript","+5","enaqx/awesome-react" 90 | "","Go","+5","influxdb/influxdb" 91 | "","CoffeeScript","+5","atom/atom" 92 | "","CSS","+5","FortAwesome/Font-Awesome" 93 | "","C","+5","lavabit/libdime" 94 | "","JavaScript","+5","webpack/webpack" 95 | "","Go","+5","astaxie/build-web-application-with-golang" 96 | "","Objective-C","+5","rickytan/RTImageAssets" 97 | "","Java","+5","futuresimple/android-floating-action-button" 98 | "","PHP","+4","flarum/core" 99 | "","JavaScript","+4","SatanWoo/3D-Github-Contribution" 100 | "","Java","+4","drrb/java-rust-example" 101 | "","Other","+4","sindresorhus/awesome-nodejs" 102 | "","Other","+4","ziadoz/awesome-php" 103 | "","Go","+4","GeertJohan/go.rice" 104 | "","Go","+4","golang/go" 105 | "","JavaScript","+4","keystonejs/keystone" 106 | "","Shell","+4","ibuildthecloud/only-docker" 107 | "","C","+4","MiCode/H1S_kernel" 108 | "","Other","+4","jmapio/jmap" 109 | "","Objective-C","+4","facebook/AsyncDisplayKit" 110 | "","CoffeeScript","+4","metaskills/mocha-phantomjs" 111 | "","Java","+4","google/guava" 112 | "","Go","+4","mohamedattahri/rst" 113 | "","JavaScript","+4","angular/material" 114 | "","Shell","+4","lexrus/vpn-deploy-playbook" 115 | "","Java","+4","traex/RippleEffect" 116 | "","JavaScript","+4","TryGhost/Ghost" 117 | "","C","+4","ggreer/the_silver_searcher" 118 | "","PHP","+4","Roave/SecurityAdvisories" 119 | "","Scala","+4","scala/scala" 120 | "","Python","+4","shadowsocks/shadowsocks" 121 | "","Shell","+4","dnschneid/crouton" 122 | "","Objective-C","+4","AFNetworking/AFNetworking" 123 | "","Other","+4","takenobu-hs/haskell-ghc-illustrated" 124 | "","Ruby","+4","rails/rails" 125 | "","Other","+4","AttackOnDobby/iOS-Core-Animation-Advanced-Techniques" 126 | "","JavaScript","+4","6to5/6to5" 127 | "","Ruby","+4","jekyll/jekyll" 128 | "","Objective-C","+4","cwRichardKim/RKDropdownAlert" 129 | "","Other","+4","CPAN-PRC/resources" 130 | "","Python","+4","6si/shipwright" 131 | "","JavaScript","+4","strongloop/express" 132 | "","Java","+4","chrisbanes/PhotoView" 133 | "","Go","+4","docker/docker" 134 | "","Other","+4","fjbelchi/RemoteWork" 135 | "","Ruby","+4","sagivo/algorithms" 136 | "","C","+4","LnxPrgr3/crossfeed" 137 | "","JavaScript","+4","Reactive-Extensions/RxJS" 138 | "","Python","+4","jakubroztocil/httpie" 139 | "","Go","+4","wandoulabs/codis" 140 | "","JavaScript","+4","josh/cafe-js" 141 | "","Java","+4","fqrouter/fqrouter" 142 | "","Python","+4","mishbahr/djangocms-gmaps" 143 | "","JavaScript","+4","driftyco/ionic" 144 | "","Objective-C","+4","Elethom/PRPrivacyManager" 145 | "","JavaScript","+3","rwaldron/idiomatic.js" 146 | "","Ruby","+3","objc-zen/objc-zen-book" 147 | "","PHP","+3","Automattic/_s" 148 | "","VimL","+3","bling/vim-airline" 149 | "","Java","+3","casser/intellij-es67" 150 | "","C++","+3","d235j/360Controller" 151 | "","Other","+3","github/gitignore" 152 | "","C","+3","scikit-learn/scikit-learn" 153 | "","JavaScript","+3","GitbookIO/editor" 154 | "","Go","+3","cloudflare/ahocorasick" 155 | "","JavaScript","+3","bower/bower" 156 | "","Jasmin","+3","alandipert/tdd-bytecode" 157 | "","Go","+3","stayradiated/rango" 158 | "","C++","+3","khizmax/libcds" 159 | "","OpenSCAD","+3","bq/prusa-i3-hephestos" 160 | "","Other","+3","vikasrawal/orgpaper" 161 | "","Python","+3","josephmisiti/awesome-machine-learning" 162 | "","Java","+3","SecUpwN/Android-IMSI-Catcher-Detector" 163 | "","Ruby","+3","0x73/Oc" 164 | "","C","+3","radare/radare2" 165 | "","Java","+3","Vazkii/Botania" 166 | "","JavaScript","+3","cazala/synaptic" 167 | "","JavaScript","+3","alexk111/SVG-Morpheus" 168 | "","Ruby","+3","SimplyBuilt/SimonSays" 169 | "","Ruby","+3","plataformatec/devise" 170 | "","JavaScript","+3","github/android" 171 | "","JavaScript","+3","LearnBoost/mongoose" 172 | "","CSS","+3","mrzepinski/angular-debug-bar" 173 | "","Scala","+3","lihaoyi/Scalite" 174 | "","C++","+3","dreamlayers/em-dosbox" 175 | "","CSS","+3","Differential/polymer-demo" 176 | "","Java","+3","EnterpriseQualityCoding/FizzBuzzEnterpriseEdition" 177 | "","Java","+3","navasmdc/MaterialDesignLibrary" 178 | "","CSS","+3","geelen/x-gif" 179 | "","Emacs Lisp","+3","skk-dev/ddskk" 180 | "","Python","+3","jesolem/PCV" 181 | "","Other","+3","bbatsov/ruby-style-guide" 182 | "","Other","+3","instanceofpro/awesome-backbone" 183 | "","Python","+3","kovidgoyal/calibre" 184 | "","JavaScript","+3","neilj/Squire" 185 | "","JavaScript","+3","Leask/Flora_Pac" 186 | "","CSS","+3","zhenghao35791/e-commerce" 187 | "","Python","+3","tschellenbach/Stream-Framework" 188 | "","JavaScript","+3","balderdashy/sails" 189 | "","C","+3","tuanpmt/esp_mqtt" 190 | "","Ruby","+3","orta/GotTheRoutesLikeSwagger" 191 | "","CSS","+3","yasaricli/metrello" 192 | "","Other","+3","wsargent/docker-cheat-sheet" 193 | "","Rust","+3","rust-lang/rust-by-example" 194 | "","C","+3","irungentoo/toxcore" 195 | "","Objective-C","+3","rsms/peertalk" 196 | "","Clojure","+3","overtone/overtone" 197 | "","Other","+3","justjavac/free-programming-books-zh_CN" 198 | "","Java","+3","gabrielemariotti/cardslib" 199 | "","PHP","+3","laravel/laravel" 200 | "","Java","+3","zhenghao35791/Multi-Player-and-Multi-Server-Online-Game" 201 | "","Objective-C","+3","BradLarson/GPUImage" 202 | "","PHP","+3","Harazaki/PHP-BOOTSTRAP" 203 | "","Groovy","+3","xujiaao/AARLinkSources" 204 | "","JavaScript","+3","meteor/meteor" 205 | "","JavaScript","+3","daviferreira/medium-editor" 206 | "","Python","+3","letsencrypt/lets-encrypt-preview" 207 | "","Objective-C","+3","omergul123/LLSimpleCamera" 208 | "","Clojure","+3","tonsky/rum" 209 | "","PHP","+3","elfet/deployer" 210 | "","Rust","+3","rust-lang/rust" 211 | "","Go","+3","andres-erbsen/dename" 212 | "","CSS","+3","stefanerickson/covervid" 213 | "","VimL","+3","scrooloose/nerdtree" 214 | "","Swift","+3","soffes/nye" 215 | "","Other","+3","airbnb/javascript" 216 | "","JavaScript","+3","IronSummitMedia/startbootstrap-sb-admin-2" 217 | "","JavaScript","+3","benweet/stackedit" 218 | "","JavaScript","+3","buunguyen/octotree" 219 | "","Objective-C","+3","atljeremy/JFMinimalNotifications" 220 | "","Python","+3","mailpile/Mailpile" 221 | "","Objective-C","+3","dzenbot/DZNSegmentedControl" 222 | "","Swift","+3","ipader/SwiftGuide" 223 | "","PHP","+3","bcit-ci/CodeIgniter" 224 | "","Go","+3","stretchr/testify" 225 | "","VimL","+3","nathanaelkane/vim-indent-guides" 226 | "","Frege","+3","Frege/frege" 227 | "","Java","+3","ksoichiro/Android-ObservableScrollView" 228 | "","Java","+3","evanx/vellum" 229 | "","Rust","+3","servo/servo" 230 | "","PHP","+3","al3x/sovereign" 231 | "","JavaScript","+3","moment/moment" 232 | "","C","+3","lavabit/libcommon" 233 | "","Other","+3","avelino/awesome-go" 234 | "","Ruby","+3","Homebrew/homebrew" 235 | "","TypeScript","+3","egret-labs/egret-core" 236 | "","CSS","+3","720kb/angular-datepicker" 237 | "","JavaScript","+3","MCProHosting/artisan-validator" 238 | "","JavaScript","+3","Bluefieldscom/intl-tel-input" 239 | "","Go","+3","igm/sockjs-go" 240 | "","Swift","+3","fullstackio/FlappySwift" 241 | "","Objective-C","+3","uranusjr/macdown" 242 | "","Go","+3","eckardt/influxdb-backup" 243 | "","Java","+3","twall/jna" 244 | "","Python","+3","kennethreitz/requests" 245 | "","JavaScript","+3","Unitech/PM2" 246 | "","Other","+3","Yixiaohan/show-me-the-code" 247 | "","C++","+3","Kreogist/Mu" 248 | "","Swift","+3","ochococo/Design-Patterns-In-Swift" 249 | "","Objective-C","+3","JohnEstropia/JEToolkit" 250 | "","Objective-C","+3","TransitApp/SVProgressHUD" 251 | "","Objective-C","+3","jessesquires/JSQMessagesViewController" 252 | "","CSS","+3","tobiasahlin/SpinKit" 253 | "","JavaScript","+3","Famous/famous" 254 | "","Objective-C","+3","iziz/libPhoneNumber-iOS" 255 | "","JavaScript","+3","DanielGorlo/ISIS.js" 256 | "","Python","+3","getpelican/pelican" 257 | "","C","+3","gcc-mirror/gcc" 258 | "","Swift","+3","indragiek/DominantColor" 259 | "","Ruby","+3","ruby/ruby" 260 | "","Clojure","+3","andersfurseth/flare" 261 | "","PHP","+3","nemoTyrant/manong" 262 | "","JavaScript","+3","etsy/statsd" 263 | "","C","+3","nginx/nginx" 264 | "","Shell","+3","chengr28/RevokeChinaCerts" 265 | "","PHP","+3","yiisoft/yii2" 266 | "","JavaScript","+3","jashkenas/backbone" 267 | "","Other","+3","bryanbraun/poor-mans-styleguide" 268 | "","CSS","+3","google/material-design-icons" 269 | "","Python","+3","binux/pyspider" 270 | "","PHP","+3","Indatus/dispatcher" 271 | "","IDL","+3","getlantern/lantern" 272 | "","Python","+3","mishbahr/django-usersettings2" 273 | "","CSS","+3","dhg/Skeleton" 274 | "","C","+3","lpereira/lwan" 275 | "","Other","+3","greatfire/wiki" 276 | "","Python","+3","pennersr/django-allauth" 277 | "","JavaScript","+3","kriskowal/q" 278 | "","Python","+3","mishbahr/django-modeladmin-reorder" 279 | "","Java","+3","doval2004/openbizview" 280 | "","Python","+3","toastdriven/django-haystack" 281 | "","JavaScript","+3","gfranko/amdclean" 282 | "","JavaScript","+3","isagalaev/highlight.js" 283 | "","JavaScript","+3","chjj/marked" 284 | "","Python","+3","divio/django-cms" 285 | "","Python","+3","rg3/youtube-dl" 286 | "","JavaScript","+3","6to5/6to5-loader" 287 | "","C#","+3","shadowsocks/shadowsocks-csharp" 288 | "","Matlab","+3","BYU-MicrostructureOfMaterials/OpenXY" 289 | "","Other","+3","dypsilon/frontend-dev-bookmarks" 290 | "","Clojure","+3","LightTable/LightTable" 291 | "","Java","+3","excilys/androidannotations" 292 | "","Ruby","+3","rubinius/rubinius" 293 | "","Java","+3","spring-projects/spring-framework" 294 | "","C++","+2","aspeteRakete/ofxColorPalette" 295 | "","Python","+2","Valloric/YouCompleteMe" 296 | "","JavaScript","+2","akoenig/kast" 297 | "","Swift","+2","hpique/SwiftSingleton" 298 | "","CSS","+2","djfarrelly/MailDev" 299 | "","Objective-C","+2","cocos2d/cocos2d-swift" 300 | "","Objective-C","+2","matthewcheok/Realm-JSON" -------------------------------------------------------------------------------- /output/days.json: -------------------------------------------------------------------------------- 1 | [{"0":"","Language":"Other","Change":"+69","Name":"prakhar1989/awesome-courses"},{"0":"","Language":"Other","Change":"+54","Name":"wasabeef/awesome-android-ui"},{"0":"","Language":"JavaScript","Change":"+54","Name":"cachethq/Cachet"},{"0":"","Language":"Haskell","Change":"+44","Name":"begriffs/postgrest"},{"0":"","Language":"Swift","Change":"+29","Name":"lexrus/VPNOn"},{"0":"","Language":"Other","Change":"+23","Name":"vhf/free-programming-books"},{"0":"","Language":"Python","Change":"+22","Name":"vinta/awesome-python"},{"0":"","Language":"Other","Change":"+22","Name":"h5bp/Front-end-Developer-Interview-Questions"},{"0":"","Language":"Java","Change":"+20","Name":"Netflix/ice"},{"0":"","Language":"PHP","Change":"+20","Name":"cachethq/Cachet"},{"0":"","Language":"Nimrod","Change":"+18","Name":"Araq/Nim"},{"0":"","Language":"Ruby","Change":"+17","Name":"inf0rmer/blanket"},{"0":"","Language":"Python","Change":"+17","Name":"isislab/CTFd"},{"0":"","Language":"JavaScript","Change":"+17","Name":"STRML/react-grid-layout"},{"0":"","Language":"PHP","Change":"+15","Name":"isohuntto/openbay"},{"0":"","Language":"JavaScript","Change":"+15","Name":"alvarotrigo/fullPage.js"},{"0":"","Language":"JavaScript","Change":"+14","Name":"Semantic-Org/Semantic-UI"},{"0":"","Language":"Other","Change":"+13","Name":"wasabeef/awesome-android-libraries"},{"0":"","Language":"JavaScript","Change":"+13","Name":"angular/angular.js"},{"0":"","Language":"CoffeeScript","Change":"+13","Name":"Pathgather/please-wait"},{"0":"","Language":"Other","Change":"+12","Name":"papers-we-love/papers-we-love"},{"0":"","Language":"JavaScript","Change":"+11","Name":"staltz/cycle"},{"0":"","Language":"JavaScript","Change":"+11","Name":"auchenberg/chrome-devtools-app"},{"0":"","Language":"Java","Change":"+11","Name":"MostafaGazar/soas"},{"0":"","Language":"C++","Change":"+11","Name":"zhihu/kids"},{"0":"","Language":"Python","Change":"+10","Name":"goagent/goagent"},{"0":"","Language":"Other","Change":"+9","Name":"fcambus/nginx-resources"},{"0":"","Language":"CSS","Change":"+9","Name":"twbs/bootstrap"},{"0":"","Language":"JavaScript","Change":"+9","Name":"mauriciosoares/core.js"},{"0":"","Language":"Java","Change":"+9","Name":"xiprox/ErrorView"},{"0":"","Language":"C++","Change":"+9","Name":"Qihoo360/phptrace"},{"0":"","Language":"CSS","Change":"+9","Name":"Dogfalo/materialize"},{"0":"","Language":"JavaScript","Change":"+9","Name":"gorhill/uBlock"},{"0":"","Language":"JavaScript","Change":"+8","Name":"knsv/mermaid"},{"0":"","Language":"C++","Change":"+8","Name":"SFTtech/openage"},{"0":"","Language":"Java","Change":"+8","Name":"MizzleDK/Mizuu"},{"0":"","Language":"JavaScript","Change":"+8","Name":"cssdream/cssgrace"},{"0":"","Language":"JavaScript","Change":"+8","Name":"hellgrenj/hulken"},{"0":"","Language":"C","Change":"+8","Name":"torvalds/linux"},{"0":"","Language":"Other","Change":"+8","Name":"cyberwizardinstitute/workshops"},{"0":"","Language":"JavaScript","Change":"+7","Name":"Matt-Esch/virtual-dom"},{"0":"","Language":"Go","Change":"+7","Name":"johnwilson/bytengine"},{"0":"","Language":"JavaScript","Change":"+7","Name":"typpo/textbelt"},{"0":"","Language":"JavaScript","Change":"+7","Name":"irrationalistic/nchat"},{"0":"","Language":"Python","Change":"+7","Name":"kragniz/json-sempai"},{"0":"","Language":"Objective-C","Change":"+7","Name":"cwRichardKim/RKNotificationHub"},{"0":"","Language":"Go","Change":"+7","Name":"dockerboard/dockerboard"},{"0":"","Language":"JavaScript","Change":"+6","Name":"emberjs/ember.js"},{"0":"","Language":"JavaScript","Change":"+6","Name":"mbostock/d3"},{"0":"","Language":"Ruby","Change":"+6","Name":"rom-rb/rom"},{"0":"","Language":"Objective-C","Change":"+6","Name":"kevinzhow/PNChart"},{"0":"","Language":"Go","Change":"+6","Name":"andlabs/ui"},{"0":"","Language":"Python","Change":"+6","Name":"emirozer/fake2db"},{"0":"","Language":"Python","Change":"+6","Name":"ansible/ansible"},{"0":"","Language":"Python","Change":"+6","Name":"mishbahr/django-responsive2"},{"0":"","Language":"Other","Change":"+6","Name":"StevenSLXie/Tutorials-for-Web-Developers"},{"0":"","Language":"JavaScript","Change":"+6","Name":"facebook/react"},{"0":"","Language":"C++","Change":"+6","Name":"cloudflare/lua-aho-corasick"},{"0":"","Language":"Python","Change":"+6","Name":"alixander/PyScribe"},{"0":"","Language":"JavaScript","Change":"+6","Name":"joyent/node"},{"0":"","Language":"CSS","Change":"+6","Name":"eduardoboucas/include-media"},{"0":"","Language":"Ruby","Change":"+6","Name":"foxnewsnetwork/arrows"},{"0":"","Language":"JavaScript","Change":"+6","Name":"leanote/leanote"},{"0":"","Language":"JavaScript","Change":"+6","Name":"FelisCatus/SwitchyOmega"},{"0":"","Language":"Other","Change":"+6","Name":"dkhamsing/ios-asset-names"},{"0":"","Language":"Python","Change":"+5","Name":"getsentry/sentry"},{"0":"","Language":"JavaScript","Change":"+5","Name":"iojs/io.js"},{"0":"","Language":"Java","Change":"+5","Name":"emmano/Scopes"},{"0":"","Language":"Python","Change":"+5","Name":"mitsuhiko/flask"},{"0":"","Language":"Java","Change":"+5","Name":"libgdx/libgdx"},{"0":"","Language":"JavaScript","Change":"+5","Name":"petkaantonov/bluebird"},{"0":"","Language":"Shell","Change":"+5","Name":"sabotage-linux/sabotage"},{"0":"","Language":"JavaScript","Change":"+5","Name":"Polymer/polymer"},{"0":"","Language":"TypeScript","Change":"+5","Name":"mozilla/shumway"},{"0":"","Language":"JavaScript","Change":"+5","Name":"shanzi/sketch-rendering"},{"0":"","Language":"JavaScript","Change":"+5","Name":"dimsemenov/PhotoSwipe"},{"0":"","Language":"Java","Change":"+5","Name":"iluwatar/java-design-patterns"},{"0":"","Language":"JavaScript","Change":"+5","Name":"resume/resume.github.com"},{"0":"","Language":"Shell","Change":"+5","Name":"robbyrussell/oh-my-zsh"},{"0":"","Language":"PHP","Change":"+5","Name":"padraic/humbug"},{"0":"","Language":"Other","Change":"+5","Name":"kbandla/APTnotes"},{"0":"","Language":"Python","Change":"+5","Name":"django/django"},{"0":"","Language":"Java","Change":"+5","Name":"daimajia/AndroidSwipeLayout"},{"0":"","Language":"Other","Change":"+5","Name":"caesar0301/awesome-public-datasets"},{"0":"","Language":"JavaScript","Change":"+5","Name":"Automattic/socket.io"},{"0":"","Language":"C","Change":"+5","Name":"twitter/twemproxy"},{"0":"","Language":"Objective-C","Change":"+5","Name":"k06a/LaunchScreenViewController"},{"0":"","Language":"JavaScript","Change":"+5","Name":"enaqx/awesome-react"},{"0":"","Language":"Go","Change":"+5","Name":"influxdb/influxdb"},{"0":"","Language":"CoffeeScript","Change":"+5","Name":"atom/atom"},{"0":"","Language":"CSS","Change":"+5","Name":"FortAwesome/Font-Awesome"},{"0":"","Language":"C","Change":"+5","Name":"lavabit/libdime"},{"0":"","Language":"JavaScript","Change":"+5","Name":"webpack/webpack"},{"0":"","Language":"Go","Change":"+5","Name":"astaxie/build-web-application-with-golang"},{"0":"","Language":"Objective-C","Change":"+5","Name":"rickytan/RTImageAssets"},{"0":"","Language":"Java","Change":"+5","Name":"futuresimple/android-floating-action-button"},{"0":"","Language":"PHP","Change":"+4","Name":"flarum/core"},{"0":"","Language":"JavaScript","Change":"+4","Name":"SatanWoo/3D-Github-Contribution"},{"0":"","Language":"Java","Change":"+4","Name":"drrb/java-rust-example"},{"0":"","Language":"Other","Change":"+4","Name":"sindresorhus/awesome-nodejs"},{"0":"","Language":"Other","Change":"+4","Name":"ziadoz/awesome-php"},{"0":"","Language":"Go","Change":"+4","Name":"GeertJohan/go.rice"},{"0":"","Language":"Go","Change":"+4","Name":"golang/go"},{"0":"","Language":"JavaScript","Change":"+4","Name":"keystonejs/keystone"},{"0":"","Language":"Shell","Change":"+4","Name":"ibuildthecloud/only-docker"},{"0":"","Language":"C","Change":"+4","Name":"MiCode/H1S_kernel"},{"0":"","Language":"Other","Change":"+4","Name":"jmapio/jmap"},{"0":"","Language":"Objective-C","Change":"+4","Name":"facebook/AsyncDisplayKit"},{"0":"","Language":"CoffeeScript","Change":"+4","Name":"metaskills/mocha-phantomjs"},{"0":"","Language":"Java","Change":"+4","Name":"google/guava"},{"0":"","Language":"Go","Change":"+4","Name":"mohamedattahri/rst"},{"0":"","Language":"JavaScript","Change":"+4","Name":"angular/material"},{"0":"","Language":"Shell","Change":"+4","Name":"lexrus/vpn-deploy-playbook"},{"0":"","Language":"Java","Change":"+4","Name":"traex/RippleEffect"},{"0":"","Language":"JavaScript","Change":"+4","Name":"TryGhost/Ghost"},{"0":"","Language":"C","Change":"+4","Name":"ggreer/the_silver_searcher"},{"0":"","Language":"PHP","Change":"+4","Name":"Roave/SecurityAdvisories"},{"0":"","Language":"Scala","Change":"+4","Name":"scala/scala"},{"0":"","Language":"Python","Change":"+4","Name":"shadowsocks/shadowsocks"},{"0":"","Language":"Shell","Change":"+4","Name":"dnschneid/crouton"},{"0":"","Language":"Objective-C","Change":"+4","Name":"AFNetworking/AFNetworking"},{"0":"","Language":"Other","Change":"+4","Name":"takenobu-hs/haskell-ghc-illustrated"},{"0":"","Language":"Ruby","Change":"+4","Name":"rails/rails"},{"0":"","Language":"Other","Change":"+4","Name":"AttackOnDobby/iOS-Core-Animation-Advanced-Techniques"},{"0":"","Language":"JavaScript","Change":"+4","Name":"6to5/6to5"},{"0":"","Language":"Ruby","Change":"+4","Name":"jekyll/jekyll"},{"0":"","Language":"Objective-C","Change":"+4","Name":"cwRichardKim/RKDropdownAlert"},{"0":"","Language":"Other","Change":"+4","Name":"CPAN-PRC/resources"},{"0":"","Language":"Python","Change":"+4","Name":"6si/shipwright"},{"0":"","Language":"JavaScript","Change":"+4","Name":"strongloop/express"},{"0":"","Language":"Java","Change":"+4","Name":"chrisbanes/PhotoView"},{"0":"","Language":"Go","Change":"+4","Name":"docker/docker"},{"0":"","Language":"Other","Change":"+4","Name":"fjbelchi/RemoteWork"},{"0":"","Language":"Ruby","Change":"+4","Name":"sagivo/algorithms"},{"0":"","Language":"C","Change":"+4","Name":"LnxPrgr3/crossfeed"},{"0":"","Language":"JavaScript","Change":"+4","Name":"Reactive-Extensions/RxJS"},{"0":"","Language":"Python","Change":"+4","Name":"jakubroztocil/httpie"},{"0":"","Language":"Go","Change":"+4","Name":"wandoulabs/codis"},{"0":"","Language":"JavaScript","Change":"+4","Name":"josh/cafe-js"},{"0":"","Language":"Java","Change":"+4","Name":"fqrouter/fqrouter"},{"0":"","Language":"Python","Change":"+4","Name":"mishbahr/djangocms-gmaps"},{"0":"","Language":"JavaScript","Change":"+4","Name":"driftyco/ionic"},{"0":"","Language":"Objective-C","Change":"+4","Name":"Elethom/PRPrivacyManager"},{"0":"","Language":"JavaScript","Change":"+3","Name":"rwaldron/idiomatic.js"},{"0":"","Language":"Ruby","Change":"+3","Name":"objc-zen/objc-zen-book"},{"0":"","Language":"PHP","Change":"+3","Name":"Automattic/_s"},{"0":"","Language":"VimL","Change":"+3","Name":"bling/vim-airline"},{"0":"","Language":"Java","Change":"+3","Name":"casser/intellij-es67"},{"0":"","Language":"C++","Change":"+3","Name":"d235j/360Controller"},{"0":"","Language":"Other","Change":"+3","Name":"github/gitignore"},{"0":"","Language":"C","Change":"+3","Name":"scikit-learn/scikit-learn"},{"0":"","Language":"JavaScript","Change":"+3","Name":"GitbookIO/editor"},{"0":"","Language":"Go","Change":"+3","Name":"cloudflare/ahocorasick"},{"0":"","Language":"JavaScript","Change":"+3","Name":"bower/bower"},{"0":"","Language":"Jasmin","Change":"+3","Name":"alandipert/tdd-bytecode"},{"0":"","Language":"Go","Change":"+3","Name":"stayradiated/rango"},{"0":"","Language":"C++","Change":"+3","Name":"khizmax/libcds"},{"0":"","Language":"OpenSCAD","Change":"+3","Name":"bq/prusa-i3-hephestos"},{"0":"","Language":"Other","Change":"+3","Name":"vikasrawal/orgpaper"},{"0":"","Language":"Python","Change":"+3","Name":"josephmisiti/awesome-machine-learning"},{"0":"","Language":"Java","Change":"+3","Name":"SecUpwN/Android-IMSI-Catcher-Detector"},{"0":"","Language":"Ruby","Change":"+3","Name":"0x73/Oc"},{"0":"","Language":"C","Change":"+3","Name":"radare/radare2"},{"0":"","Language":"Java","Change":"+3","Name":"Vazkii/Botania"},{"0":"","Language":"JavaScript","Change":"+3","Name":"cazala/synaptic"},{"0":"","Language":"JavaScript","Change":"+3","Name":"alexk111/SVG-Morpheus"},{"0":"","Language":"Ruby","Change":"+3","Name":"SimplyBuilt/SimonSays"},{"0":"","Language":"Ruby","Change":"+3","Name":"plataformatec/devise"},{"0":"","Language":"JavaScript","Change":"+3","Name":"github/android"},{"0":"","Language":"JavaScript","Change":"+3","Name":"LearnBoost/mongoose"},{"0":"","Language":"CSS","Change":"+3","Name":"mrzepinski/angular-debug-bar"},{"0":"","Language":"Scala","Change":"+3","Name":"lihaoyi/Scalite"},{"0":"","Language":"C++","Change":"+3","Name":"dreamlayers/em-dosbox"},{"0":"","Language":"CSS","Change":"+3","Name":"Differential/polymer-demo"},{"0":"","Language":"Java","Change":"+3","Name":"EnterpriseQualityCoding/FizzBuzzEnterpriseEdition"},{"0":"","Language":"Java","Change":"+3","Name":"navasmdc/MaterialDesignLibrary"},{"0":"","Language":"CSS","Change":"+3","Name":"geelen/x-gif"},{"0":"","Language":"Emacs Lisp","Change":"+3","Name":"skk-dev/ddskk"},{"0":"","Language":"Python","Change":"+3","Name":"jesolem/PCV"},{"0":"","Language":"Other","Change":"+3","Name":"bbatsov/ruby-style-guide"},{"0":"","Language":"Other","Change":"+3","Name":"instanceofpro/awesome-backbone"},{"0":"","Language":"Python","Change":"+3","Name":"kovidgoyal/calibre"},{"0":"","Language":"JavaScript","Change":"+3","Name":"neilj/Squire"},{"0":"","Language":"JavaScript","Change":"+3","Name":"Leask/Flora_Pac"},{"0":"","Language":"CSS","Change":"+3","Name":"zhenghao35791/e-commerce"},{"0":"","Language":"Python","Change":"+3","Name":"tschellenbach/Stream-Framework"},{"0":"","Language":"JavaScript","Change":"+3","Name":"balderdashy/sails"},{"0":"","Language":"C","Change":"+3","Name":"tuanpmt/esp_mqtt"},{"0":"","Language":"Ruby","Change":"+3","Name":"orta/GotTheRoutesLikeSwagger"},{"0":"","Language":"CSS","Change":"+3","Name":"yasaricli/metrello"},{"0":"","Language":"Other","Change":"+3","Name":"wsargent/docker-cheat-sheet"},{"0":"","Language":"Rust","Change":"+3","Name":"rust-lang/rust-by-example"},{"0":"","Language":"C","Change":"+3","Name":"irungentoo/toxcore"},{"0":"","Language":"Objective-C","Change":"+3","Name":"rsms/peertalk"},{"0":"","Language":"Clojure","Change":"+3","Name":"overtone/overtone"},{"0":"","Language":"Other","Change":"+3","Name":"justjavac/free-programming-books-zh_CN"},{"0":"","Language":"Java","Change":"+3","Name":"gabrielemariotti/cardslib"},{"0":"","Language":"PHP","Change":"+3","Name":"laravel/laravel"},{"0":"","Language":"Java","Change":"+3","Name":"zhenghao35791/Multi-Player-and-Multi-Server-Online-Game"},{"0":"","Language":"Objective-C","Change":"+3","Name":"BradLarson/GPUImage"},{"0":"","Language":"PHP","Change":"+3","Name":"Harazaki/PHP-BOOTSTRAP"},{"0":"","Language":"Groovy","Change":"+3","Name":"xujiaao/AARLinkSources"},{"0":"","Language":"JavaScript","Change":"+3","Name":"meteor/meteor"},{"0":"","Language":"JavaScript","Change":"+3","Name":"daviferreira/medium-editor"},{"0":"","Language":"Python","Change":"+3","Name":"letsencrypt/lets-encrypt-preview"},{"0":"","Language":"Objective-C","Change":"+3","Name":"omergul123/LLSimpleCamera"},{"0":"","Language":"Clojure","Change":"+3","Name":"tonsky/rum"},{"0":"","Language":"PHP","Change":"+3","Name":"elfet/deployer"},{"0":"","Language":"Rust","Change":"+3","Name":"rust-lang/rust"},{"0":"","Language":"Go","Change":"+3","Name":"andres-erbsen/dename"},{"0":"","Language":"CSS","Change":"+3","Name":"stefanerickson/covervid"},{"0":"","Language":"VimL","Change":"+3","Name":"scrooloose/nerdtree"},{"0":"","Language":"Swift","Change":"+3","Name":"soffes/nye"},{"0":"","Language":"Other","Change":"+3","Name":"airbnb/javascript"},{"0":"","Language":"JavaScript","Change":"+3","Name":"IronSummitMedia/startbootstrap-sb-admin-2"},{"0":"","Language":"JavaScript","Change":"+3","Name":"benweet/stackedit"},{"0":"","Language":"JavaScript","Change":"+3","Name":"buunguyen/octotree"},{"0":"","Language":"Objective-C","Change":"+3","Name":"atljeremy/JFMinimalNotifications"},{"0":"","Language":"Python","Change":"+3","Name":"mailpile/Mailpile"},{"0":"","Language":"Objective-C","Change":"+3","Name":"dzenbot/DZNSegmentedControl"},{"0":"","Language":"Swift","Change":"+3","Name":"ipader/SwiftGuide"},{"0":"","Language":"PHP","Change":"+3","Name":"bcit-ci/CodeIgniter"},{"0":"","Language":"Go","Change":"+3","Name":"stretchr/testify"},{"0":"","Language":"VimL","Change":"+3","Name":"nathanaelkane/vim-indent-guides"},{"0":"","Language":"Frege","Change":"+3","Name":"Frege/frege"},{"0":"","Language":"Java","Change":"+3","Name":"ksoichiro/Android-ObservableScrollView"},{"0":"","Language":"Java","Change":"+3","Name":"evanx/vellum"},{"0":"","Language":"Rust","Change":"+3","Name":"servo/servo"},{"0":"","Language":"PHP","Change":"+3","Name":"al3x/sovereign"},{"0":"","Language":"JavaScript","Change":"+3","Name":"moment/moment"},{"0":"","Language":"C","Change":"+3","Name":"lavabit/libcommon"},{"0":"","Language":"Other","Change":"+3","Name":"avelino/awesome-go"},{"0":"","Language":"Ruby","Change":"+3","Name":"Homebrew/homebrew"},{"0":"","Language":"TypeScript","Change":"+3","Name":"egret-labs/egret-core"},{"0":"","Language":"CSS","Change":"+3","Name":"720kb/angular-datepicker"},{"0":"","Language":"JavaScript","Change":"+3","Name":"MCProHosting/artisan-validator"},{"0":"","Language":"JavaScript","Change":"+3","Name":"Bluefieldscom/intl-tel-input"},{"0":"","Language":"Go","Change":"+3","Name":"igm/sockjs-go"},{"0":"","Language":"Swift","Change":"+3","Name":"fullstackio/FlappySwift"},{"0":"","Language":"Objective-C","Change":"+3","Name":"uranusjr/macdown"},{"0":"","Language":"Go","Change":"+3","Name":"eckardt/influxdb-backup"},{"0":"","Language":"Java","Change":"+3","Name":"twall/jna"},{"0":"","Language":"Python","Change":"+3","Name":"kennethreitz/requests"},{"0":"","Language":"JavaScript","Change":"+3","Name":"Unitech/PM2"},{"0":"","Language":"Other","Change":"+3","Name":"Yixiaohan/show-me-the-code"},{"0":"","Language":"C++","Change":"+3","Name":"Kreogist/Mu"},{"0":"","Language":"Swift","Change":"+3","Name":"ochococo/Design-Patterns-In-Swift"},{"0":"","Language":"Objective-C","Change":"+3","Name":"JohnEstropia/JEToolkit"},{"0":"","Language":"Objective-C","Change":"+3","Name":"TransitApp/SVProgressHUD"},{"0":"","Language":"Objective-C","Change":"+3","Name":"jessesquires/JSQMessagesViewController"},{"0":"","Language":"CSS","Change":"+3","Name":"tobiasahlin/SpinKit"},{"0":"","Language":"JavaScript","Change":"+3","Name":"Famous/famous"},{"0":"","Language":"Objective-C","Change":"+3","Name":"iziz/libPhoneNumber-iOS"},{"0":"","Language":"JavaScript","Change":"+3","Name":"DanielGorlo/ISIS.js"},{"0":"","Language":"Python","Change":"+3","Name":"getpelican/pelican"},{"0":"","Language":"C","Change":"+3","Name":"gcc-mirror/gcc"},{"0":"","Language":"Swift","Change":"+3","Name":"indragiek/DominantColor"},{"0":"","Language":"Ruby","Change":"+3","Name":"ruby/ruby"},{"0":"","Language":"Clojure","Change":"+3","Name":"andersfurseth/flare"},{"0":"","Language":"PHP","Change":"+3","Name":"nemoTyrant/manong"},{"0":"","Language":"JavaScript","Change":"+3","Name":"etsy/statsd"},{"0":"","Language":"C","Change":"+3","Name":"nginx/nginx"},{"0":"","Language":"Shell","Change":"+3","Name":"chengr28/RevokeChinaCerts"},{"0":"","Language":"PHP","Change":"+3","Name":"yiisoft/yii2"},{"0":"","Language":"JavaScript","Change":"+3","Name":"jashkenas/backbone"},{"0":"","Language":"Other","Change":"+3","Name":"bryanbraun/poor-mans-styleguide"},{"0":"","Language":"CSS","Change":"+3","Name":"google/material-design-icons"},{"0":"","Language":"Python","Change":"+3","Name":"binux/pyspider"},{"0":"","Language":"PHP","Change":"+3","Name":"Indatus/dispatcher"},{"0":"","Language":"IDL","Change":"+3","Name":"getlantern/lantern"},{"0":"","Language":"Python","Change":"+3","Name":"mishbahr/django-usersettings2"},{"0":"","Language":"CSS","Change":"+3","Name":"dhg/Skeleton"},{"0":"","Language":"C","Change":"+3","Name":"lpereira/lwan"},{"0":"","Language":"Other","Change":"+3","Name":"greatfire/wiki"},{"0":"","Language":"Python","Change":"+3","Name":"pennersr/django-allauth"},{"0":"","Language":"JavaScript","Change":"+3","Name":"kriskowal/q"},{"0":"","Language":"Python","Change":"+3","Name":"mishbahr/django-modeladmin-reorder"},{"0":"","Language":"Java","Change":"+3","Name":"doval2004/openbizview"},{"0":"","Language":"Python","Change":"+3","Name":"toastdriven/django-haystack"},{"0":"","Language":"JavaScript","Change":"+3","Name":"gfranko/amdclean"},{"0":"","Language":"JavaScript","Change":"+3","Name":"isagalaev/highlight.js"},{"0":"","Language":"JavaScript","Change":"+3","Name":"chjj/marked"},{"0":"","Language":"Python","Change":"+3","Name":"divio/django-cms"},{"0":"","Language":"Python","Change":"+3","Name":"rg3/youtube-dl"},{"0":"","Language":"JavaScript","Change":"+3","Name":"6to5/6to5-loader"},{"0":"","Language":"C#","Change":"+3","Name":"shadowsocks/shadowsocks-csharp"},{"0":"","Language":"Matlab","Change":"+3","Name":"BYU-MicrostructureOfMaterials/OpenXY"},{"0":"","Language":"Other","Change":"+3","Name":"dypsilon/frontend-dev-bookmarks"},{"0":"","Language":"Clojure","Change":"+3","Name":"LightTable/LightTable"},{"0":"","Language":"Java","Change":"+3","Name":"excilys/androidannotations"},{"0":"","Language":"Ruby","Change":"+3","Name":"rubinius/rubinius"},{"0":"","Language":"Java","Change":"+3","Name":"spring-projects/spring-framework"},{"0":"","Language":"C++","Change":"+2","Name":"aspeteRakete/ofxColorPalette"},{"0":"","Language":"Python","Change":"+2","Name":"Valloric/YouCompleteMe"},{"0":"","Language":"JavaScript","Change":"+2","Name":"akoenig/kast"},{"0":"","Language":"Swift","Change":"+2","Name":"hpique/SwiftSingleton"},{"0":"","Language":"CSS","Change":"+2","Name":"djfarrelly/MailDev"},{"0":"","Language":"Objective-C","Change":"+2","Name":"cocos2d/cocos2d-swift"},{"0":"","Language":"Objective-C","Change":"+2","Name":"matthewcheok/Realm-JSON"}] -------------------------------------------------------------------------------- /output/months.csv: -------------------------------------------------------------------------------- 1 | "0","Language","Change","Name" 2 | "","JavaScript","+5607","iojs/io.js" 3 | "","Go","+5439","golang/go" 4 | "","Other","+4581","prakhar1989/awesome-courses" 5 | "","JavaScript","+4045","dimsemenov/PhotoSwipe" 6 | "","PHP","+3284","isohuntto/openbay" 7 | "","Bison","+2998","matz/streem" 8 | "","C","+2625","mozilla/firefox-ios" 9 | "","JavaScript","+2616","knsv/mermaid" 10 | "","Ruby","+2564","outpunk/evil-icons" 11 | "","CSS","+2563","dhg/Skeleton" 12 | "","Other","+2219","h5bp/Front-end-Developer-Interview-Questions" 13 | "","JavaScript","+1888","neilj/Squire" 14 | "","JavaScript","+1873","Voog/wysihtml" 15 | "","Other","+1745","wasabeef/awesome-android-ui" 16 | "","Ruby","+1631","sagivo/algorithms" 17 | "","Other","+1494","vhf/free-programming-books" 18 | "","CSS","+1471","kumailht/flakes" 19 | "","Other","+1460","SamHerbert/SVG-Loaders" 20 | "","Other","+1441","caesar0301/awesome-public-datasets" 21 | "","Python","+1414","jeffkaufman/icdiff" 22 | "","CSS","+1406","FezVrasta/bootstrap-material-design" 23 | "","JavaScript","+1375","angular/angular.js" 24 | "","CSS","+1344","twbs/bootstrap" 25 | "","Python","+1315","emirozer/fake2db" 26 | "","JavaScript","+1233","google/end-to-end" 27 | "","JavaScript","+1197","paulrouget/firefox.html" 28 | "","JavaScript","+1183","gorhill/uBlock" 29 | "","JavaScript","+1146","facebook/react" 30 | "","C++","+1110","atom/atom-shell" 31 | "","CSS","+1082","JedWatson/touchstonejs" 32 | "","Python","+1082","Tribler/tribler" 33 | "","PHP","+1079","flarum/core" 34 | "","Other","+1061","papers-we-love/papers-we-love" 35 | "","Go","+1048","coreos/rocket" 36 | "","JavaScript","+1045","Semantic-Org/Semantic-UI" 37 | "","JavaScript","+1020","mbostock/d3" 38 | "","JavaScript","+968","zzarcon/focusable" 39 | "","Swift","+912","lexrus/VPNOn" 40 | "","Go","+899","docker/docker" 41 | "","JavaScript","+869","svaarala/duktape" 42 | "","Rust","+863","Kintaro/wtftw" 43 | "","JavaScript","+858","driftyco/ionic" 44 | "","C","+850","lpereira/lwan" 45 | "","Python","+841","redodo/tortilla" 46 | "","Python","+838","mewwts/addict" 47 | "","CSS","+831","Dogfalo/materialize" 48 | "","Objective-C","+790","mutualmobile/MMWormhole" 49 | "","Go","+777","docker/machine" 50 | "","JavaScript","+772","angular/material" 51 | "","C","+766","torvalds/linux" 52 | "","Go","+765","shazow/ssh-chat" 53 | "","Python","+761","goagent/goagent" 54 | "","Ruby","+744","elabs/refile" 55 | "","CSS","+744","FortAwesome/Font-Awesome" 56 | "","C","+737","h2o/h2o" 57 | "","Python","+729","vinta/awesome-python" 58 | "","Shell","+722","phusion/traveling-ruby" 59 | "","C++","+711","rogerwang/node-webkit" 60 | "","Python","+711","i2y/mochi" 61 | "","Other","+698","teracyhq/wireframe" 62 | "","JavaScript","+682","keen/dashboards" 63 | "","CSS","+674","daneden/animate.css" 64 | "","Go","+674","stripe/aws-go" 65 | "","JavaScript","+672","athyuttamre/tab-snooze" 66 | "","JavaScript","+671","alvarotrigo/fullPage.js" 67 | "","JavaScript","+669","auchenberg/chrome-devtools-app" 68 | "","Other","+668","kozross/awesome-c" 69 | "","JavaScript","+665","meteor/meteor" 70 | "","Other","+660","Trinea/android-open-project" 71 | "","Go","+658","boltdb/bolt" 72 | "","JavaScript","+655","joyent/node" 73 | "","C#","+644","TheBerkin/Rant" 74 | "","Rust","+639","rust-lang/rust" 75 | "","JavaScript","+637","callemall/material-ui" 76 | "","CSS","+634","kumailht/gridforms" 77 | "","Objective-C","+633","rickytan/RTImageAssets" 78 | "","JavaScript","+630","RubaXa/Sortable" 79 | "","CoffeeScript","+626","atom/atom" 80 | "","CSS","+626","google/material-design-icons" 81 | "","Go","+625","squiidz/bone" 82 | "","Shell","+599","robbyrussell/oh-my-zsh" 83 | "","Objective-C","+599","kevinzhow/PNChart" 84 | "","JavaScript","+597","substack/stream-handbook" 85 | "","JavaScript","+586","gulpjs/gulp" 86 | "","Other","+575","github/gitignore" 87 | "","JavaScript","+568","Polymer/polymer" 88 | "","JavaScript","+564","mozilla/metrics-graphics" 89 | "","C#","+550","dotnet/corefx" 90 | "","C","+549","robertdavidgraham/masscan" 91 | "","Other","+545","interagent/http-api-design" 92 | "","C++","+545","googlei18n/libphonenumber" 93 | "","Python","+544","karpathy/neuraltalk" 94 | "","Objective-C","+539","cwRichardKim/RKNotificationHub" 95 | "","JavaScript","+539","globocom/clappr" 96 | "","Other","+535","johnpapa/angularjs-styleguide" 97 | "","JavaScript","+529","gionkunz/chartist-js" 98 | "","Python","+526","Dobiasd/articles" 99 | "","Other","+525","nstevens/androidguide" 100 | "","Python","+524","PressLabs/gitfs" 101 | "","JavaScript","+521","tobegit3hub/seagull" 102 | "","C","+520","okamstudio/godot" 103 | "","Python","+517","buildinspace/peru" 104 | "","C","+515","SOHUDBA/SOHU-DBProxy" 105 | "","CoffeeScript","+515","Pathgather/please-wait" 106 | "","CoffeeScript","+512","michelson/Dante" 107 | "","C","+510","citusdata/pg_shard" 108 | "","JavaScript","+510","allmobilize/amazeui" 109 | "","CSS","+504","zurb/foundation-apps" 110 | "","Java","+504","liaohuqiu/android-Ultra-Pull-To-Refresh" 111 | "","JavaScript","+503","Turfjs/turf" 112 | "","JavaScript","+501","Automattic/socket.io" 113 | "","Objective-C","+497","kevin-hirsch/KVNProgress" 114 | "","JavaScript","+496","josephernest/bigpicture.js" 115 | "","C","+491","cuber/ngx_http_google_filter_module" 116 | "","Ruby","+486","Homebrew/homebrew" 117 | "","Other","+484","fcambus/nginx-resources" 118 | "","JavaScript","+482","adobe/brackets" 119 | "","Rust","+480","gchp/iota" 120 | "","C","+480","orangeduck/libCello" 121 | "","JavaScript","+477","handsontable/handsontable" 122 | "","Other","+464","pazguille/offline-first" 123 | "","PHP","+461","laravel/laravel" 124 | "","Objective-C","+461","ianyh/Amethyst" 125 | "","Go","+456","docker/swarm" 126 | "","Python","+454","rg3/youtube-dl" 127 | "","Go","+450","GoogleCloudPlatform/kubernetes" 128 | "","JavaScript","+447","resume/resume.github.com" 129 | "","JavaScript","+436","getify/You-Dont-Know-JS" 130 | "","Java","+433","navasmdc/MaterialDesignLibrary" 131 | "","C++","+432","Overv/vramfs" 132 | "","Go","+427","golang/tools" 133 | "","Go","+411","influxdb/influxdb" 134 | "","Python","+410","django/django" 135 | "","Objective-C","+409","poolqf/PQFCustomLoaders" 136 | "","Other","+407","ziadoz/awesome-php" 137 | "","Go","+406","gogits/gogs" 138 | "","JavaScript","+403","strongloop/express" 139 | "","CSS","+401","vendocrat/PaymentFont" 140 | "","Java","+398","Malinskiy/SuperRecyclerView" 141 | "","Ruby","+397","jekyll/jekyll" 142 | "","JavaScript","+397","jquery/jquery" 143 | "","Objective-C","+395","AFNetworking/AFNetworking" 144 | "","Other","+395","github/roskomnadzor" 145 | "","Swift","+395","Alamofire/Alamofire" 146 | "","JavaScript","+392","fastmail/overture" 147 | "","C","+391","EarlGray/c4" 148 | "","Ruby","+388","rails/rails" 149 | "","C","+387","0intro/plan9" 150 | "","JavaScript","+387","FelisCatus/SwitchyOmega" 151 | "","CSS","+385","MacGapProject/MacGapProject.github.io" 152 | "","Python","+384","mitsuhiko/flask" 153 | "","Objective-C","+383","rsms/peertalk" 154 | "","JavaScript","+383","alexk111/SVG-Morpheus" 155 | "","Go","+381","surge/surgemq" 156 | "","JavaScript","+379","jashkenas/backbone" 157 | "","Java","+378","futurice/android-best-practices" 158 | "","JavaScript","+376","TryGhost/Ghost" 159 | "","Shell","+376","tj/git-extras" 160 | "","Java","+376","nostra13/Android-Universal-Image-Loader" 161 | "","Java","+374","groovy/groovy-core" 162 | "","Python","+373","clowwindy/shadowsocks" 163 | "","Go","+371","limetext/lime" 164 | "","JavaScript","+370","sahat/satellizer" 165 | "","Python","+369","ansible/ansible" 166 | "","JavaScript","+363","hakimel/reveal.js" 167 | "","Python","+363","rusthon/Rusthon" 168 | "","JavaScript","+363","moment/moment" 169 | "","Swift","+362","Ramotion/animated-tab-bar" 170 | "","JavaScript","+362","Unitech/PM2" 171 | "","C++","+361","yahoo/mdbm" 172 | "","PHP","+360","nemoTyrant/manong" 173 | "","JavaScript","+360","h5bp/html5-boilerplate" 174 | "","Java","+359","ksoichiro/Android-ObservableScrollView" 175 | "","Scala","+354","Netflix/atlas" 176 | "","Java","+354","google/guava" 177 | "","IDL","+353","krschultz/android-proguard-snippets" 178 | "","JavaScript","+353","silentrob/superscript" 179 | "","Java","+351","EnterpriseQualityCoding/FizzBuzzEnterpriseEdition" 180 | "","JavaScript","+350","mrdoob/three.js" 181 | "","Perl","+348","aui/font-spider" 182 | "","Python","+347","kennethreitz/requests" 183 | "","Java","+347","HazyResearch/deepdive" 184 | "","Python","+346","andersbll/deeppy" 185 | "","Go","+346","golang/mobile" 186 | "","PHP","+345","yiisoft/yii2" 187 | "","Python","+343","scrapy/scrapy" 188 | "","JavaScript","+343","markdown-it/markdown-it" 189 | "","JavaScript","+342","emberjs/ember.js" 190 | "","Go","+341","astaxie/build-web-application-with-golang" 191 | "","JavaScript","+340","ecomfe/echarts" 192 | "","C","+340","antirez/redis" 193 | "","JavaScript","+340","nnnick/Chart.js" 194 | "","Objective-C","+339","hackiftekhar/IQKeyboardManager" 195 | "","Java","+339","elasticsearch/elasticsearch" 196 | "","C++","+339","floooh/oryol" 197 | "","JavaScript","+337","caolan/async" 198 | "","JavaScript","+337","photonstorm/phaser" 199 | "","CSS","+336","tobiasahlin/SpinKit" 200 | "","JavaScript","+334","enaqx/awesome-react" 201 | "","Other","+332","bayandin/awesome-awesomeness" 202 | "","C++","+329","zhihu/kids" 203 | "","Python","+327","binux/pyspider" 204 | "","Python","+325","jakubroztocil/httpie" 205 | "","Go","+325","syncthing/syncthing" 206 | "","C","+325","robertdavidgraham/robdns" 207 | "","C++","+324","google/protobuf" 208 | "","Objective-C","+324","facebook/AsyncDisplayKit" 209 | "","CSS","+323","necolas/normalize.css" 210 | "","JavaScript","+322","webpack/webpack" 211 | "","CSS","+320","zurb/foundation" 212 | "","JavaScript","+319","facebook/flux" 213 | "","C","+318","SamyPesse/How-to-Make-a-Computer-Operating-System" 214 | "","PHP","+317","commando/dogpatch" 215 | "","Python","+317","sockeye44/instavpn" 216 | "","Java","+316","Rogero0o/MatchView" 217 | "","JavaScript","+316","angular-ui/bootstrap" 218 | "","Java","+315","AnderWeb/discreteSeekBar" 219 | "","CSS","+314","google/web-starter-kit" 220 | "","CSS","+314","t4t5/sweetalert" 221 | "","JavaScript","+314","angular-ui/ui-router" 222 | "","JavaScript","+312","grafana/grafana" 223 | "","Ruby","+311","discourse/discourse" 224 | "","JavaScript","+310","Matt-Esch/virtual-dom" 225 | "","JavaScript","+308","Prinzhorn/skrollr" 226 | "","Java","+305","Subito-it/Masaccio" 227 | "","JavaScript","+304","balderdashy/sails" 228 | "","JavaScript","+302","JexCheng/regulex" 229 | "","Go","+301","square/go-jose" 230 | "","Other","+297","AttackOnDobby/iOS-Core-Animation-Advanced-Techniques" 231 | "","Python","+296","The-Compiler/qutebrowser" 232 | "","Objective-C","+295","rs/SDWebImage" 233 | "","JavaScript","+295","ivaynberg/select2" 234 | "","JavaScript","+295","bartaz/impress.js" 235 | "","C++","+293","BVLC/caffe" 236 | "","Swift","+293","SwiftyJSON/SwiftyJSON" 237 | "","Stata","+292","txthinking/google-hosts" 238 | "","C++","+290","ariya/phantomjs" 239 | "","Objective-C","+288","kevinzhow/Waver" 240 | "","JavaScript","+286","angular/angular-seed" 241 | "","Objective-C","+286","ReactiveCocoa/ReactiveCocoa" 242 | "","JavaScript","+285","rackt/react-router" 243 | "","C","+285","antirez/shapeme" 244 | "","CSS","+285","yahoo/pure" 245 | "","JavaScript","+285","blueimp/jQuery-File-Upload" 246 | "","Objective-C","+285","Vinodh-G/ParallaxTableViewHeader" 247 | "","Java","+285","Manabu-GT/ExpandableTextView" 248 | "","Python","+285","writethedocs/docs" 249 | "","Objective-C++","+283","facebook/pop" 250 | "","Java","+282","google/iosched" 251 | "","Objective-C","+282","Masonry/Masonry" 252 | "","JavaScript","+282","tastejs/todomvc" 253 | "","Other","+281","Microsoft/dotnet" 254 | "","JavaScript","+281","zxlie/WeixinApi" 255 | "","Go","+280","coreos/etcd" 256 | "","JavaScript","+279","addyosmani/a11y" 257 | "","C++","+279","google/leveldb" 258 | "","CSS","+279","crushlovely/skyline" 259 | "","Other","+278","airbnb/javascript" 260 | "","Python","+278","facebook/chisel" 261 | "","Swift","+278","Ramotion/paper-switch" 262 | "","Other","+277","avelino/awesome-go" 263 | "","Java","+277","iluwatar/java-design-patterns" 264 | "","CSS","+277","lumapps/lumX" 265 | "","Go","+277","antonholmquist/jason" 266 | "","JavaScript","+277","6to5/6to5" 267 | "","JavaScript","+276","arokor/barn" 268 | "","C","+276","git/git" 269 | "","Java","+276","ReactiveX/RxJava" 270 | "","CSS","+275","matthieua/WOW" 271 | "","Other","+275","sindresorhus/awesome" 272 | "","C++","+275","facebook/hhvm" 273 | "","JavaScript","+273","jashkenas/underscore" 274 | "","JavaScript","+272","GianlucaGuarini/es6-project-starter-kit" 275 | "","Java","+272","square/picasso" 276 | "","Java","+272","greenrobot/EventBus" 277 | "","Scala","+272","apache/spark" 278 | "","Objective-C","+270","Carthage/Carthage" 279 | "","Python","+270","docker/fig" 280 | "","JavaScript","+270","GoodBoyDigital/pixi.js" 281 | "","Objective-C","+269","jeffh/Fox" 282 | "","JavaScript","+268","substack/node-browserify" 283 | "","JavaScript","+267","lodash/lodash" 284 | "","Other","+267","wasabeef/awesome-android-libraries" 285 | "","JavaScript","+267","kimmobrunfeldt/progressbar.js" 286 | "","Other","+266","justjavac/free-programming-books-zh_CN" 287 | "","JavaScript","+266","google/traceur-compiler" 288 | "","C","+264","scikit-learn/scikit-learn" 289 | "","JavaScript","+263","Modernizr/Modernizr" 290 | "","Go","+263","oniony/TMSU" 291 | "","VimL","+263","neovim/neovim" 292 | "","Go","+262","go-martini/martini" 293 | "","Objective-C","+262","BradLarson/GPUImage" 294 | "","JavaScript","+260","Reactive-Extensions/RxJS" 295 | "","JavaScript","+260","mikesall/charted" 296 | "","Java","+258","zxing/zxing" 297 | "","Python","+257","josephmisiti/awesome-machine-learning" 298 | "","C","+257","ggreer/the_silver_searcher" 299 | "","Java","+256","android-cn/android-open-project-analysis" 300 | "","JavaScript","+256","vvo/gifify" -------------------------------------------------------------------------------- /output/months.json: -------------------------------------------------------------------------------- 1 | [{"0":"","Language":"JavaScript","Change":"+5607","Name":"iojs/io.js"},{"0":"","Language":"Go","Change":"+5439","Name":"golang/go"},{"0":"","Language":"Other","Change":"+4581","Name":"prakhar1989/awesome-courses"},{"0":"","Language":"JavaScript","Change":"+4045","Name":"dimsemenov/PhotoSwipe"},{"0":"","Language":"PHP","Change":"+3284","Name":"isohuntto/openbay"},{"0":"","Language":"Bison","Change":"+2998","Name":"matz/streem"},{"0":"","Language":"C","Change":"+2625","Name":"mozilla/firefox-ios"},{"0":"","Language":"JavaScript","Change":"+2616","Name":"knsv/mermaid"},{"0":"","Language":"Ruby","Change":"+2564","Name":"outpunk/evil-icons"},{"0":"","Language":"CSS","Change":"+2563","Name":"dhg/Skeleton"},{"0":"","Language":"Other","Change":"+2219","Name":"h5bp/Front-end-Developer-Interview-Questions"},{"0":"","Language":"JavaScript","Change":"+1888","Name":"neilj/Squire"},{"0":"","Language":"JavaScript","Change":"+1873","Name":"Voog/wysihtml"},{"0":"","Language":"Other","Change":"+1745","Name":"wasabeef/awesome-android-ui"},{"0":"","Language":"Ruby","Change":"+1631","Name":"sagivo/algorithms"},{"0":"","Language":"Other","Change":"+1494","Name":"vhf/free-programming-books"},{"0":"","Language":"CSS","Change":"+1471","Name":"kumailht/flakes"},{"0":"","Language":"Other","Change":"+1460","Name":"SamHerbert/SVG-Loaders"},{"0":"","Language":"Other","Change":"+1441","Name":"caesar0301/awesome-public-datasets"},{"0":"","Language":"Python","Change":"+1414","Name":"jeffkaufman/icdiff"},{"0":"","Language":"CSS","Change":"+1406","Name":"FezVrasta/bootstrap-material-design"},{"0":"","Language":"JavaScript","Change":"+1375","Name":"angular/angular.js"},{"0":"","Language":"CSS","Change":"+1344","Name":"twbs/bootstrap"},{"0":"","Language":"Python","Change":"+1315","Name":"emirozer/fake2db"},{"0":"","Language":"JavaScript","Change":"+1233","Name":"google/end-to-end"},{"0":"","Language":"JavaScript","Change":"+1197","Name":"paulrouget/firefox.html"},{"0":"","Language":"JavaScript","Change":"+1183","Name":"gorhill/uBlock"},{"0":"","Language":"JavaScript","Change":"+1146","Name":"facebook/react"},{"0":"","Language":"C++","Change":"+1110","Name":"atom/atom-shell"},{"0":"","Language":"CSS","Change":"+1082","Name":"JedWatson/touchstonejs"},{"0":"","Language":"Python","Change":"+1082","Name":"Tribler/tribler"},{"0":"","Language":"PHP","Change":"+1079","Name":"flarum/core"},{"0":"","Language":"Other","Change":"+1061","Name":"papers-we-love/papers-we-love"},{"0":"","Language":"Go","Change":"+1048","Name":"coreos/rocket"},{"0":"","Language":"JavaScript","Change":"+1045","Name":"Semantic-Org/Semantic-UI"},{"0":"","Language":"JavaScript","Change":"+1020","Name":"mbostock/d3"},{"0":"","Language":"JavaScript","Change":"+968","Name":"zzarcon/focusable"},{"0":"","Language":"Swift","Change":"+912","Name":"lexrus/VPNOn"},{"0":"","Language":"Go","Change":"+899","Name":"docker/docker"},{"0":"","Language":"JavaScript","Change":"+869","Name":"svaarala/duktape"},{"0":"","Language":"Rust","Change":"+863","Name":"Kintaro/wtftw"},{"0":"","Language":"JavaScript","Change":"+858","Name":"driftyco/ionic"},{"0":"","Language":"C","Change":"+850","Name":"lpereira/lwan"},{"0":"","Language":"Python","Change":"+841","Name":"redodo/tortilla"},{"0":"","Language":"Python","Change":"+838","Name":"mewwts/addict"},{"0":"","Language":"CSS","Change":"+831","Name":"Dogfalo/materialize"},{"0":"","Language":"Objective-C","Change":"+790","Name":"mutualmobile/MMWormhole"},{"0":"","Language":"Go","Change":"+777","Name":"docker/machine"},{"0":"","Language":"JavaScript","Change":"+772","Name":"angular/material"},{"0":"","Language":"C","Change":"+766","Name":"torvalds/linux"},{"0":"","Language":"Go","Change":"+765","Name":"shazow/ssh-chat"},{"0":"","Language":"Python","Change":"+761","Name":"goagent/goagent"},{"0":"","Language":"Ruby","Change":"+744","Name":"elabs/refile"},{"0":"","Language":"CSS","Change":"+744","Name":"FortAwesome/Font-Awesome"},{"0":"","Language":"C","Change":"+737","Name":"h2o/h2o"},{"0":"","Language":"Python","Change":"+729","Name":"vinta/awesome-python"},{"0":"","Language":"Shell","Change":"+722","Name":"phusion/traveling-ruby"},{"0":"","Language":"C++","Change":"+711","Name":"rogerwang/node-webkit"},{"0":"","Language":"Python","Change":"+711","Name":"i2y/mochi"},{"0":"","Language":"Other","Change":"+698","Name":"teracyhq/wireframe"},{"0":"","Language":"JavaScript","Change":"+682","Name":"keen/dashboards"},{"0":"","Language":"CSS","Change":"+674","Name":"daneden/animate.css"},{"0":"","Language":"Go","Change":"+674","Name":"stripe/aws-go"},{"0":"","Language":"JavaScript","Change":"+672","Name":"athyuttamre/tab-snooze"},{"0":"","Language":"JavaScript","Change":"+671","Name":"alvarotrigo/fullPage.js"},{"0":"","Language":"JavaScript","Change":"+669","Name":"auchenberg/chrome-devtools-app"},{"0":"","Language":"Other","Change":"+668","Name":"kozross/awesome-c"},{"0":"","Language":"JavaScript","Change":"+665","Name":"meteor/meteor"},{"0":"","Language":"Other","Change":"+660","Name":"Trinea/android-open-project"},{"0":"","Language":"Go","Change":"+658","Name":"boltdb/bolt"},{"0":"","Language":"JavaScript","Change":"+655","Name":"joyent/node"},{"0":"","Language":"C#","Change":"+644","Name":"TheBerkin/Rant"},{"0":"","Language":"Rust","Change":"+639","Name":"rust-lang/rust"},{"0":"","Language":"JavaScript","Change":"+637","Name":"callemall/material-ui"},{"0":"","Language":"CSS","Change":"+634","Name":"kumailht/gridforms"},{"0":"","Language":"Objective-C","Change":"+633","Name":"rickytan/RTImageAssets"},{"0":"","Language":"JavaScript","Change":"+630","Name":"RubaXa/Sortable"},{"0":"","Language":"CoffeeScript","Change":"+626","Name":"atom/atom"},{"0":"","Language":"CSS","Change":"+626","Name":"google/material-design-icons"},{"0":"","Language":"Go","Change":"+625","Name":"squiidz/bone"},{"0":"","Language":"Shell","Change":"+599","Name":"robbyrussell/oh-my-zsh"},{"0":"","Language":"Objective-C","Change":"+599","Name":"kevinzhow/PNChart"},{"0":"","Language":"JavaScript","Change":"+597","Name":"substack/stream-handbook"},{"0":"","Language":"JavaScript","Change":"+586","Name":"gulpjs/gulp"},{"0":"","Language":"Other","Change":"+575","Name":"github/gitignore"},{"0":"","Language":"JavaScript","Change":"+568","Name":"Polymer/polymer"},{"0":"","Language":"JavaScript","Change":"+564","Name":"mozilla/metrics-graphics"},{"0":"","Language":"C#","Change":"+550","Name":"dotnet/corefx"},{"0":"","Language":"C","Change":"+549","Name":"robertdavidgraham/masscan"},{"0":"","Language":"Other","Change":"+545","Name":"interagent/http-api-design"},{"0":"","Language":"C++","Change":"+545","Name":"googlei18n/libphonenumber"},{"0":"","Language":"Python","Change":"+544","Name":"karpathy/neuraltalk"},{"0":"","Language":"Objective-C","Change":"+539","Name":"cwRichardKim/RKNotificationHub"},{"0":"","Language":"JavaScript","Change":"+539","Name":"globocom/clappr"},{"0":"","Language":"Other","Change":"+535","Name":"johnpapa/angularjs-styleguide"},{"0":"","Language":"JavaScript","Change":"+529","Name":"gionkunz/chartist-js"},{"0":"","Language":"Python","Change":"+526","Name":"Dobiasd/articles"},{"0":"","Language":"Other","Change":"+525","Name":"nstevens/androidguide"},{"0":"","Language":"Python","Change":"+524","Name":"PressLabs/gitfs"},{"0":"","Language":"JavaScript","Change":"+521","Name":"tobegit3hub/seagull"},{"0":"","Language":"C","Change":"+520","Name":"okamstudio/godot"},{"0":"","Language":"Python","Change":"+517","Name":"buildinspace/peru"},{"0":"","Language":"C","Change":"+515","Name":"SOHUDBA/SOHU-DBProxy"},{"0":"","Language":"CoffeeScript","Change":"+515","Name":"Pathgather/please-wait"},{"0":"","Language":"CoffeeScript","Change":"+512","Name":"michelson/Dante"},{"0":"","Language":"C","Change":"+510","Name":"citusdata/pg_shard"},{"0":"","Language":"JavaScript","Change":"+510","Name":"allmobilize/amazeui"},{"0":"","Language":"CSS","Change":"+504","Name":"zurb/foundation-apps"},{"0":"","Language":"Java","Change":"+504","Name":"liaohuqiu/android-Ultra-Pull-To-Refresh"},{"0":"","Language":"JavaScript","Change":"+503","Name":"Turfjs/turf"},{"0":"","Language":"JavaScript","Change":"+501","Name":"Automattic/socket.io"},{"0":"","Language":"Objective-C","Change":"+497","Name":"kevin-hirsch/KVNProgress"},{"0":"","Language":"JavaScript","Change":"+496","Name":"josephernest/bigpicture.js"},{"0":"","Language":"C","Change":"+491","Name":"cuber/ngx_http_google_filter_module"},{"0":"","Language":"Ruby","Change":"+486","Name":"Homebrew/homebrew"},{"0":"","Language":"Other","Change":"+484","Name":"fcambus/nginx-resources"},{"0":"","Language":"JavaScript","Change":"+482","Name":"adobe/brackets"},{"0":"","Language":"Rust","Change":"+480","Name":"gchp/iota"},{"0":"","Language":"C","Change":"+480","Name":"orangeduck/libCello"},{"0":"","Language":"JavaScript","Change":"+477","Name":"handsontable/handsontable"},{"0":"","Language":"Other","Change":"+464","Name":"pazguille/offline-first"},{"0":"","Language":"PHP","Change":"+461","Name":"laravel/laravel"},{"0":"","Language":"Objective-C","Change":"+461","Name":"ianyh/Amethyst"},{"0":"","Language":"Go","Change":"+456","Name":"docker/swarm"},{"0":"","Language":"Python","Change":"+454","Name":"rg3/youtube-dl"},{"0":"","Language":"Go","Change":"+450","Name":"GoogleCloudPlatform/kubernetes"},{"0":"","Language":"JavaScript","Change":"+447","Name":"resume/resume.github.com"},{"0":"","Language":"JavaScript","Change":"+436","Name":"getify/You-Dont-Know-JS"},{"0":"","Language":"Java","Change":"+433","Name":"navasmdc/MaterialDesignLibrary"},{"0":"","Language":"C++","Change":"+432","Name":"Overv/vramfs"},{"0":"","Language":"Go","Change":"+427","Name":"golang/tools"},{"0":"","Language":"Go","Change":"+411","Name":"influxdb/influxdb"},{"0":"","Language":"Python","Change":"+410","Name":"django/django"},{"0":"","Language":"Objective-C","Change":"+409","Name":"poolqf/PQFCustomLoaders"},{"0":"","Language":"Other","Change":"+407","Name":"ziadoz/awesome-php"},{"0":"","Language":"Go","Change":"+406","Name":"gogits/gogs"},{"0":"","Language":"JavaScript","Change":"+403","Name":"strongloop/express"},{"0":"","Language":"CSS","Change":"+401","Name":"vendocrat/PaymentFont"},{"0":"","Language":"Java","Change":"+398","Name":"Malinskiy/SuperRecyclerView"},{"0":"","Language":"Ruby","Change":"+397","Name":"jekyll/jekyll"},{"0":"","Language":"JavaScript","Change":"+397","Name":"jquery/jquery"},{"0":"","Language":"Objective-C","Change":"+395","Name":"AFNetworking/AFNetworking"},{"0":"","Language":"Other","Change":"+395","Name":"github/roskomnadzor"},{"0":"","Language":"Swift","Change":"+395","Name":"Alamofire/Alamofire"},{"0":"","Language":"JavaScript","Change":"+392","Name":"fastmail/overture"},{"0":"","Language":"C","Change":"+391","Name":"EarlGray/c4"},{"0":"","Language":"Ruby","Change":"+388","Name":"rails/rails"},{"0":"","Language":"C","Change":"+387","Name":"0intro/plan9"},{"0":"","Language":"JavaScript","Change":"+387","Name":"FelisCatus/SwitchyOmega"},{"0":"","Language":"CSS","Change":"+385","Name":"MacGapProject/MacGapProject.github.io"},{"0":"","Language":"Python","Change":"+384","Name":"mitsuhiko/flask"},{"0":"","Language":"Objective-C","Change":"+383","Name":"rsms/peertalk"},{"0":"","Language":"JavaScript","Change":"+383","Name":"alexk111/SVG-Morpheus"},{"0":"","Language":"Go","Change":"+381","Name":"surge/surgemq"},{"0":"","Language":"JavaScript","Change":"+379","Name":"jashkenas/backbone"},{"0":"","Language":"Java","Change":"+378","Name":"futurice/android-best-practices"},{"0":"","Language":"JavaScript","Change":"+376","Name":"TryGhost/Ghost"},{"0":"","Language":"Shell","Change":"+376","Name":"tj/git-extras"},{"0":"","Language":"Java","Change":"+376","Name":"nostra13/Android-Universal-Image-Loader"},{"0":"","Language":"Java","Change":"+374","Name":"groovy/groovy-core"},{"0":"","Language":"Python","Change":"+373","Name":"clowwindy/shadowsocks"},{"0":"","Language":"Go","Change":"+371","Name":"limetext/lime"},{"0":"","Language":"JavaScript","Change":"+370","Name":"sahat/satellizer"},{"0":"","Language":"Python","Change":"+369","Name":"ansible/ansible"},{"0":"","Language":"JavaScript","Change":"+363","Name":"hakimel/reveal.js"},{"0":"","Language":"Python","Change":"+363","Name":"rusthon/Rusthon"},{"0":"","Language":"JavaScript","Change":"+363","Name":"moment/moment"},{"0":"","Language":"Swift","Change":"+362","Name":"Ramotion/animated-tab-bar"},{"0":"","Language":"JavaScript","Change":"+362","Name":"Unitech/PM2"},{"0":"","Language":"C++","Change":"+361","Name":"yahoo/mdbm"},{"0":"","Language":"PHP","Change":"+360","Name":"nemoTyrant/manong"},{"0":"","Language":"JavaScript","Change":"+360","Name":"h5bp/html5-boilerplate"},{"0":"","Language":"Java","Change":"+359","Name":"ksoichiro/Android-ObservableScrollView"},{"0":"","Language":"Scala","Change":"+354","Name":"Netflix/atlas"},{"0":"","Language":"Java","Change":"+354","Name":"google/guava"},{"0":"","Language":"IDL","Change":"+353","Name":"krschultz/android-proguard-snippets"},{"0":"","Language":"JavaScript","Change":"+353","Name":"silentrob/superscript"},{"0":"","Language":"Java","Change":"+351","Name":"EnterpriseQualityCoding/FizzBuzzEnterpriseEdition"},{"0":"","Language":"JavaScript","Change":"+350","Name":"mrdoob/three.js"},{"0":"","Language":"Perl","Change":"+348","Name":"aui/font-spider"},{"0":"","Language":"Python","Change":"+347","Name":"kennethreitz/requests"},{"0":"","Language":"Java","Change":"+347","Name":"HazyResearch/deepdive"},{"0":"","Language":"Python","Change":"+346","Name":"andersbll/deeppy"},{"0":"","Language":"Go","Change":"+346","Name":"golang/mobile"},{"0":"","Language":"PHP","Change":"+345","Name":"yiisoft/yii2"},{"0":"","Language":"Python","Change":"+343","Name":"scrapy/scrapy"},{"0":"","Language":"JavaScript","Change":"+343","Name":"markdown-it/markdown-it"},{"0":"","Language":"JavaScript","Change":"+342","Name":"emberjs/ember.js"},{"0":"","Language":"Go","Change":"+341","Name":"astaxie/build-web-application-with-golang"},{"0":"","Language":"JavaScript","Change":"+340","Name":"ecomfe/echarts"},{"0":"","Language":"C","Change":"+340","Name":"antirez/redis"},{"0":"","Language":"JavaScript","Change":"+340","Name":"nnnick/Chart.js"},{"0":"","Language":"Objective-C","Change":"+339","Name":"hackiftekhar/IQKeyboardManager"},{"0":"","Language":"Java","Change":"+339","Name":"elasticsearch/elasticsearch"},{"0":"","Language":"C++","Change":"+339","Name":"floooh/oryol"},{"0":"","Language":"JavaScript","Change":"+337","Name":"caolan/async"},{"0":"","Language":"JavaScript","Change":"+337","Name":"photonstorm/phaser"},{"0":"","Language":"CSS","Change":"+336","Name":"tobiasahlin/SpinKit"},{"0":"","Language":"JavaScript","Change":"+334","Name":"enaqx/awesome-react"},{"0":"","Language":"Other","Change":"+332","Name":"bayandin/awesome-awesomeness"},{"0":"","Language":"C++","Change":"+329","Name":"zhihu/kids"},{"0":"","Language":"Python","Change":"+327","Name":"binux/pyspider"},{"0":"","Language":"Python","Change":"+325","Name":"jakubroztocil/httpie"},{"0":"","Language":"Go","Change":"+325","Name":"syncthing/syncthing"},{"0":"","Language":"C","Change":"+325","Name":"robertdavidgraham/robdns"},{"0":"","Language":"C++","Change":"+324","Name":"google/protobuf"},{"0":"","Language":"Objective-C","Change":"+324","Name":"facebook/AsyncDisplayKit"},{"0":"","Language":"CSS","Change":"+323","Name":"necolas/normalize.css"},{"0":"","Language":"JavaScript","Change":"+322","Name":"webpack/webpack"},{"0":"","Language":"CSS","Change":"+320","Name":"zurb/foundation"},{"0":"","Language":"JavaScript","Change":"+319","Name":"facebook/flux"},{"0":"","Language":"C","Change":"+318","Name":"SamyPesse/How-to-Make-a-Computer-Operating-System"},{"0":"","Language":"PHP","Change":"+317","Name":"commando/dogpatch"},{"0":"","Language":"Python","Change":"+317","Name":"sockeye44/instavpn"},{"0":"","Language":"Java","Change":"+316","Name":"Rogero0o/MatchView"},{"0":"","Language":"JavaScript","Change":"+316","Name":"angular-ui/bootstrap"},{"0":"","Language":"Java","Change":"+315","Name":"AnderWeb/discreteSeekBar"},{"0":"","Language":"CSS","Change":"+314","Name":"google/web-starter-kit"},{"0":"","Language":"CSS","Change":"+314","Name":"t4t5/sweetalert"},{"0":"","Language":"JavaScript","Change":"+314","Name":"angular-ui/ui-router"},{"0":"","Language":"JavaScript","Change":"+312","Name":"grafana/grafana"},{"0":"","Language":"Ruby","Change":"+311","Name":"discourse/discourse"},{"0":"","Language":"JavaScript","Change":"+310","Name":"Matt-Esch/virtual-dom"},{"0":"","Language":"JavaScript","Change":"+308","Name":"Prinzhorn/skrollr"},{"0":"","Language":"Java","Change":"+305","Name":"Subito-it/Masaccio"},{"0":"","Language":"JavaScript","Change":"+304","Name":"balderdashy/sails"},{"0":"","Language":"JavaScript","Change":"+302","Name":"JexCheng/regulex"},{"0":"","Language":"Go","Change":"+301","Name":"square/go-jose"},{"0":"","Language":"Other","Change":"+297","Name":"AttackOnDobby/iOS-Core-Animation-Advanced-Techniques"},{"0":"","Language":"Python","Change":"+296","Name":"The-Compiler/qutebrowser"},{"0":"","Language":"Objective-C","Change":"+295","Name":"rs/SDWebImage"},{"0":"","Language":"JavaScript","Change":"+295","Name":"ivaynberg/select2"},{"0":"","Language":"JavaScript","Change":"+295","Name":"bartaz/impress.js"},{"0":"","Language":"C++","Change":"+293","Name":"BVLC/caffe"},{"0":"","Language":"Swift","Change":"+293","Name":"SwiftyJSON/SwiftyJSON"},{"0":"","Language":"Stata","Change":"+292","Name":"txthinking/google-hosts"},{"0":"","Language":"C++","Change":"+290","Name":"ariya/phantomjs"},{"0":"","Language":"Objective-C","Change":"+288","Name":"kevinzhow/Waver"},{"0":"","Language":"JavaScript","Change":"+286","Name":"angular/angular-seed"},{"0":"","Language":"Objective-C","Change":"+286","Name":"ReactiveCocoa/ReactiveCocoa"},{"0":"","Language":"JavaScript","Change":"+285","Name":"rackt/react-router"},{"0":"","Language":"C","Change":"+285","Name":"antirez/shapeme"},{"0":"","Language":"CSS","Change":"+285","Name":"yahoo/pure"},{"0":"","Language":"JavaScript","Change":"+285","Name":"blueimp/jQuery-File-Upload"},{"0":"","Language":"Objective-C","Change":"+285","Name":"Vinodh-G/ParallaxTableViewHeader"},{"0":"","Language":"Java","Change":"+285","Name":"Manabu-GT/ExpandableTextView"},{"0":"","Language":"Python","Change":"+285","Name":"writethedocs/docs"},{"0":"","Language":"Objective-C++","Change":"+283","Name":"facebook/pop"},{"0":"","Language":"Java","Change":"+282","Name":"google/iosched"},{"0":"","Language":"Objective-C","Change":"+282","Name":"Masonry/Masonry"},{"0":"","Language":"JavaScript","Change":"+282","Name":"tastejs/todomvc"},{"0":"","Language":"Other","Change":"+281","Name":"Microsoft/dotnet"},{"0":"","Language":"JavaScript","Change":"+281","Name":"zxlie/WeixinApi"},{"0":"","Language":"Go","Change":"+280","Name":"coreos/etcd"},{"0":"","Language":"JavaScript","Change":"+279","Name":"addyosmani/a11y"},{"0":"","Language":"C++","Change":"+279","Name":"google/leveldb"},{"0":"","Language":"CSS","Change":"+279","Name":"crushlovely/skyline"},{"0":"","Language":"Other","Change":"+278","Name":"airbnb/javascript"},{"0":"","Language":"Python","Change":"+278","Name":"facebook/chisel"},{"0":"","Language":"Swift","Change":"+278","Name":"Ramotion/paper-switch"},{"0":"","Language":"Other","Change":"+277","Name":"avelino/awesome-go"},{"0":"","Language":"Java","Change":"+277","Name":"iluwatar/java-design-patterns"},{"0":"","Language":"CSS","Change":"+277","Name":"lumapps/lumX"},{"0":"","Language":"Go","Change":"+277","Name":"antonholmquist/jason"},{"0":"","Language":"JavaScript","Change":"+277","Name":"6to5/6to5"},{"0":"","Language":"JavaScript","Change":"+276","Name":"arokor/barn"},{"0":"","Language":"C","Change":"+276","Name":"git/git"},{"0":"","Language":"Java","Change":"+276","Name":"ReactiveX/RxJava"},{"0":"","Language":"CSS","Change":"+275","Name":"matthieua/WOW"},{"0":"","Language":"Other","Change":"+275","Name":"sindresorhus/awesome"},{"0":"","Language":"C++","Change":"+275","Name":"facebook/hhvm"},{"0":"","Language":"JavaScript","Change":"+273","Name":"jashkenas/underscore"},{"0":"","Language":"JavaScript","Change":"+272","Name":"GianlucaGuarini/es6-project-starter-kit"},{"0":"","Language":"Java","Change":"+272","Name":"square/picasso"},{"0":"","Language":"Java","Change":"+272","Name":"greenrobot/EventBus"},{"0":"","Language":"Scala","Change":"+272","Name":"apache/spark"},{"0":"","Language":"Objective-C","Change":"+270","Name":"Carthage/Carthage"},{"0":"","Language":"Python","Change":"+270","Name":"docker/fig"},{"0":"","Language":"JavaScript","Change":"+270","Name":"GoodBoyDigital/pixi.js"},{"0":"","Language":"Objective-C","Change":"+269","Name":"jeffh/Fox"},{"0":"","Language":"JavaScript","Change":"+268","Name":"substack/node-browserify"},{"0":"","Language":"JavaScript","Change":"+267","Name":"lodash/lodash"},{"0":"","Language":"Other","Change":"+267","Name":"wasabeef/awesome-android-libraries"},{"0":"","Language":"JavaScript","Change":"+267","Name":"kimmobrunfeldt/progressbar.js"},{"0":"","Language":"Other","Change":"+266","Name":"justjavac/free-programming-books-zh_CN"},{"0":"","Language":"JavaScript","Change":"+266","Name":"google/traceur-compiler"},{"0":"","Language":"C","Change":"+264","Name":"scikit-learn/scikit-learn"},{"0":"","Language":"JavaScript","Change":"+263","Name":"Modernizr/Modernizr"},{"0":"","Language":"Go","Change":"+263","Name":"oniony/TMSU"},{"0":"","Language":"VimL","Change":"+263","Name":"neovim/neovim"},{"0":"","Language":"Go","Change":"+262","Name":"go-martini/martini"},{"0":"","Language":"Objective-C","Change":"+262","Name":"BradLarson/GPUImage"},{"0":"","Language":"JavaScript","Change":"+260","Name":"Reactive-Extensions/RxJS"},{"0":"","Language":"JavaScript","Change":"+260","Name":"mikesall/charted"},{"0":"","Language":"Java","Change":"+258","Name":"zxing/zxing"},{"0":"","Language":"Python","Change":"+257","Name":"josephmisiti/awesome-machine-learning"},{"0":"","Language":"C","Change":"+257","Name":"ggreer/the_silver_searcher"},{"0":"","Language":"Java","Change":"+256","Name":"android-cn/android-open-project-analysis"},{"0":"","Language":"JavaScript","Change":"+256","Name":"vvo/gifify"}] -------------------------------------------------------------------------------- /output/weeks.csv: -------------------------------------------------------------------------------- 1 | "0","Language","Change","Name" 2 | "","Other","+4038","prakhar1989/awesome-courses" 3 | "","Other","+1717","wasabeef/awesome-android-ui" 4 | "","PHP","+1445","isohuntto/openbay" 5 | "","JavaScript","+1045","gorhill/uBlock" 6 | "","Swift","+778","lexrus/VPNOn" 7 | "","Other","+750","h5bp/Front-end-Developer-Interview-Questions" 8 | "","JavaScript","+669","auchenberg/chrome-devtools-app" 9 | "","Python","+522","Dobiasd/articles" 10 | "","CoffeeScript","+514","Pathgather/please-wait" 11 | "","Other","+478","fcambus/nginx-resources" 12 | "","C","+466","robertdavidgraham/masscan" 13 | "","Ruby","+462","sagivo/algorithms" 14 | "","C","+461","orangeduck/libCello" 15 | "","C","+369","h2o/h2o" 16 | "","Other","+358","papers-we-love/papers-we-love" 17 | "","JavaScript","+350","alvarotrigo/fullPage.js" 18 | "","Other","+349","vhf/free-programming-books" 19 | "","Objective-C","+341","cwRichardKim/RKNotificationHub" 20 | "","C","+323","robertdavidgraham/robdns" 21 | "","PHP","+316","flarum/core" 22 | "","CSS","+273","twbs/bootstrap" 23 | "","Other","+267","wasabeef/awesome-android-libraries" 24 | "","Objective-C","+267","hackiftekhar/IQKeyboardManager" 25 | "","PHP","+261","nemoTyrant/manong" 26 | "","Objective-C","+229","atljeremy/JFMinimalNotifications" 27 | "","JavaScript","+228","angular/angular.js" 28 | "","Python","+215","vinta/awesome-python" 29 | "","Python","+212","goagent/goagent" 30 | "","C++","+203","Qihoo360/phptrace" 31 | "","CSS","+202","tobiasahlin/SpinKit" 32 | "","C++","+200","floooh/oryol" 33 | "","Common Lisp","+197","fukamachi/woo" 34 | "","JavaScript","+195","cachethq/Cachet" 35 | "","JavaScript","+194","facebook/react" 36 | "","Objective-C","+194","kevinzhow/PNChart" 37 | "","Java","+193","oli107/material-range-bar" 38 | "","JavaScript","+190","majodev/google-webfonts-helper" 39 | "","JavaScript","+186","RubaXa/Sortable" 40 | "","C++","+185","atom/atom-shell" 41 | "","JavaScript","+183","leanote/leanote" 42 | "","JavaScript","+183","mbostock/d3" 43 | "","C","+180","lpereira/lwan" 44 | "","JavaScript","+177","mmastrac/webfont-dl" 45 | "","C++","+176","rogerwang/node-webkit" 46 | "","JavaScript","+173","gorhill/uMatrix" 47 | "","Go","+167","golang/go" 48 | "","JavaScript","+163","markdown-it/markdown-it" 49 | "","JavaScript","+159","knsv/mermaid" 50 | "","Haskell","+155","begriffs/postgrest" 51 | "","CSS","+155","Dogfalo/materialize" 52 | "","JavaScript","+154","FelisCatus/SwitchyOmega" 53 | "","JavaScript","+152","Voog/wysihtml" 54 | "","Go","+152","docker/docker" 55 | "","Objective-C","+151","kconner/KMCGeigerCounter" 56 | "","CSS","+151","FortAwesome/Font-Awesome" 57 | "","Objective-C","+150","FabrizioBrancati/BFKit" 58 | "","Other","+148","StevenSLXie/Tutorials-for-Web-Developers" 59 | "","Other","+146","Trinea/android-open-project" 60 | "","C","+146","torvalds/linux" 61 | "","JavaScript","+141","driftyco/ionic" 62 | "","Erlang","+139","lfex/py" 63 | "","CSS","+138","daneden/animate.css" 64 | "","JavaScript","+137","ecomfe/echarts" 65 | "","Objective-C","+136","Flipboard/FLAnimatedImage" 66 | "","Haskell","+136","jbarrow/LambdaNet" 67 | "","JavaScript","+135","iojs/io.js" 68 | "","Objective-C","+133","sibahota059/SPHChatCollectionView" 69 | "","Java","+131","ongakuer/CircleIndicator" 70 | "","Other","+130","kozross/awesome-cl" 71 | "","C++","+128","SFTtech/openage" 72 | "","JavaScript","+126","dimsemenov/PhotoSwipe" 73 | "","Python","+126","jesolem/PCV" 74 | "","Other","+125","ziadoz/awesome-php" 75 | "","CoffeeScript","+125","atom/atom" 76 | "","JavaScript","+123","STRML/react-grid-layout" 77 | "","JavaScript","+122","angular/material" 78 | "","Other","+121","github/gitignore" 79 | "","JavaScript","+120","neilj/Squire" 80 | "","Python","+120","emirozer/fake2db" 81 | "","CSS","+119","FezVrasta/bootstrap-material-design" 82 | "","JavaScript","+119","meteor/meteor" 83 | "","Objective-C","+119","rsms/peertalk" 84 | "","JavaScript","+119","xat/castnow" 85 | "","CSS","+118","google/material-design-icons" 86 | "","Other","+114","interagent/http-api-design" 87 | "","JavaScript","+113","gulpjs/gulp" 88 | "","Shell","+112","robbyrussell/oh-my-zsh" 89 | "","Python","+111","jakubroztocil/httpie" 90 | "","CSS","+111","Semantic-Org/Semantic-UI" 91 | "","Java","+111","neokree/MaterialNavigationDrawer" 92 | "","JavaScript","+110","callemall/material-ui" 93 | "","CSS","+109","dhg/Skeleton" 94 | "","C++","+108","botonchou/libdnn" 95 | "","Other","+108","AttackOnDobby/iOS-Core-Animation-Advanced-Techniques" 96 | "","Java","+107","wangjiegulu/DraggableFlagView" 97 | "","JavaScript","+105","typpo/textbelt" 98 | "","JavaScript","+104","t32k/material-design-color-palette-sketch-plugin" 99 | "","Java","+103","ksoichiro/Android-ObservableScrollView" 100 | "","Python","+102","aothman/hiscore" 101 | "","Rust","+101","rust-lang/rust" 102 | "","Ruby","+101","inf0rmer/blanket" 103 | "","Swift","+100","indragiek/DominantColor" 104 | "","Scala","+100","lihaoyi/Scalatex" 105 | "","Nimrod","+99","Araq/Nim" 106 | "","Other","+99","qyuhen/book" 107 | "","JavaScript","+98","joyent/node" 108 | "","JavaScript","+97","Matt-Esch/virtual-dom" 109 | "","JavaScript","+96","keen/dashboards" 110 | "","Ruby","+96","cantino/huginn" 111 | "","JavaScript","+95","Automattic/socket.io" 112 | "","JavaScript","+95","slap-editor/slap" 113 | "","C","+95","skeeto/interactive-c-demo" 114 | "","C","+94","mozilla/mozjpeg" 115 | "","Python","+94","shadowsocks/shadowsocks" 116 | "","JavaScript","+93","Polymer/polymer" 117 | "","JavaScript","+92","Turfjs/turf" 118 | "","Java","+91","groovy/groovy-core" 119 | "","JavaScript","+91","staltz/cycle" 120 | "","JavaScript","+91","Leask/BRICKS" 121 | "","Python","+90","mitsuhiko/flask" 122 | "","JavaScript","+89","brentvatne/tinder-netflix" 123 | "","Shell","+89","chengr28/RevokeChinaCerts" 124 | "","Python","+88","django/django" 125 | "","Other","+88","cyberwizardinstitute/workshops" 126 | "","JavaScript","+87","resume/resume.github.com" 127 | "","Other","+87","bayandin/awesome-awesomeness" 128 | "","Python","+85","vishnevskiy/ElixirSublime" 129 | "","Other","+84","caesar0301/awesome-public-datasets" 130 | "","Go","+84","dockerboard/dockerboard" 131 | "","JavaScript","+84","cssdream/cssgrace" 132 | "","Swift","+83","ipader/SwiftGuide" 133 | "","Ruby","+83","Homebrew/homebrew" 134 | "","Java","+82","iluwatar/java-design-patterns" 135 | "","Objective-C","+82","jamztang/CSStickyHeaderFlowLayout" 136 | "","PHP","+81","laravel/laravel" 137 | "","Python","+81","kennethreitz/requests" 138 | "","JavaScript","+80","strongloop/express" 139 | "","JavaScript","+79","TryGhost/Ghost" 140 | "","JavaScript","+79","google/end-to-end" 141 | "","Shell","+78","dnschneid/crouton" 142 | "","Go","+78","influxdb/influxdb" 143 | "","JavaScript","+78","grafana/grafana" 144 | "","JavaScript","+78","h5bp/html5-boilerplate" 145 | "","JavaScript","+77","enaqx/awesome-react" 146 | "","Objective-C","+77","samvermette/SVPullToRefresh" 147 | "","Swift","+76","Carthage/Carthage" 148 | "","Python","+76","ansible/ansible" 149 | "","Go","+75","hybridgroup/gobot" 150 | "","Objective-C","+75","rickytan/RTImageAssets" 151 | "","JavaScript","+75","moment/moment" 152 | "","Other","+75","johnpapa/angularjs-styleguide" 153 | "","JavaScript","+75","jashkenas/backbone" 154 | "","Perl","+75","aui/font-spider" 155 | "","JavaScript","+75","substack/stream-handbook" 156 | "","JavaScript","+74","zxlie/WeixinApi" 157 | "","JavaScript","+74","MaciejCzyzewski/hyhyhy" 158 | "","Ruby","+74","rails/rails" 159 | "","Java","+73","navasmdc/MaterialDesignLibrary" 160 | "","PHP","+73","Roave/SecurityAdvisories" 161 | "","JavaScript","+73","af/JSnoX" 162 | "","CSS","+73","necolas/normalize.css" 163 | "","Java","+72","naman14/PlayNewsStandDemo" 164 | "","Java","+72","nostra13/Android-Universal-Image-Loader" 165 | "","Clojure","+72","tonsky/rum" 166 | "","JavaScript","+71","gdi2290/angular-websocket" 167 | "","Python","+71","wbond/package_control" 168 | "","JavaScript","+71","bigboringsystem/bigboringsystem" 169 | "","CSS","+71","google/web-starter-kit" 170 | "","C++","+70","zhihu/kids" 171 | "","Java","+70","google/guava" 172 | "","Python","+70","rg3/youtube-dl" 173 | "","Ruby","+70","jekyll/jekyll" 174 | "","JavaScript","+69","adobe/brackets" 175 | "","JavaScript","+69","Unitech/PM2" 176 | "","JavaScript","+68","getify/You-Dont-Know-JS" 177 | "","Objective-C","+68","magicalpanda/MagicalRecord" 178 | "","Java","+68","liaohuqiu/android-Ultra-Pull-To-Refresh" 179 | "","C++","+68","Itseez/opencv" 180 | "","Go","+68","ChimeraCoder/gojson" 181 | "","CSS","+68","picturepan2/fileicon.css" 182 | "","C","+68","antirez/redis" 183 | "","Python","+68","binux/pyspider" 184 | "","Python","+68","scrapy/scrapy" 185 | "","Go","+67","gogits/gogs" 186 | "","PHP","+67","Cydrobolt/polr" 187 | "","JavaScript","+66","jrm2k6/dynamic-json-resume" 188 | "","Other","+66","justjavac/free-programming-books-zh_CN" 189 | "","JavaScript","+66","emberjs/ember.js" 190 | "","PHP","+66","Pomax/bezierinfo" 191 | "","JavaScript","+66","TopCloud/loadbalancer" 192 | "","C++","+66","facebook/hhvm" 193 | "","Java","+65","square/okhttp" 194 | "","JavaScript","+65","photonstorm/phaser" 195 | "","Other","+64","SamHerbert/SVG-Loaders" 196 | "","Swift","+64","lexrus/LTMorphingLabel" 197 | "","Python","+64","TheRook/subbrute" 198 | "","Java","+64","Netflix/ice" 199 | "","Stata","+64","txthinking/google-hosts" 200 | "","JavaScript","+64","Deathamns/uBlock" 201 | "","JavaScript","+64","Reactive-Extensions/RxJS" 202 | "","JavaScript","+63","nnnick/Chart.js" 203 | "","Objective-C","+63","AFNetworking/AFNetworking" 204 | "","JavaScript","+63","allmobilize/amazeui" 205 | "","JavaScript","+63","GoodBoyDigital/pixi.js" 206 | "","Python","+62","josephmisiti/awesome-machine-learning" 207 | "","JavaScript","+62","jquery/jquery" 208 | "","JavaScript","+61","mauriciosoares/core.js" 209 | "","Ruby","+61","discourse/discourse" 210 | "","C#","+60","dotnet/corefx" 211 | "","JavaScript","+60","blueimp/jQuery-File-Upload" 212 | "","CSS","+60","yasaricli/metrello" 213 | "","C","+60","LnxPrgr3/crossfeed" 214 | "","JavaScript","+60","WuYongZhiYong/iewarning" 215 | "","JavaScript","+60","caolan/async" 216 | "","Objective-C","+60","remirobert/RRMessageController" 217 | "","JavaScript","+60","angular-ui/ui-router" 218 | "","JavaScript","+59","gionkunz/chartist-js" 219 | "","JavaScript","+59","facebook/flux" 220 | "","Go","+59","spf13/hugo" 221 | "","Swift","+59","Alamofire/Alamofire" 222 | "","JavaScript","+59","webpack/webpack" 223 | "","Other","+59","waylau/spring-framework-4-reference" 224 | "","JavaScript","+59","balderdashy/sails" 225 | "","Ruby","+58","outpunk/evil-icons" 226 | "","Swift","+58","SwiftyJSON/SwiftyJSON" 227 | "","C","+58","wg/wrk" 228 | "","PHP","+58","yiisoft/yii2" 229 | "","JavaScript","+58","hakimel/reveal.js" 230 | "","C++","+57","khizmax/libcds" 231 | "","JavaScript","+57","benweet/stackedit" 232 | "","CSS","+57","zurb/foundation" 233 | "","Java","+57","greenrobot/EventBus" 234 | "","Python","+57","zokis/Python--Faster-Way" 235 | "","Java","+57","ReactiveX/RxJava" 236 | "","C++","+56","BVLC/caffe" 237 | "","JavaScript","+56","mrdoob/three.js" 238 | "","Other","+55","instanceofpro/awesome-backbone" 239 | "","Go","+55","GoogleCloudPlatform/kubernetes" 240 | "","JavaScript","+55","urish/angular-moment" 241 | "","Python","+55","USArmyResearchLab/Dshell" 242 | "","C","+55","SamyPesse/How-to-Make-a-Computer-Operating-System" 243 | "","CSS","+55","thoughtbot/bourbon" 244 | "","Java","+55","futuresimple/android-floating-action-button" 245 | "","JavaScript","+55","bartaz/impress.js" 246 | "","C","+55","git/git" 247 | "","Other","+55","sindresorhus/awesome" 248 | "","JavaScript","+55","tastejs/todomvc" 249 | "","Python","+55","CamDavidsonPilon/StartupFiles" 250 | "","Go","+55","coreos/rocket" 251 | "","Java","+54","Malinskiy/SuperRecyclerView" 252 | "","JavaScript","+54","feross/webtorrent" 253 | "","Java","+54","rengwuxian/MaterialEditText" 254 | "","JavaScript","+54","alexwolfe/Buttons" 255 | "","CSS","+54","flexiblegs/flexiblegs" 256 | "","Objective-C","+53","rs/SDWebImage" 257 | "","JavaScript","+53","facebook/immutable-js" 258 | "","Java","+53","elasticsearch/elasticsearch" 259 | "","JavaScript","+53","angular-ui/bootstrap" 260 | "","Objective-C++","+53","facebook/pop" 261 | "","JavaScript","+53","Semantic-Org/Semantic-UI" 262 | "","Go","+53","robbiev/devdns" 263 | "","CSS","+53","driftyco/ionicons" 264 | "","Java","+53","john990/WaveView" 265 | "","JavaScript","+52","Modernizr/Modernizr" 266 | "","VimL","+52","gmarik/Vundle.vim" 267 | "","C","+52","mgba-emu/mgba" 268 | "","Python","+52","alixander/PyScribe" 269 | "","Other","+52","vsouza/awesome-ios" 270 | "","Python","+52","docker/fig" 271 | "","Objective-C","+52","ReactiveCocoa/ReactiveCocoa" 272 | "","Other","+52","avelino/awesome-go" 273 | "","JavaScript","+52","adam-p/markdown-here" 274 | "","PHP","+52","benplummer/calendarful" 275 | "","Swift","+51","nghialv/MaterialKit" 276 | "","Java","+51","traex/RippleEffect" 277 | "","JavaScript","+51","substack/node-browserify" 278 | "","Java","+51","westlinkin/AndroidLocalizationer" 279 | "","JavaScript","+51","petkaantonov/bluebird" 280 | "","Ruby","+51","mitchellh/vagrant" 281 | "","JavaScript","+51","ivaynberg/select2" 282 | "","CSS","+51","twbs/ratchet" 283 | "","Go","+51","syncthing/syncthing" 284 | "","Objective-C","+50","Masonry/Masonry" 285 | "","Java","+50","afollestad/material-dialogs" 286 | "","Python","+50","Tribler/tribler" 287 | "","C++","+50","bitcoin/bitcoin" 288 | "","JavaScript","+50","globocom/clappr" 289 | "","Objective-C","+50","jessesquires/JSQMessagesViewController" 290 | "","Ruby","+50","elabs/refile" 291 | "","Objective-C","+49","omergul123/LLSimpleCamera" 292 | "","Other","+49","kbandla/APTnotes" 293 | "","Java","+49","google/iosched" 294 | "","C","+49","julycoding/The-Art-Of-Programming-By-July" 295 | "","Java","+49","libgdx/libgdx" 296 | "","JavaScript","+49","jashkenas/underscore" 297 | "","JavaScript","+49","bevacqua/but" 298 | "","Bison","+49","matz/streem" 299 | "","CSS","+49","sahat/hackathon-starter" 300 | "","Swift","+48","duemunk/Async" -------------------------------------------------------------------------------- /output/weeks.json: -------------------------------------------------------------------------------- 1 | [{"0":"","Language":"Other","Change":"+4038","Name":"prakhar1989/awesome-courses"},{"0":"","Language":"Other","Change":"+1717","Name":"wasabeef/awesome-android-ui"},{"0":"","Language":"PHP","Change":"+1445","Name":"isohuntto/openbay"},{"0":"","Language":"JavaScript","Change":"+1045","Name":"gorhill/uBlock"},{"0":"","Language":"Swift","Change":"+778","Name":"lexrus/VPNOn"},{"0":"","Language":"Other","Change":"+750","Name":"h5bp/Front-end-Developer-Interview-Questions"},{"0":"","Language":"JavaScript","Change":"+669","Name":"auchenberg/chrome-devtools-app"},{"0":"","Language":"Python","Change":"+522","Name":"Dobiasd/articles"},{"0":"","Language":"CoffeeScript","Change":"+514","Name":"Pathgather/please-wait"},{"0":"","Language":"Other","Change":"+478","Name":"fcambus/nginx-resources"},{"0":"","Language":"C","Change":"+466","Name":"robertdavidgraham/masscan"},{"0":"","Language":"Ruby","Change":"+462","Name":"sagivo/algorithms"},{"0":"","Language":"C","Change":"+461","Name":"orangeduck/libCello"},{"0":"","Language":"C","Change":"+369","Name":"h2o/h2o"},{"0":"","Language":"Other","Change":"+358","Name":"papers-we-love/papers-we-love"},{"0":"","Language":"JavaScript","Change":"+350","Name":"alvarotrigo/fullPage.js"},{"0":"","Language":"Other","Change":"+349","Name":"vhf/free-programming-books"},{"0":"","Language":"Objective-C","Change":"+341","Name":"cwRichardKim/RKNotificationHub"},{"0":"","Language":"C","Change":"+323","Name":"robertdavidgraham/robdns"},{"0":"","Language":"PHP","Change":"+316","Name":"flarum/core"},{"0":"","Language":"CSS","Change":"+273","Name":"twbs/bootstrap"},{"0":"","Language":"Other","Change":"+267","Name":"wasabeef/awesome-android-libraries"},{"0":"","Language":"Objective-C","Change":"+267","Name":"hackiftekhar/IQKeyboardManager"},{"0":"","Language":"PHP","Change":"+261","Name":"nemoTyrant/manong"},{"0":"","Language":"Objective-C","Change":"+229","Name":"atljeremy/JFMinimalNotifications"},{"0":"","Language":"JavaScript","Change":"+228","Name":"angular/angular.js"},{"0":"","Language":"Python","Change":"+215","Name":"vinta/awesome-python"},{"0":"","Language":"Python","Change":"+212","Name":"goagent/goagent"},{"0":"","Language":"C++","Change":"+203","Name":"Qihoo360/phptrace"},{"0":"","Language":"CSS","Change":"+202","Name":"tobiasahlin/SpinKit"},{"0":"","Language":"C++","Change":"+200","Name":"floooh/oryol"},{"0":"","Language":"Common Lisp","Change":"+197","Name":"fukamachi/woo"},{"0":"","Language":"JavaScript","Change":"+195","Name":"cachethq/Cachet"},{"0":"","Language":"JavaScript","Change":"+194","Name":"facebook/react"},{"0":"","Language":"Objective-C","Change":"+194","Name":"kevinzhow/PNChart"},{"0":"","Language":"Java","Change":"+193","Name":"oli107/material-range-bar"},{"0":"","Language":"JavaScript","Change":"+190","Name":"majodev/google-webfonts-helper"},{"0":"","Language":"JavaScript","Change":"+186","Name":"RubaXa/Sortable"},{"0":"","Language":"C++","Change":"+185","Name":"atom/atom-shell"},{"0":"","Language":"JavaScript","Change":"+183","Name":"leanote/leanote"},{"0":"","Language":"JavaScript","Change":"+183","Name":"mbostock/d3"},{"0":"","Language":"C","Change":"+180","Name":"lpereira/lwan"},{"0":"","Language":"JavaScript","Change":"+177","Name":"mmastrac/webfont-dl"},{"0":"","Language":"C++","Change":"+176","Name":"rogerwang/node-webkit"},{"0":"","Language":"JavaScript","Change":"+173","Name":"gorhill/uMatrix"},{"0":"","Language":"Go","Change":"+167","Name":"golang/go"},{"0":"","Language":"JavaScript","Change":"+163","Name":"markdown-it/markdown-it"},{"0":"","Language":"JavaScript","Change":"+159","Name":"knsv/mermaid"},{"0":"","Language":"Haskell","Change":"+155","Name":"begriffs/postgrest"},{"0":"","Language":"CSS","Change":"+155","Name":"Dogfalo/materialize"},{"0":"","Language":"JavaScript","Change":"+154","Name":"FelisCatus/SwitchyOmega"},{"0":"","Language":"JavaScript","Change":"+152","Name":"Voog/wysihtml"},{"0":"","Language":"Go","Change":"+152","Name":"docker/docker"},{"0":"","Language":"Objective-C","Change":"+151","Name":"kconner/KMCGeigerCounter"},{"0":"","Language":"CSS","Change":"+151","Name":"FortAwesome/Font-Awesome"},{"0":"","Language":"Objective-C","Change":"+150","Name":"FabrizioBrancati/BFKit"},{"0":"","Language":"Other","Change":"+148","Name":"StevenSLXie/Tutorials-for-Web-Developers"},{"0":"","Language":"Other","Change":"+146","Name":"Trinea/android-open-project"},{"0":"","Language":"C","Change":"+146","Name":"torvalds/linux"},{"0":"","Language":"JavaScript","Change":"+141","Name":"driftyco/ionic"},{"0":"","Language":"Erlang","Change":"+139","Name":"lfex/py"},{"0":"","Language":"CSS","Change":"+138","Name":"daneden/animate.css"},{"0":"","Language":"JavaScript","Change":"+137","Name":"ecomfe/echarts"},{"0":"","Language":"Objective-C","Change":"+136","Name":"Flipboard/FLAnimatedImage"},{"0":"","Language":"Haskell","Change":"+136","Name":"jbarrow/LambdaNet"},{"0":"","Language":"JavaScript","Change":"+135","Name":"iojs/io.js"},{"0":"","Language":"Objective-C","Change":"+133","Name":"sibahota059/SPHChatCollectionView"},{"0":"","Language":"Java","Change":"+131","Name":"ongakuer/CircleIndicator"},{"0":"","Language":"Other","Change":"+130","Name":"kozross/awesome-cl"},{"0":"","Language":"C++","Change":"+128","Name":"SFTtech/openage"},{"0":"","Language":"JavaScript","Change":"+126","Name":"dimsemenov/PhotoSwipe"},{"0":"","Language":"Python","Change":"+126","Name":"jesolem/PCV"},{"0":"","Language":"Other","Change":"+125","Name":"ziadoz/awesome-php"},{"0":"","Language":"CoffeeScript","Change":"+125","Name":"atom/atom"},{"0":"","Language":"JavaScript","Change":"+123","Name":"STRML/react-grid-layout"},{"0":"","Language":"JavaScript","Change":"+122","Name":"angular/material"},{"0":"","Language":"Other","Change":"+121","Name":"github/gitignore"},{"0":"","Language":"JavaScript","Change":"+120","Name":"neilj/Squire"},{"0":"","Language":"Python","Change":"+120","Name":"emirozer/fake2db"},{"0":"","Language":"CSS","Change":"+119","Name":"FezVrasta/bootstrap-material-design"},{"0":"","Language":"JavaScript","Change":"+119","Name":"meteor/meteor"},{"0":"","Language":"Objective-C","Change":"+119","Name":"rsms/peertalk"},{"0":"","Language":"JavaScript","Change":"+119","Name":"xat/castnow"},{"0":"","Language":"CSS","Change":"+118","Name":"google/material-design-icons"},{"0":"","Language":"Other","Change":"+114","Name":"interagent/http-api-design"},{"0":"","Language":"JavaScript","Change":"+113","Name":"gulpjs/gulp"},{"0":"","Language":"Shell","Change":"+112","Name":"robbyrussell/oh-my-zsh"},{"0":"","Language":"Python","Change":"+111","Name":"jakubroztocil/httpie"},{"0":"","Language":"CSS","Change":"+111","Name":"Semantic-Org/Semantic-UI"},{"0":"","Language":"Java","Change":"+111","Name":"neokree/MaterialNavigationDrawer"},{"0":"","Language":"JavaScript","Change":"+110","Name":"callemall/material-ui"},{"0":"","Language":"CSS","Change":"+109","Name":"dhg/Skeleton"},{"0":"","Language":"C++","Change":"+108","Name":"botonchou/libdnn"},{"0":"","Language":"Other","Change":"+108","Name":"AttackOnDobby/iOS-Core-Animation-Advanced-Techniques"},{"0":"","Language":"Java","Change":"+107","Name":"wangjiegulu/DraggableFlagView"},{"0":"","Language":"JavaScript","Change":"+105","Name":"typpo/textbelt"},{"0":"","Language":"JavaScript","Change":"+104","Name":"t32k/material-design-color-palette-sketch-plugin"},{"0":"","Language":"Java","Change":"+103","Name":"ksoichiro/Android-ObservableScrollView"},{"0":"","Language":"Python","Change":"+102","Name":"aothman/hiscore"},{"0":"","Language":"Rust","Change":"+101","Name":"rust-lang/rust"},{"0":"","Language":"Ruby","Change":"+101","Name":"inf0rmer/blanket"},{"0":"","Language":"Swift","Change":"+100","Name":"indragiek/DominantColor"},{"0":"","Language":"Scala","Change":"+100","Name":"lihaoyi/Scalatex"},{"0":"","Language":"Nimrod","Change":"+99","Name":"Araq/Nim"},{"0":"","Language":"Other","Change":"+99","Name":"qyuhen/book"},{"0":"","Language":"JavaScript","Change":"+98","Name":"joyent/node"},{"0":"","Language":"JavaScript","Change":"+97","Name":"Matt-Esch/virtual-dom"},{"0":"","Language":"JavaScript","Change":"+96","Name":"keen/dashboards"},{"0":"","Language":"Ruby","Change":"+96","Name":"cantino/huginn"},{"0":"","Language":"JavaScript","Change":"+95","Name":"Automattic/socket.io"},{"0":"","Language":"JavaScript","Change":"+95","Name":"slap-editor/slap"},{"0":"","Language":"C","Change":"+95","Name":"skeeto/interactive-c-demo"},{"0":"","Language":"C","Change":"+94","Name":"mozilla/mozjpeg"},{"0":"","Language":"Python","Change":"+94","Name":"shadowsocks/shadowsocks"},{"0":"","Language":"JavaScript","Change":"+93","Name":"Polymer/polymer"},{"0":"","Language":"JavaScript","Change":"+92","Name":"Turfjs/turf"},{"0":"","Language":"Java","Change":"+91","Name":"groovy/groovy-core"},{"0":"","Language":"JavaScript","Change":"+91","Name":"staltz/cycle"},{"0":"","Language":"JavaScript","Change":"+91","Name":"Leask/BRICKS"},{"0":"","Language":"Python","Change":"+90","Name":"mitsuhiko/flask"},{"0":"","Language":"JavaScript","Change":"+89","Name":"brentvatne/tinder-netflix"},{"0":"","Language":"Shell","Change":"+89","Name":"chengr28/RevokeChinaCerts"},{"0":"","Language":"Python","Change":"+88","Name":"django/django"},{"0":"","Language":"Other","Change":"+88","Name":"cyberwizardinstitute/workshops"},{"0":"","Language":"JavaScript","Change":"+87","Name":"resume/resume.github.com"},{"0":"","Language":"Other","Change":"+87","Name":"bayandin/awesome-awesomeness"},{"0":"","Language":"Python","Change":"+85","Name":"vishnevskiy/ElixirSublime"},{"0":"","Language":"Other","Change":"+84","Name":"caesar0301/awesome-public-datasets"},{"0":"","Language":"Go","Change":"+84","Name":"dockerboard/dockerboard"},{"0":"","Language":"JavaScript","Change":"+84","Name":"cssdream/cssgrace"},{"0":"","Language":"Swift","Change":"+83","Name":"ipader/SwiftGuide"},{"0":"","Language":"Ruby","Change":"+83","Name":"Homebrew/homebrew"},{"0":"","Language":"Java","Change":"+82","Name":"iluwatar/java-design-patterns"},{"0":"","Language":"Objective-C","Change":"+82","Name":"jamztang/CSStickyHeaderFlowLayout"},{"0":"","Language":"PHP","Change":"+81","Name":"laravel/laravel"},{"0":"","Language":"Python","Change":"+81","Name":"kennethreitz/requests"},{"0":"","Language":"JavaScript","Change":"+80","Name":"strongloop/express"},{"0":"","Language":"JavaScript","Change":"+79","Name":"TryGhost/Ghost"},{"0":"","Language":"JavaScript","Change":"+79","Name":"google/end-to-end"},{"0":"","Language":"Shell","Change":"+78","Name":"dnschneid/crouton"},{"0":"","Language":"Go","Change":"+78","Name":"influxdb/influxdb"},{"0":"","Language":"JavaScript","Change":"+78","Name":"grafana/grafana"},{"0":"","Language":"JavaScript","Change":"+78","Name":"h5bp/html5-boilerplate"},{"0":"","Language":"JavaScript","Change":"+77","Name":"enaqx/awesome-react"},{"0":"","Language":"Objective-C","Change":"+77","Name":"samvermette/SVPullToRefresh"},{"0":"","Language":"Swift","Change":"+76","Name":"Carthage/Carthage"},{"0":"","Language":"Python","Change":"+76","Name":"ansible/ansible"},{"0":"","Language":"Go","Change":"+75","Name":"hybridgroup/gobot"},{"0":"","Language":"Objective-C","Change":"+75","Name":"rickytan/RTImageAssets"},{"0":"","Language":"JavaScript","Change":"+75","Name":"moment/moment"},{"0":"","Language":"Other","Change":"+75","Name":"johnpapa/angularjs-styleguide"},{"0":"","Language":"JavaScript","Change":"+75","Name":"jashkenas/backbone"},{"0":"","Language":"Perl","Change":"+75","Name":"aui/font-spider"},{"0":"","Language":"JavaScript","Change":"+75","Name":"substack/stream-handbook"},{"0":"","Language":"JavaScript","Change":"+74","Name":"zxlie/WeixinApi"},{"0":"","Language":"JavaScript","Change":"+74","Name":"MaciejCzyzewski/hyhyhy"},{"0":"","Language":"Ruby","Change":"+74","Name":"rails/rails"},{"0":"","Language":"Java","Change":"+73","Name":"navasmdc/MaterialDesignLibrary"},{"0":"","Language":"PHP","Change":"+73","Name":"Roave/SecurityAdvisories"},{"0":"","Language":"JavaScript","Change":"+73","Name":"af/JSnoX"},{"0":"","Language":"CSS","Change":"+73","Name":"necolas/normalize.css"},{"0":"","Language":"Java","Change":"+72","Name":"naman14/PlayNewsStandDemo"},{"0":"","Language":"Java","Change":"+72","Name":"nostra13/Android-Universal-Image-Loader"},{"0":"","Language":"Clojure","Change":"+72","Name":"tonsky/rum"},{"0":"","Language":"JavaScript","Change":"+71","Name":"gdi2290/angular-websocket"},{"0":"","Language":"Python","Change":"+71","Name":"wbond/package_control"},{"0":"","Language":"JavaScript","Change":"+71","Name":"bigboringsystem/bigboringsystem"},{"0":"","Language":"CSS","Change":"+71","Name":"google/web-starter-kit"},{"0":"","Language":"C++","Change":"+70","Name":"zhihu/kids"},{"0":"","Language":"Java","Change":"+70","Name":"google/guava"},{"0":"","Language":"Python","Change":"+70","Name":"rg3/youtube-dl"},{"0":"","Language":"Ruby","Change":"+70","Name":"jekyll/jekyll"},{"0":"","Language":"JavaScript","Change":"+69","Name":"adobe/brackets"},{"0":"","Language":"JavaScript","Change":"+69","Name":"Unitech/PM2"},{"0":"","Language":"JavaScript","Change":"+68","Name":"getify/You-Dont-Know-JS"},{"0":"","Language":"Objective-C","Change":"+68","Name":"magicalpanda/MagicalRecord"},{"0":"","Language":"Java","Change":"+68","Name":"liaohuqiu/android-Ultra-Pull-To-Refresh"},{"0":"","Language":"C++","Change":"+68","Name":"Itseez/opencv"},{"0":"","Language":"Go","Change":"+68","Name":"ChimeraCoder/gojson"},{"0":"","Language":"CSS","Change":"+68","Name":"picturepan2/fileicon.css"},{"0":"","Language":"C","Change":"+68","Name":"antirez/redis"},{"0":"","Language":"Python","Change":"+68","Name":"binux/pyspider"},{"0":"","Language":"Python","Change":"+68","Name":"scrapy/scrapy"},{"0":"","Language":"Go","Change":"+67","Name":"gogits/gogs"},{"0":"","Language":"PHP","Change":"+67","Name":"Cydrobolt/polr"},{"0":"","Language":"JavaScript","Change":"+66","Name":"jrm2k6/dynamic-json-resume"},{"0":"","Language":"Other","Change":"+66","Name":"justjavac/free-programming-books-zh_CN"},{"0":"","Language":"JavaScript","Change":"+66","Name":"emberjs/ember.js"},{"0":"","Language":"PHP","Change":"+66","Name":"Pomax/bezierinfo"},{"0":"","Language":"JavaScript","Change":"+66","Name":"TopCloud/loadbalancer"},{"0":"","Language":"C++","Change":"+66","Name":"facebook/hhvm"},{"0":"","Language":"Java","Change":"+65","Name":"square/okhttp"},{"0":"","Language":"JavaScript","Change":"+65","Name":"photonstorm/phaser"},{"0":"","Language":"Other","Change":"+64","Name":"SamHerbert/SVG-Loaders"},{"0":"","Language":"Swift","Change":"+64","Name":"lexrus/LTMorphingLabel"},{"0":"","Language":"Python","Change":"+64","Name":"TheRook/subbrute"},{"0":"","Language":"Java","Change":"+64","Name":"Netflix/ice"},{"0":"","Language":"Stata","Change":"+64","Name":"txthinking/google-hosts"},{"0":"","Language":"JavaScript","Change":"+64","Name":"Deathamns/uBlock"},{"0":"","Language":"JavaScript","Change":"+64","Name":"Reactive-Extensions/RxJS"},{"0":"","Language":"JavaScript","Change":"+63","Name":"nnnick/Chart.js"},{"0":"","Language":"Objective-C","Change":"+63","Name":"AFNetworking/AFNetworking"},{"0":"","Language":"JavaScript","Change":"+63","Name":"allmobilize/amazeui"},{"0":"","Language":"JavaScript","Change":"+63","Name":"GoodBoyDigital/pixi.js"},{"0":"","Language":"Python","Change":"+62","Name":"josephmisiti/awesome-machine-learning"},{"0":"","Language":"JavaScript","Change":"+62","Name":"jquery/jquery"},{"0":"","Language":"JavaScript","Change":"+61","Name":"mauriciosoares/core.js"},{"0":"","Language":"Ruby","Change":"+61","Name":"discourse/discourse"},{"0":"","Language":"C#","Change":"+60","Name":"dotnet/corefx"},{"0":"","Language":"JavaScript","Change":"+60","Name":"blueimp/jQuery-File-Upload"},{"0":"","Language":"CSS","Change":"+60","Name":"yasaricli/metrello"},{"0":"","Language":"C","Change":"+60","Name":"LnxPrgr3/crossfeed"},{"0":"","Language":"JavaScript","Change":"+60","Name":"WuYongZhiYong/iewarning"},{"0":"","Language":"JavaScript","Change":"+60","Name":"caolan/async"},{"0":"","Language":"Objective-C","Change":"+60","Name":"remirobert/RRMessageController"},{"0":"","Language":"JavaScript","Change":"+60","Name":"angular-ui/ui-router"},{"0":"","Language":"JavaScript","Change":"+59","Name":"gionkunz/chartist-js"},{"0":"","Language":"JavaScript","Change":"+59","Name":"facebook/flux"},{"0":"","Language":"Go","Change":"+59","Name":"spf13/hugo"},{"0":"","Language":"Swift","Change":"+59","Name":"Alamofire/Alamofire"},{"0":"","Language":"JavaScript","Change":"+59","Name":"webpack/webpack"},{"0":"","Language":"Other","Change":"+59","Name":"waylau/spring-framework-4-reference"},{"0":"","Language":"JavaScript","Change":"+59","Name":"balderdashy/sails"},{"0":"","Language":"Ruby","Change":"+58","Name":"outpunk/evil-icons"},{"0":"","Language":"Swift","Change":"+58","Name":"SwiftyJSON/SwiftyJSON"},{"0":"","Language":"C","Change":"+58","Name":"wg/wrk"},{"0":"","Language":"PHP","Change":"+58","Name":"yiisoft/yii2"},{"0":"","Language":"JavaScript","Change":"+58","Name":"hakimel/reveal.js"},{"0":"","Language":"C++","Change":"+57","Name":"khizmax/libcds"},{"0":"","Language":"JavaScript","Change":"+57","Name":"benweet/stackedit"},{"0":"","Language":"CSS","Change":"+57","Name":"zurb/foundation"},{"0":"","Language":"Java","Change":"+57","Name":"greenrobot/EventBus"},{"0":"","Language":"Python","Change":"+57","Name":"zokis/Python--Faster-Way"},{"0":"","Language":"Java","Change":"+57","Name":"ReactiveX/RxJava"},{"0":"","Language":"C++","Change":"+56","Name":"BVLC/caffe"},{"0":"","Language":"JavaScript","Change":"+56","Name":"mrdoob/three.js"},{"0":"","Language":"Other","Change":"+55","Name":"instanceofpro/awesome-backbone"},{"0":"","Language":"Go","Change":"+55","Name":"GoogleCloudPlatform/kubernetes"},{"0":"","Language":"JavaScript","Change":"+55","Name":"urish/angular-moment"},{"0":"","Language":"Python","Change":"+55","Name":"USArmyResearchLab/Dshell"},{"0":"","Language":"C","Change":"+55","Name":"SamyPesse/How-to-Make-a-Computer-Operating-System"},{"0":"","Language":"CSS","Change":"+55","Name":"thoughtbot/bourbon"},{"0":"","Language":"Java","Change":"+55","Name":"futuresimple/android-floating-action-button"},{"0":"","Language":"JavaScript","Change":"+55","Name":"bartaz/impress.js"},{"0":"","Language":"C","Change":"+55","Name":"git/git"},{"0":"","Language":"Other","Change":"+55","Name":"sindresorhus/awesome"},{"0":"","Language":"JavaScript","Change":"+55","Name":"tastejs/todomvc"},{"0":"","Language":"Python","Change":"+55","Name":"CamDavidsonPilon/StartupFiles"},{"0":"","Language":"Go","Change":"+55","Name":"coreos/rocket"},{"0":"","Language":"Java","Change":"+54","Name":"Malinskiy/SuperRecyclerView"},{"0":"","Language":"JavaScript","Change":"+54","Name":"feross/webtorrent"},{"0":"","Language":"Java","Change":"+54","Name":"rengwuxian/MaterialEditText"},{"0":"","Language":"JavaScript","Change":"+54","Name":"alexwolfe/Buttons"},{"0":"","Language":"CSS","Change":"+54","Name":"flexiblegs/flexiblegs"},{"0":"","Language":"Objective-C","Change":"+53","Name":"rs/SDWebImage"},{"0":"","Language":"JavaScript","Change":"+53","Name":"facebook/immutable-js"},{"0":"","Language":"Java","Change":"+53","Name":"elasticsearch/elasticsearch"},{"0":"","Language":"JavaScript","Change":"+53","Name":"angular-ui/bootstrap"},{"0":"","Language":"Objective-C++","Change":"+53","Name":"facebook/pop"},{"0":"","Language":"JavaScript","Change":"+53","Name":"Semantic-Org/Semantic-UI"},{"0":"","Language":"Go","Change":"+53","Name":"robbiev/devdns"},{"0":"","Language":"CSS","Change":"+53","Name":"driftyco/ionicons"},{"0":"","Language":"Java","Change":"+53","Name":"john990/WaveView"},{"0":"","Language":"JavaScript","Change":"+52","Name":"Modernizr/Modernizr"},{"0":"","Language":"VimL","Change":"+52","Name":"gmarik/Vundle.vim"},{"0":"","Language":"C","Change":"+52","Name":"mgba-emu/mgba"},{"0":"","Language":"Python","Change":"+52","Name":"alixander/PyScribe"},{"0":"","Language":"Other","Change":"+52","Name":"vsouza/awesome-ios"},{"0":"","Language":"Python","Change":"+52","Name":"docker/fig"},{"0":"","Language":"Objective-C","Change":"+52","Name":"ReactiveCocoa/ReactiveCocoa"},{"0":"","Language":"Other","Change":"+52","Name":"avelino/awesome-go"},{"0":"","Language":"JavaScript","Change":"+52","Name":"adam-p/markdown-here"},{"0":"","Language":"PHP","Change":"+52","Name":"benplummer/calendarful"},{"0":"","Language":"Swift","Change":"+51","Name":"nghialv/MaterialKit"},{"0":"","Language":"Java","Change":"+51","Name":"traex/RippleEffect"},{"0":"","Language":"JavaScript","Change":"+51","Name":"substack/node-browserify"},{"0":"","Language":"Java","Change":"+51","Name":"westlinkin/AndroidLocalizationer"},{"0":"","Language":"JavaScript","Change":"+51","Name":"petkaantonov/bluebird"},{"0":"","Language":"Ruby","Change":"+51","Name":"mitchellh/vagrant"},{"0":"","Language":"JavaScript","Change":"+51","Name":"ivaynberg/select2"},{"0":"","Language":"CSS","Change":"+51","Name":"twbs/ratchet"},{"0":"","Language":"Go","Change":"+51","Name":"syncthing/syncthing"},{"0":"","Language":"Objective-C","Change":"+50","Name":"Masonry/Masonry"},{"0":"","Language":"Java","Change":"+50","Name":"afollestad/material-dialogs"},{"0":"","Language":"Python","Change":"+50","Name":"Tribler/tribler"},{"0":"","Language":"C++","Change":"+50","Name":"bitcoin/bitcoin"},{"0":"","Language":"JavaScript","Change":"+50","Name":"globocom/clappr"},{"0":"","Language":"Objective-C","Change":"+50","Name":"jessesquires/JSQMessagesViewController"},{"0":"","Language":"Ruby","Change":"+50","Name":"elabs/refile"},{"0":"","Language":"Objective-C","Change":"+49","Name":"omergul123/LLSimpleCamera"},{"0":"","Language":"Other","Change":"+49","Name":"kbandla/APTnotes"},{"0":"","Language":"Java","Change":"+49","Name":"google/iosched"},{"0":"","Language":"C","Change":"+49","Name":"julycoding/The-Art-Of-Programming-By-July"},{"0":"","Language":"Java","Change":"+49","Name":"libgdx/libgdx"},{"0":"","Language":"JavaScript","Change":"+49","Name":"jashkenas/underscore"},{"0":"","Language":"JavaScript","Change":"+49","Name":"bevacqua/but"},{"0":"","Language":"Bison","Change":"+49","Name":"matz/streem"},{"0":"","Language":"CSS","Change":"+49","Name":"sahat/hackathon-starter"},{"0":"","Language":"Swift","Change":"+48","Name":"duemunk/Async"}] -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": { 3 | "name": "Gil Ferriera ", 4 | "url": "https://github.com/misterGF" 5 | }, 6 | "name": "echo-table-2-file", 7 | "description": "Echo converts HTML tables into JSON/CSV objects. Use it to make html data easy to transport.", 8 | "version": "0.0.8", 9 | "main": "src/echo-table-2-file.js", 10 | "scripts": { 11 | "test": "mocha test/echo.test.js" 12 | }, 13 | "license": "MIT", 14 | "keywords": [ 15 | "echo", 16 | "html", 17 | "table", 18 | "convert", 19 | "json", 20 | "csv", 21 | "migration" 22 | ], 23 | "repository": { 24 | "type": "git", 25 | "url": "git://github.com/misterGF/echo.git" 26 | }, 27 | "dependencies": { 28 | "cheerio": "0.19.0", 29 | "colors": "^1.1.2", 30 | "json2csv": "^3.1.0", 31 | "request": "^2.69.0", 32 | "tabletojson": "^0.4.0" 33 | }, 34 | "engines": { 35 | "node": ">=4.4.4" 36 | }, 37 | "devDependencies": { 38 | "chai": "^1.9.1", 39 | "chai-fs": "^0.1.0", 40 | "eslint": "^2.13.1", 41 | "eslint-config-standard": "^5.3.1", 42 | "eslint-plugin-promise": "^1.3.2", 43 | "eslint-plugin-standard": "^1.3.2", 44 | "mocha": "^2.4.5" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/echo-table-2-file.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | // Load our modules 4 | var fs = require('fs') 5 | var path = require('path') 6 | var tabletojson = require('tabletojson') 7 | var json2csv = require('json2csv') 8 | var cheerio = require('cheerio') 9 | var colors = require('colors') 10 | var request = require('request') 11 | 12 | // Set defaults 13 | var defaults = { 14 | 'path': 'process', 15 | 'url': 'http://www.coolgithubprojects.com', 16 | 'dest': 'output', 17 | 'format': 'csv', 18 | 'mode': null 19 | } 20 | 21 | // Set theme for output 22 | colors.setTheme({ 23 | info: 'green', 24 | warn: 'yellow', 25 | debug: 'blue', 26 | error: 'red', 27 | data: 'grey' 28 | }) 29 | 30 | // MARK : Main functions. 31 | var _convert = (inputs) => { 32 | // Validate our inputs 33 | var validate = new Promise((resolve, reject) => { 34 | _validateArguments(inputs, (options) => { 35 | if (options) { 36 | resolve(options) 37 | } else { 38 | reject('Unable to validate arguments') 39 | } 40 | }) 41 | }) 42 | 43 | // Validate paths 44 | validate.then((options) => { 45 | var process = new Promise((resolve, reject) => { // Process 46 | _validatePaths(options, (status) => { 47 | if (status) { 48 | resolve(options) 49 | } else { 50 | reject('Unable to validate paths.') 51 | } 52 | }) 53 | }) 54 | 55 | process.then((options) => { // Process our data and save it 56 | _processData(options, (status) => { 57 | console.log((status).info) 58 | }) 59 | }, 60 | (error) => { 61 | let err = 'Something went wrong during processing : ' + error 62 | console.log((err).error) 63 | }) 64 | }, 65 | (error) => { 66 | let err = 'Something went wrong during validation : ' + error 67 | console.log((err).error) 68 | }) 69 | } 70 | 71 | // MARK Exported methods 72 | var convert = function (path, dest, format, tableId) { 73 | // call internal convert 74 | let inputs = { 75 | 'mode': 'file', 76 | 'path': path, 77 | 'dest': dest, 78 | 'format': format, 79 | 'tableId': tableId 80 | } 81 | _convert(inputs) 82 | } 83 | 84 | var convertUrl = function (url, dest, format, tableId) { 85 | // call internal convert 86 | let inputs = { 87 | 'mode': 'url', 88 | 'url': url, 89 | 'dest': dest, 90 | 'format': format, 91 | 'tableId': tableId 92 | } 93 | _convert(inputs) 94 | } 95 | 96 | exports.convert = convert 97 | exports.convertUrl = convertUrl 98 | 99 | // MARK : Supportive functions 100 | function _validateArguments (options, cb) { 101 | // Validate and prepare our arguments 102 | 103 | // If path is not given kick in defaults 104 | if (!options.path && options.mode === 'file') { 105 | options.path = path.join(process.cwd(), defaults.path) 106 | console.log(('Warning: No path specified. Setting it to ' + options.path).warn) 107 | } 108 | 109 | // Do the same for dest 110 | if (!options.dest) { 111 | options.dest = path.join(process.cwd(), defaults.dest) 112 | console.log(('Warning: No destination specified. Setting it to ' + options.dest).warn) 113 | } 114 | 115 | // Set url 116 | if (!options.url && options.mode === 'url') { 117 | options.url = defaults.url 118 | console.log(('Warning: No destination specified. Setting it to ' + options.dest).warn) 119 | } 120 | 121 | // Set format type 122 | options.format = (!options.format) ? defaults.format : options.format 123 | cb(options) 124 | } 125 | 126 | function _validatePaths (options, cb) { 127 | fs.readdir(process.cwd(), function (err, files) { 128 | if (err) throw err 129 | 130 | // Check if path exists if calling from convert 131 | if (options.path) { 132 | // Verify path 133 | var pathIsThere = files.filter(function (obj) { 134 | return obj === options.path 135 | }) 136 | 137 | if (pathIsThere.length === 0) { 138 | var errMessage = 'Path to process HTML files not there. Path is set to ' + options.path 139 | console.log((errMessage).error) 140 | throw errMessage 141 | } 142 | } 143 | 144 | // Verify dest 145 | var destIsThere = files.filter(function (obj) { 146 | return obj === options.dest 147 | }) 148 | 149 | // If not found let us create 150 | if (destIsThere.length === 0) { 151 | console.log('Creating destination folder'.warn) 152 | fs.mkdirSync(options.dest) 153 | cb('done') 154 | } else { 155 | cb('done') 156 | } 157 | }) 158 | } 159 | 160 | function _processData (options, cb) { 161 | if (options.mode === 'file') { 162 | // Parse through each and find html file 163 | fs.readdir(options.path, function (err, files) { 164 | if (err) throw err 165 | 166 | var htmlfiles = files.filter(function (obj) { 167 | return (obj.match('.html') !== null) 168 | }) 169 | 170 | if (htmlfiles.length === 0) { 171 | console.log('No HTML files in folder.'.error) 172 | } 173 | // Process each HTML 174 | htmlfiles.forEach(function (file) { 175 | var info = 'Working on ' + file 176 | var filePath = path.join(options.path, file) 177 | console.log((info).data) 178 | 179 | // Read file content 180 | fs.readFile(filePath, (err, html) => { 181 | if (err) throw err 182 | 183 | _prepareHTML(html, options) 184 | }) 185 | }) 186 | }) 187 | } else { 188 | request(options.url, function (error, response, html) { 189 | var info = 'HTML received.' 190 | console.log((info).data) 191 | 192 | if (!error && response.statusCode === 200) { 193 | _prepareHTML(html, options) 194 | } 195 | }) 196 | } 197 | } 198 | 199 | function _prepareHTML (html, options) { 200 | var tables = '' 201 | var tableIds = [] 202 | var $ = cheerio.load(html) 203 | 204 | // Check if we should filter down based on ID. 205 | var filter = (typeof options.tableId !== 'undefined') ? '#' + options.tableId : 'table' 206 | 207 | // Try to grab each table using cheerio to get an ID for the filename. Filter HTML down to wanted tables. 208 | $(filter).each(function (i, element) { 209 | tableIds[i] = $(this).attr('id') 210 | tables += $(this).parent().html() 211 | }) 212 | 213 | var tablesAsJson = tabletojson.convert(tables) 214 | 215 | var status = (tablesAsJson.length === 1) ? 'Found 1 table.' : ('Found ' + tablesAsJson.length + ' tables.') 216 | console.log((status).data) 217 | 218 | _writeData(tablesAsJson, tableIds, options) 219 | } 220 | 221 | function _writeData (tablesAsJson, tableIds, options) { 222 | // File to write 223 | tablesAsJson.forEach((table, index, arr) => { 224 | var filePath = path.join(process.cwd(), options.dest) // Reset 225 | 226 | if (options.format === 'csv') { 227 | json2csv({ 228 | data: table 229 | }, function (err, csv) { 230 | if (err) throw err 231 | 232 | var fileName = tableIds[index] + '.csv' 233 | filePath = path.join(filePath, fileName) 234 | 235 | fs.writeFile(filePath, csv, (err) => { 236 | if (err) throw err 237 | 238 | var status = 'Successfully saved ' + filePath 239 | console.log((status).info) 240 | }) 241 | }) 242 | } else { 243 | var fileName = tableIds[index] + '.json' 244 | filePath = path.join(filePath, fileName) 245 | 246 | fs.writeFile(filePath, JSON.stringify(table), (err) => { 247 | if (err) throw err 248 | 249 | var status = 'Successfully saved ' + filePath 250 | console.log((status).info) 251 | }) 252 | } 253 | }) 254 | } 255 | -------------------------------------------------------------------------------- /test/echo.test.js: -------------------------------------------------------------------------------- 1 | /* global describe:true it:true beforeEach:true */ 2 | var fs = require('fs') 3 | var path = require('path') 4 | var chai = require('chai') 5 | chai.use(require('chai-fs')) 6 | var expect = chai.expect 7 | var echo = require('../src/echo-table-2-file') 8 | 9 | describe('Cleanup output file', function () { 10 | this.timeout(30000) 11 | var rmDir = function (dirPath) { 12 | try { 13 | var files = fs.readdirSync(dirPath) 14 | } catch (e) { 15 | return 16 | } 17 | 18 | if (files.length > 0) { 19 | for (var i = 0; i < files.length; i++) { 20 | var filePath = dirPath + '/' + files[i] 21 | if (fs.statSync(filePath).isFile()) { 22 | fs.unlinkSync(filePath) 23 | } else { 24 | rmDir(filePath) 25 | } 26 | } 27 | fs.rmdirSync(dirPath) 28 | } 29 | } 30 | 31 | it('Should cleanup output folder', function () { 32 | var outputPath = path.join(process.cwd(), 'output') 33 | rmDir(outputPath) 34 | fs.stat(outputPath, function (err, dir) { 35 | expect(err.code).to.equal('ENOENT') 36 | }) 37 | }) 38 | }) 39 | 40 | describe('Test ConvertURL w/ Json', function () { 41 | this.timeout(30000) 42 | const TIME_TO_GENERATE_JSON = 6000 43 | 44 | beforeEach(function (done) { 45 | echo.convertUrl('https://www.coolgithubprojects.com', 'output', 'json') 46 | setTimeout(function () { 47 | done() 48 | }, TIME_TO_GENERATE_JSON) 49 | }) 50 | 51 | it('Should generate valid json files', function () { 52 | expect('output/days.json').to.be.a.file('Should be a json file').with.json 53 | expect('output/weeks.json').to.be.a.file('Should be a json file').with.json 54 | expect('output/months.json').to.be.a.file('Should be a json file').with.json 55 | }) 56 | }) 57 | 58 | describe('Test ConvertURL w/ csv', function () { 59 | this.timeout(30000) 60 | const TIME_TO_GENERATE_JSON = 6000 61 | 62 | beforeEach(function (done) { 63 | echo.convertUrl('https://www.coolgithubprojects.com', 'output', 'csv') 64 | setTimeout(function () { 65 | done() 66 | }, TIME_TO_GENERATE_JSON) 67 | }) 68 | 69 | it('Should generate valid csv files', function () { 70 | expect('output/days.csv').to.be.a.file('Should be a csv file').with.csv 71 | expect('output/weeks.csv').to.be.a.file('Should be a csb file').with.csv 72 | expect('output/months.csv').to.be.a.file('Should be a csv file').with.csv 73 | }) 74 | }) 75 | 76 | describe('Test ConvertURL w/ filter', function () { 77 | this.timeout(30000) 78 | const TIME_TO_GENERATE_JSON = 6000 79 | 80 | beforeEach(function (done) { 81 | echo.convertUrl('https://www.coolgithubprojects.com', 'output/monthly', 'json', 'months') 82 | setTimeout(function () { 83 | done() 84 | }, TIME_TO_GENERATE_JSON) 85 | }) 86 | 87 | it('Should generate a valid json file', function () { 88 | expect('output/monthly/months.json').to.be.a.file('Should be a json file').with.json 89 | }) 90 | }) 91 | 92 | describe('Test Convert w/ filter', function () { 93 | this.timeout(30000) 94 | const TIME_TO_GENERATE_JSON = 6000 95 | 96 | beforeEach(function (done) { 97 | echo.convert('static', 'output/static', 'csv', 'months') 98 | setTimeout(function () { 99 | done() 100 | }, TIME_TO_GENERATE_JSON) 101 | }) 102 | 103 | it('Should generate a valid csv file', function () { 104 | expect('output/static/months.csv').to.be.a.file('Should be a csv file').with.csv 105 | }) 106 | }) 107 | --------------------------------------------------------------------------------