1.1.7 • Published 4 years ago

frhd-api v1.1.7

Weekly downloads
56
License
-
Repository
github
Last release
4 years ago

Installation

npm i frhd-api At least Node.js v14 is required

About

frhd-api is an easy-to-use module which allows you to request data from FRHD with an object oriented style, written in TypeScript. The library caches every fetched structure, so more structures can be present instead of partial data, but this can be disabled.

Documentation

For now, typings

Examples

Getting profile info:

const { FRHD } = require('frhd-api');
const api = new FRHD();

api.fetchProfile('Crypt').then(console.log);

Output:

Profile {
  username: 'Crypt',
  subscribers: 479,
  avatar: 'https://secure.gravatar.com/avatar/3491bde29efd5fed12c02724210cb508/?s=100&d=mm&r=pg',
  points: 826,
  completed: 104,
  rated: 93,
  comments: 121,
  created: 2,
  headGear: 1,
  mobile: { level: null, raceWins: null, headGear: null },
  tracks: [
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/f/64/336274/250x150-v12.png',
      url: 'https://www.freeriderhd.com/t/336274-untitled',
      time: '0:04.93',
      auto: false,
      holdup: false,
      name: 'Untitled',
      authorUsername: 'Crypt'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/0/de/153371/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/153371-shadowland',
      time: '0:21.73',
      auto: false,
      holdup: false,
      name: 'Shadowland',
      authorUsername: 'Crypt'
    }
  ],
  history: [
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/2/8c/713551/250x150-v12.png',
      url: 'https://www.freeriderhd.com/t/713551-inca',
      time: '0:35.17',
      auto: false,
      holdup: false,
      name: 'Inca',
      authorUsername: 'Cynic'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/b/8c/1001/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1001-wild-west',
      time: '0:25.73',
      auto: false,
      holdup: false,
      name: 'Wild West',
      authorUsername: 'weewam'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/f/ed/1004/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1004-mountain-ride',
      time: '0:17.47',
      auto: false,
      holdup: false,
      name: 'Mountain Ride',
      authorUsername: 'Graggen'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/3/1b/1009/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1009-chillwind-woods',
      time: '0:16.50',
      auto: false,
      holdup: false,
      name: 'Chillwind Woods',
      authorUsername: 'lolz666'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/1/e4/1010/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1010-contest-entry',
      time: '0:26.93',
      auto: false,
      holdup: false,
      name: 'Contest Entry',
      authorUsername: 'Graggen'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/7/f9/1011/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1011-blorks-mountain',
      time: '0:29.23',
      auto: false,
      holdup: false,
      name: 'Blorks Mountain',
      authorUsername: 'esklate'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/f/33/1012/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1012-asteroid-escape',
      time: '0:18.93',
      auto: false,
      holdup: false,
      name: 'Asteroid Escape',
      authorUsername: 'RHINOandBIGBLU3'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/7/66/1014/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1014-star-wars',
      time: '0:24.77',
      auto: false,
      holdup: false,
      name: 'Star Wars',
      authorUsername: 'Stig'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/0/21/1024/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1024-the-secret-valley',
      time: '0:28.93',
      auto: false,
      holdup: false,
      name: 'The Secret Valley',
      authorUsername: 'lolz666'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/b/db/1034/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1034-2012',
      time: '0:47.60',
      auto: false,
      holdup: false,
      name: '2012',
      authorUsername: 'iTzChuckNorris'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/6/d7/1038/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1038-preview',
      time: '0:20.97',
      auto: false,
      holdup: false,
      name: 'Preview',
      authorUsername: 'lolz666'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/a/0e/1045/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1045-mountain-level',
      time: '0:55.00',
      auto: false,
      holdup: false,
      name: 'Mountain Level',
      authorUsername: 'RHINO'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/4/ca/1056/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1056-twisting-nether-2',
      time: '0:21.53',
      auto: false,
      holdup: false,
      name: 'Twisting Nether 2',
      authorUsername: 'iTzChuckNorris'
    },
    PartialTrack {
      preview: 'https://cdn.freeriderhd.com/free_rider_hd/tracks/prd/7/08/1074/250x150-v5.png',
      url: 'https://www.freeriderhd.com/t/1074-contest-entry',
      time: '1:56.00',
      auto: false,
      holdup: false,
      name: 'CONTEST ENTRY',
      authorUsername: 'leboulanger'
    }
  ],
  friends: []
}

Getting a track via the JSON API:

const { FRHD } = require('frhd-api');
const api = new FRHD();

api.fetchTrack('153371').then(console.log);

Output:

Track {
  id: 153371,
  title: 'Shadowland',
  description: "Detail by me, wheelie by swaggabot. Just can't finish it.",
  authorUsername: 'Crypt',
  author: null,
  url: 'https://www.freeriderhd.com/t/153371-shadowland',
  defaultVehicle: 'BMX',
  vehicles: [ 'MTB', 'BMX' ],
  size: 4992675,
  featured: false,
  authorIsUser: true,
  powerups: { star: 1, checkpoint: 1, boost: 0, gravity: 0, slowmo: 0, bomb: 0 }
}

Scraping a track:

const FRHD = require('frhd-api');
const api = new FRHD();

api.scrapeTrack('153371-shadowland').then(console.log);

Output:

ScrapedTrack {
  authorUsername: 'Crypt',
  author: {
    username: 'Crypt',
    subscribers: 479,
    avatar: 'https://secure.gravatar.com/avatar/3491bde29efd5fed12c02724210cb508/?s=50&d=mm&r=pg',
    fetch: [Function: fetch]
  },
  title: 'Shadowland',
  rating: 83,
  votes: '1.7k',
  likes: '1.4k',
  dislikes: '298',
  description: "Detail by me, wheelie by swaggabot. Just can't finish it.",
  playersCompleted: 317,
  averageTime: '0:48.23',
  completionRate: 0.01,
  size: '4993K',
  comments: [
    Comment {
      authorUsername: 'ShadowArk',
      timestamp: '2 months ago',
      content: 'mR..A',
      author: [Object]
    },
    Comment {
      authorUsername: 'Radiology',
      timestamp: '3 months ago',
      author: [Object]
    },
    Comment {
      authorUsername: 'murphy_PRO',
      timestamp: '4 months ago',
      author: [Object]
    },
    Comment {
      authorUsername: 'nemisys',
      timestamp: '6 months ago',
      content: 'Swaggabot',
      author: [Object]
    }
  ]
}

For more examples, see the test folder

1.1.7

4 years ago

1.1.6

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago