Coder Social home page Coder Social logo

jeandeaual / tts-deckconverter Goto Github PK

View Code? Open in Web Editor NEW
38.0 3.0 5.0 511 KB

Generate card decks for Tabletop Simulator.

License: MIT License

Go 98.23% Shell 1.51% Dockerfile 0.26%
tabletop-simulator card-game magic-the-gathering yu-gi-oh pokemon-tcg golang tabletop fyne card-decks hacktoberfest

tts-deckconverter's Introduction

Tabletop Simulator TCG Deck Converter

PkgGoDev Go Report Card build test test-urls

Generate card decks for Tabletop Simulator.

Inspired by decker and Frogtown.

Demo

Features

Supported platforms

  • Windows 7 or later
  • macOS 10.11 or later
  • Linux 2.6.23 or later

Download

The latest release can be downloaded here.

Download the archive for your platform, extract it and run the program. No installation is required.

If you want the latest master build, go here, click on the topmost job, then download the appropriate package for your machine from the artifact list (e.g. tts-deckconverter-gui-windows-amd64 for the Windows GUI or tts-deckconverter-windows-amd64 for the Windows command-line interface).

Building

Go 1.13 or newer is required.

Command-line tool

go build ./cmd/tts-deckconverter

This will generate an executable called tts-deckconverter.

GUI

Install the dependencies required by Fyne, listed here.

go build ./cmd/tts-deckconverter-gui

This will generate an executable called tts-deckconverter-gui.

CLI usage

$ ./tts-deckconverter -h

Usage: tts-deckconverter TARGET

Flags:
  -back string
        card back (cannot be used with "-backURL"):
  -backURL string
        custom URL for the card backs (cannot be used with "-back")
  -chest string
        save to the Tabletop Simulator chest folder (use "/" for the root folder) (cannot be used with "-output")
  -compact
        don't indent the resulting JSON file
  -debug
        enable debug logging
  -format string
        format of the deck (usually inferred from the input file name or URL, but required with stdin)
  -mode string
        available modes: mtg, pkm, ygo, cfv, custom
  -name string
        name of the deck (usually inferred from the input file name or URL, but required with stdin)
  -option value
        plugin specific option (can have multiple)
        mtg:
            quality (enum): image quality (default: normal)
            rulings (bool): add the rulings to each card description (default: false)
        pkm:
            quality (enum): image quality (default: hires)
        ygo:
            format (enum): duel format (default: Master Duel)
        cfv:
            lang (enum): Language of the cards (default: en)
            vanguard-first (bool): Put the first vanguard on top of the deck (default: true)
        custom: no option available
  -output string
        destination folder (defaults to the current folder) (cannot be used with "-chest")
  -template string
        download each images and create a deck template instead of referring to each image individually. Choose from the following uploaders:
            imgur: Upload the template(s) anonymously to Imgur.
            manual: Let the user manually upload the template.
  -version
        display the version information

Usage examples

  • Generate Angelic Arrmy.json under the TTS Saved Objects folder (%USERPROFILE%/Documents/My Games/Tabletop Simulator/Saves/Saved Objects on Windows), with normal size images from Scryfall and ruling information in the card's description:

    tts-deckconverter -chest / -option quality=normal -option rulings=true https://www.mtggoldfish.com/deck/2062036#paper
  • Generate Test Deck.json under the decks folder:

    tts-deckconverter -mode mtg -output decks "Test Deck.txt"
  • Generate Starter Deck: Codebreaker.json under the YGO/Starter folder in the TTS Saved Objects:

    tts-deckconverter -chest /YGO/Starter "Starter Deck: Codebreaker.ydk"
  • Generate a single card from the standard input:

    echo "1 Black Lotus" | tts-deckconverter -mode mtg -name "Black Lotus" -

Aknowledgements

Icon and card backs created using the YGO Card Template (© 2017 - 2020 HolyCrapWhiteDragon).

tts-deckconverter's People

Contributors

azim-palmer avatar dependabot[bot] avatar jeandeaual avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

tts-deckconverter's Issues

Cardfight!! Vanguard Wiki parsing error {"error": "no English image found

Here's the log. I tried 2 other deck lists with complete different line up of cards but same issue

2021-09-20T16:35:01-04:00 info Processing
4x Blaze Maiden, Aruuna
4x Blaze Maiden, Parama
1x Blaze Maiden, Reiyu
1x Blaze Maiden, Rino
4x Blaze Maiden, Rona
4x Blaze Maiden, Zonne
4x Chakrabarthi Divine Dragon, Nirvana
3x Conduct Spark Dragon
1x Dragon Deity King of Resurgence, Dragveda
3x Stealth Dragon, Togachirashi
4x Trickstar (Anime Promo)
4x Twin Buckler Dragon
2x Vairina
4x Vairina Arcs
4x Vairina Erger
3x Vairina Valiente

2021-09-20T16:35:01-04:00 info Selected options: map[lang:ja prefer-premium:false vanguard-first:true]
2021-09-20T16:35:01-04:00 info Searching for card Blaze Maiden, Aruuna with https://cardfight.fandom.com/wiki/Special:Search?query=%22Blaze+Maiden%2C+Aruuna%22
2021-09-20T16:35:01-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Blaze_Maiden,_Aruuna (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Blaze Maiden, Aruuna"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:01-04:00 info Searching for card Blaze Maiden, Parama with https://cardfight.fandom.com/wiki/Special:Search?query=%22Blaze+Maiden%2C+Parama%22
2021-09-20T16:35:02-04:00 info Searching for card Blaze Maiden, Reiyu with https://cardfight.fandom.com/wiki/Special:Search?query=%22Blaze+Maiden%2C+Reiyu%22
2021-09-20T16:35:02-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Blaze_Maiden,_Reiyu (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Blaze Maiden, Reiyu"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:02-04:00 info Searching for card Blaze Maiden, Rino with https://cardfight.fandom.com/wiki/Special:Search?query=%22Blaze+Maiden%2C+Rino%22
2021-09-20T16:35:02-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Blaze_Maiden,_Rino (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Blaze Maiden, Rino"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:02-04:00 info Searching for card Blaze Maiden, Rona with https://cardfight.fandom.com/wiki/Special:Search?query=%22Blaze+Maiden%2C+Rona%22
2021-09-20T16:35:02-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Blaze_Maiden,_Rona (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Blaze Maiden, Rona"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:02-04:00 info Searching for card Blaze Maiden, Zonne with https://cardfight.fandom.com/wiki/Special:Search?query=%22Blaze+Maiden%2C+Zonne%22
2021-09-20T16:35:03-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Blaze_Maiden,_Zonne (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Blaze Maiden, Zonne"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:03-04:00 info Searching for card Chakrabarthi Divine Dragon, Nirvana with https://cardfight.fandom.com/wiki/Special:Search?query=%22Chakrabarthi+Divine+Dragon%2C+Nirvana%22
2021-09-20T16:35:03-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Chakrabarthi_Divine_Dragon,_Nirvana (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Chakrabarthi Divine Dragon, Nirvana"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:03-04:00 info Searching for card Conduct Spark Dragon with https://cardfight.fandom.com/wiki/Special:Search?query=%22Conduct+Spark+Dragon%22
2021-09-20T16:35:03-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Conduct_Spark_Dragon (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Conduct Spark Dragon"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:03-04:00 info Searching for card Dragon Deity King of Resurgence, Dragveda with https://cardfight.fandom.com/wiki/Special:Search?query=%22Dragon+Deity+King+of+Resurgence%2C+Dragveda%22
2021-09-20T16:35:04-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Dragon_Deity_King_of_Resurgence,_Dragveda (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Dragon Deity King of Resurgence, Dragveda"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:04-04:00 info Searching for card Stealth Dragon, Togachirashi with https://cardfight.fandom.com/wiki/Special:Search?query=%22Stealth+Dragon%2C+Togachirashi%22
2021-09-20T16:35:04-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Stealth_Dragon,_Togachirashi (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Stealth Dragon, Togachirashi"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:04-04:00 info Searching for card Trickstar (Anime Promo) with https://cardfight.fandom.com/wiki/Special:Search?query=%22Trickstar+%28Anime+Promo%29%22
2021-09-20T16:35:04-04:00 info Searching for card Twin Buckler Dragon with https://cardfight.fandom.com/wiki/Special:Search?query=%22Twin+Buckler+Dragon%22
2021-09-20T16:35:05-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Twin_Buckler_Dragon (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Twin Buckler Dragon"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:05-04:00 info Searching for card Vairina with https://cardfight.fandom.com/wiki/Special:Search?query=%22Vairina%22
2021-09-20T16:35:05-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Vairina (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Vairina"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:05-04:00 info Searching for card Vairina Arcs with https://cardfight.fandom.com/wiki/Special:Search?query=%22Vairina+Arcs%22
2021-09-20T16:35:05-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Vairina_Arcs (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Vairina Arcs"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:05-04:00 info Searching for card Vairina Erger with https://cardfight.fandom.com/wiki/Special:Search?query=%22Vairina+Erger%22
2021-09-20T16:35:05-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Vairina_Erger (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Vairina Erger"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:05-04:00 info Searching for card Vairina Valiente with https://cardfight.fandom.com/wiki/Special:Search?query=%22Vairina+Valiente%22
2021-09-20T16:35:06-04:00 error Cardfight!! Vanguard Wiki parsing error {"error": "no English image found in https://cardfight.fandom.com/wiki/Vairina_Valiente (XPath: //span[contains(@Class,'English')]/a/@href and //div[contains(@Style,'float:left;')]/a/@href)", "name": "Vairina Valiente"}
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.cardNamesToDeck
/app/plugins/vanguard/parser.go:110
github.com/jeandeaual/tts-deckconverter/plugins/vanguard.fromDeckFile
/app/plugins/vanguard/parser.go:186
main.handleText.func1
/app/cmd/tts-deckconverter-gui/main.go:163
2021-09-20T16:35:06-04:00 info Generating 1 decks in C:\Users\devil\OneDrive\Documents\My Games\Tabletop Simulator\Saves\Saved Objects
2021-09-20T16:35:06-04:00 info Generating C:\Users\devil\OneDrive\Documents\My Games\Tabletop Simulator\Saves\Saved Objects\Phoenix.json

Failed to parse on moxfield

Describe the bug
When pasting in a deck URL from moxfield.com, the deck fails to import, a card will fail its fuzzy match and the request will timeout. The card that fails changes each time.

To Reproduce
Steps to reproduce the behavior:

  1. Select a Moxfield deck, and copy the URL.
  2. Paste URL into ttsdeckconverter-gui
  3. Wait for the error code.

Expected behavior
Deck should finish generating and there should be notice it's been added to the specified directory.

Desktop (please complete the following information):

  • Program: ttsdeckconverter-gui for Windows
  • OS: [e.g. Windows]
  • Version: May 24th release.

Additional context
This problem seems to have started in the last few days. Archidekt decks do seem to work, have not tested other deckbuilding sites.

Yugioh Master Duel Importer Can't Query Cards

Using the .ydk and YGOPRODeck importers trying to import a deck gives an error of "Couldn't parse deck(s): couldn't query card ID XXXXXXXX (format: master Duel) received invalid status code 400". Where XXXXXXXX is the card ID of a card in the deck that I'm attempting to import. This is on Windows.

Some sets not found in V1 api

Describe the bug
Crown-zenith sets not found:

When i use "CRZ" as a set name it responds with the following error:
pkm/parser.go:116 Invalid set code: CRZ

I think this happens because the V1 version of the api is used.
When i curl the V1 api and grep for "CRZ" i get 0 hits:
but when i use the V2 api:

curl "https://api.pokemontcg.io/v2/sets" | jq | grep -i crz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 51378 0 51378 0 0 40891 0 --:--:-- 0:00:01 --:--:-- 40906
"ptcgoCode": "CRZ",
"ptcgoCode": "CRZ",

Then i can see the sets.

I did a little bit of digging and i came across the following:

in "plugins/pkm/api.go" you import:
pokemontcgsdk "github.com/PokemonTCG/pokemon-tcg-sdk-go/src"

they do have a V2 version:
https://github.com/PokemonTCG/pokemon-tcg-sdk-go-v2

I tried to change it and build the gui version but it didn't work and i have never used go so i don't know how to fix it :)

To Reproduce
Steps to reproduce the behavior:

  1. start the gui with the -debug flag
  2. klick on the Pokemon tab
  3. in the text field input "1 Oddish CRZ 1"
  4. fill in a deck name
  5. klick generate
  6. look in terminal for error output

Expected behavior
I expected a deck file, Just like when you use other set names.

Screenshots
N/A

Desktop (please complete the following information):

  • Program: [GUI] "Tried both but mainly use the gui"
  • OS: [Linux: Ubuntu 22.04 LTS]
  • Version: [0.8]

Additional context
N/A

Can't run the GUI application on macOS Catalina

The macOS DMG package doesn't seem to run on macOS Catalina or newer.

To Reproduce

After that the app doesn't open. When running it from the command-line, I get the following error: LSOpenURLsWithRole() failed with error -10810 for the file tts-deckconverter-gui.app.

The common solutions found on Google for this error are:

  • Run chmod +x tts-deckconverter-gui.app/Contents/MacOS/tts-deckconverter-gui
  • Run xattr -dr com.apple.quarantine tts-deckconverter-gui.app
  • Open the app using Right-Click → Open.
    None of these worked.

The only solutions I found are:

  • Directly run the executable inside tts-deckconverter-gui.app → Contents → MacOS, but that's not very user-friendly.
  • Create an Apple Developer Account and sign the package using fyne-cross darwin -release, but that's expensive.

Cardfight Vanguard Plugin Improvement Ideas

Hello! Before I jump in, I just wanted to say your Deckconverter program is fantastic! It's exactly what I was looking for in order to make deckbuilding for VG TTS easier. That said, I noticed a few things that might make it even more useful:

  1. Being Able to Pull Sets/Clans/Etc from the Cardfight Wiki:
    The ability to pull directly from the Cardfight Wiki is extremely useful, but the program requires a "Card List" heading on the entered page, as well as an "Amount" of cards, which severely limits this feature. Many pages on the wiki simply do not have those sections, or have different wordings. As an example, the clan page for Dimension Police ( https://cardfight.fandom.com/wiki/Dimension_Police_(V_Series) ) has "List of Dimension Police Cards" instead of "Card List", so it doesn't work. Most card sets aside from Trial Decks also do not list an Amount. If you could make it so the program had the ability to pull sections without that specific header, as well as maybe set the card count default to 1 if it isn't listed, then it would allow people to grab all cards for a Set/Clan/Nation/Etc, instead of having to find a specific deck list. It would be extremely useful!

  2. Small Bug - New Overdress Cards Not Showing Nation:
    I don't know if you follow it, but Vanguard recently announced another major Reboot, called "Overdress", with new mechanics, etc. One major change; no more Clans in the new stuff, and all new Nations. I pulled a Trial Deck off the Cardfight Wiki with the program, but on the generated cards, the new Nations are not showing on the card information.

  3. Personal Request - Ability to Generate Cards Without Text Fields Bolded:
    This is more a personal request. I've been working on a VG TTS Mod, and when I need to do regex stuff in LUA referencing generated card information, such as Power/Shield/Etc, the generated tags making the text bold keep tripping me up. If there's an easy way to implement it, I would really appreciate an option to turn that off for generated cards.

[PKM] Cant generate Shining Fates card

Describe the bug
It fails to generate shining Fates card such as rusted sword and yanmega SHF 001

To Reproduce
Steps to reproduce the behavior:

  1. Open TTSConverterGUI
  2. Add 1 Yanma SHF 001 to the text box
  3. Click generate
  4. No file generated

Expected behavior
A json file with yanma SHF 1 generated

Screenshots
image
image

Desktop (please complete the following information):

  • Program: GUI
  • OS: Windows
  • Version: 10

Additional context
Add any other context about the problem here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.