An open API service indexing awesome lists of open source software.

https://github.com/quackster/furnidataparser

A lightweight .NET library for downloading and parsing Habbo furnidata.
https://github.com/quackster/furnidataparser

Last synced: about 1 year ago
JSON representation

A lightweight .NET library for downloading and parsing Habbo furnidata.

Awesome Lists containing this project

README

          

# FurnidataParser

A lightweight .NET library for downloading and parsing Habbo furnidata. The library is written using .NET Standard 2.0 which means both .NET and .NET Framework are supported.

## Other Languages

It’s also available in other languages for your preferred tech stack.

### Available Ports

- **Java:** [furnidataparser-java](https://github.com/Quackster/FurnidataParser/tree/master/java/org/oldskooler/furnidataparser)

A full-featured Java implementation of FurnidataParser, using Java 11+.

## Features

- Fetches Habbo furnidata from official or private URLs (private Habbo servers supported)
- Parses **both**:
- The quirky, non-standard furnidata chunks (multiple JSON-like arrays back-to-back)
- The classic XML furnidata format (`...`)
- Maps data to strongly-typed `FurniItem` objects
- Async methods

## Usage

Fetch from Habbo’s XML endpoint.

```csharp
using FurnidataParser;

var client = new FurnidataClient();

var itemsFromXml = await client.FetchFurnidataAsync(
"https://www.habbo.com/gamedata/furnidata_xml/1");

foreach (var item in itemsFromXml)
{
Console.WriteLine($"ID {item.Id}: {item.Name} [{item.ClassName}]");
Console.WriteLine($" Type: {item.Type} | Category: {item.Category} | Revision: {item.Revision}");
Console.WriteLine($" Dimensions: {item.XDim}x{item.YDim} | Colors: {item.PartColors}");
Console.WriteLine($" Description: {item.Description}");
Console.WriteLine(new string('-', 50));
}

Console.WriteLine($"Fetched {itemsFromXml.Count} items from XML endpoint.");
```

Fetch from Habbo’s chunked JSON endpoint.

```csharp
using FurnidataParser;

var client = new FurnidataClient();

var itemsFromJson = await client.FetchFurnidataAsync(
"https://www.habbo.com/gamedata/furnidata/1");

foreach (var item in itemsFromJson)
{
// ...
}

Console.WriteLine($"Fetched {itemsFromJson.Count} items from chunked JSON endpoint.");
```

Parse from raw data (e.g., local file) using ParseFurnidataAsync.

```csharp
using FurnidataParser;

var client = new FurnidataClient();

var rawData = await File.ReadAllTextAsync("furnidata.xml"); // can be either [[...]] furnidata or XML furnidata
var itemsFromFile = await client.ParseFurnidataAsync(rawData);

foreach (var item in itemsFromFile)
{
// ...
}

Console.WriteLine($"Parsed {itemsFromFile.Count} items from local furnidata file.");
```

## Installation

Install the package via NuGet.

All NuGet versions can be found here: https://www.nuget.org/packages/FurnidataParser

```sh
dotnet add package FurnidataParser
```

Or via this command.

```sh
NuGet\Install-Package FurnidataParser
```

## License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.