fut
Version:
fifa 17 web-app api
329 lines (287 loc) • 8.3 kB
Markdown
# fut - FIFA 17 - unofficial
<p align="center">
<a href="https://www.npmjs.com/package/fut"><img src="https://img.shields.io/npm/dm/fut.svg" alt="npm downloads"></a>
<a href="https://www.npmjs.com/package/fut"><img src="https://img.shields.io/npm/v/fut.svg" alt="npm version"></a>
<a href="https://standardjs.com"><img src="https://img.shields.io/badge/code%20style-standard-brightgreen.svg" alt="js-standard-style"></a>
</p>
## Usage
### Quick start
```javascript
'use strict'
const readline = require('readline')
const Fut = require('fut')
const Promise = require('bluebird')
const co = require('co')
const storage = require('node-persist')
storage.initSync()
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
const email = process.env.EMAIL
const password = process.env.PASSWORD
const platform = process.env.PLATFORM
const secret = process.env.SECRET
var fut = new Fut({
email,
password,
secret,
platform
loginType: 'web'
// this is optional and happens rarely
captchaHandler: (captcha, resolve) => {
co(function * () {
yield fs.writeFileAsync('captcha.jpg', captcha)
// Do something with the captcha file
resolve(captchaRes.text)
})
},
tfAuthHandler: (send) => {
return new Promise((resolve, reject) => {
rl.question('Enter your two factor code:', function (code) {
return resolve(code)
})
})
},
// yo can return a simple sync function to save/loadVariable
saveVariable: (key, val) => {
console.log('setting item', key)
storage.setItem(key, val)
},
// or a promise if you do something async
loadVariable: co.wrap(function * (key) {
var item = storage.getItem(key)
return item
})
})
co(function * () {
yield fut.login()
let resp = yield fut.getCredits()
console.log(resp)
}).catch((e) => console.log(e.stack))
```
## Note: All method returns a promise!
##### Options
See source: https://github.com/futjs/fut-api/blob/master/src/index.js#L20
## Login
See quick start, better docs coming soon...
* platform: "ps3","ps4","pc","x360","xone"
## Credits
```javascript
apiClient.getCredits()
```
* response: Object
* credits: number
* bidTokens: ??
* currencies: []
* name: string
* funds: number
* finalFunds: number
* unopenedPacks: Object
* preOrderPacks: number
* recoveredPacks: number
## Pilesize
```javascript
apiClient.getPilesize()
```
* response: Object
* entries: []
* value: number
* key: number -> 2 == Tradepile, 4 == Watchlist
## Tradepile
```javascript
apiClient.getTradepile()
```
* response: Object
* credits: number
* currencies: []
* name: string - values "COINS","POINTS","DRAFT_TOKEN"
* funds: number
* finalFunds: number
* duplicateItemIdList: ??
* errorState: ??
* auctionInfo: []
* bidState: string
* buyNowPrice: number
* confidenceValue: number
* currentBid: number
* expires: number
* offers: number
* sellerEstablished: number
* sellerId: number
* sellerName: string
* startingBid: number
* tradeId: number
* tradeOwner: boolean
* tradeState: string
* watched: boolean
* itemData: object
* assetId: number
* assists: number
* attributeList: []
* index: number
* value: number
* cardsubtypeid: number
* contract: number
* discardValue: number
* fitness: number
* formation: string
* id: number
* injuryGames: number
* injuryType: string
* itemState: string
* itemType: string
* lastSalePrice: number
* leagueId: number
* lifetimeAssists: number
* lifetimeStats: []
* index: number
* value: number
* loyaltyBonus: number
* morale: number
* nation: number
* owners: number
* pile: number
* playStyle: number
* preferredPosition: string
* rareflag: number
* rating: number
* resourceId: number
* statsList: []
* index: number
* value: number
* suspension: number
* teamid: number
* timestamp: number
* training: number
* untradeable: boolean
## Relist tradepile
```javascript
apiClient.relist()
```
* response: Object
* tradeIdList: []
* id: number
## Watchlist
```javascript
apiClient.getWatchlist()
```
* response: -> see tradepile response
## Transfermarket
```javascript
apiClient.search({type: "player", lev: "gold", maskedDefId: 183907, pos: "CB" })
```
* filter
* searchFilterBase
* type: string -> player, training, development
* start: number -> page
* num: number -> items per page
* micr: number -> min bid
* macr: number -> max bid
* minb: number -> min buy
* maxb: number -> max buy
* lev: string -> bronze, silver, gold
* playerSearchFilter extends searchFilterBase
* maskedDefId: number -> baseId
* rare: string -> SP
* zone: string -> defence, midfield, attacker
* pos: string -> GK, CB, LB, RB, ...
* nat: number -> nationId
* leag: number -> leagueId
* team: number -> teamId
* playStyle: number -> playerStyleId
* consumableFilter extends searchFilterBase
* cat: string -> playerTraining, GKTraining, position, playStyle, managerLeagueModifier, contract, fitness, healing
* positionChangeSearchFilter extends consumableFilter
* pos: string -> LB-LWB (OLD-NEW)
* playerStyleSearchFilter extends consumableFilter
* playStyle: number -> playerStyleId
* response: -> see tradepile response
## Place bid
```javascript
apiClient.placeBid(tradeId, coins)
```
* tradId: number
* coins: number
* response: -> see tradepile response
## List item
```javascript
apiClient.listItem(itemDataId, startingBid, buyNowPrice, duration)
```
* itemDataId: number -> itemData.id
* startingBid: number
* buyNowPrice: number
* duration: number -> seconds -> valid values 3600 = 1h, 10800 = 3h, 21600 = 6h, 43200 = 12h, 86400 = 1d, 259200 = 3d
* response:
* id: number
## Auction status
```javascript
apiClient.getStatus([tradeIds])
```
* tradeIds: number[] -> tradeId
* response: -> see tradepile response
## Add to watchlist
```javascript
apiClient.addToWatchlist(tradeId)
```
* tradeId: number -> tradeId
## remove from tradepile
```javascript
apiClient.removeFromTradepile(tradeId)
```
* tradeId: number -> tradeId
## remove from watchlist
```javascript
apiClient.removeFromWatchlist(tradeId)
```
* tradeId: number -> tradeId
## send to tradepile
```javascript
apiClient.sendToTradepile(itemDataId)
```
* itemDataId: number -> itemData.id
* response: Object
* itemData: []
* id: number
* pile: string
* success: boolean
## send to tradepile
```javascript
apiClient.sendToClub(itemDataId)
```
* itemDataId: number -> itemData.id
* response: Object
* itemData: []
* id: number
* pile: string
* success: boolean
## Quick sell
```javascript
apiClient.quickSell(itemDataId)
```
* itemDataId: number -> itemData.id
* response: Object
* items: []
* id: number
* totalCredits: number
## Functions
### Validate price/coins
```javascript
futapi.isPriceValid(coins)
```
returns true or false
### Calculate valid price/coins
```javascript
futapi.calculateValidPrice(coins)
```
returns valid coins amount
### Calculate next lower price/coins
```javascript
futapi.calculateNextLowerPrice(coins)
```
returns next lower coins after calculating valid price
### Calculate next higher price/coins
```javascript
futapi.calculateNextHigherPrice(coins)
```
returns next higher coins after calculating valid price