All Projects → sfuhrm → radiobrowser4j

sfuhrm / radiobrowser4j

Licence: other
RadioBrowser Java API library

Programming Languages

java
68154 projects - #9 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to radiobrowser4j

Apipie
Transform api declaration to js object for frontend. Inspired by VueRouter, koa-middleware and axios.
Stars: ✭ 29 (-3.33%)
Mutual labels:  api-client, api-wrapper, rest-client
zoho-crm-php
An API wrapper library for Zoho CRM, written in PHP.
Stars: ✭ 15 (-50%)
Mutual labels:  api-client, api-wrapper
notionapi-agent
Unofficial Node.js API client for Notion.so
Stars: ✭ 89 (+196.67%)
Mutual labels:  api-client, api-wrapper
ksoftapi.py
Official API Wrapper for KSoft.Si API
Stars: ✭ 31 (+3.33%)
Mutual labels:  api-client, api-wrapper
NClient
💫 NClient is an automatic type-safe .Net HTTP client that allows you to call web service API methods using annotated interfaces or controllers without boilerplate code.
Stars: ✭ 25 (-16.67%)
Mutual labels:  api-client, rest-client
mailerlite-api-python
Python wrapper for Mailerlite API v2
Stars: ✭ 31 (+3.33%)
Mutual labels:  api-client, api-wrapper
sevenbridges-python
SevenBridges Python Api bindings
Stars: ✭ 41 (+36.67%)
Mutual labels:  api-client, rest-client
drowsy
😪 Lazy integrations tool for RESTful interfaces to aid POC development and streamline integrations
Stars: ✭ 19 (-36.67%)
Mutual labels:  api-client, rest-client
apiron
🍳 apiron is a Python package that helps you cook a tasty client for RESTful APIs. Just don't wash it with SOAP.
Stars: ✭ 106 (+253.33%)
Mutual labels:  api-client, rest-client
sleeper-api-wrapper
A Python wrapper for the Sleeper Fantasy Football API.
Stars: ✭ 41 (+36.67%)
Mutual labels:  api-client, api-wrapper
bitrix
Bitrix24 REST API client that doesn't suck. Suffer no more.
Stars: ✭ 59 (+96.67%)
Mutual labels:  api-client, rest-client
pinboard.net
Fully featured API wrapper for pinboard.in
Stars: ✭ 21 (-30%)
Mutual labels:  api-client, api-wrapper
YuiAPI
一个浏览器API测试客户端,API文档生成器,支持chrome/firefox/新版edge
Stars: ✭ 25 (-16.67%)
Mutual labels:  api-client, rest-client
restofus
Restofus - a cross-platform (REST) API client.
Stars: ✭ 18 (-40%)
Mutual labels:  api-client, rest-client
rdfp
This R package connects the DoubleClick for Publishers API from R
Stars: ✭ 16 (-46.67%)
Mutual labels:  api-client, api-wrapper
clickupython
A client for working with the ClickUp API V2
Stars: ✭ 30 (+0%)
Mutual labels:  api-client, api-wrapper
doccano-client
A simple client wrapper for doccano API.
Stars: ✭ 52 (+73.33%)
Mutual labels:  api-client, api-wrapper
Binance
A .NET Standard Binance API library.
Stars: ✭ 199 (+563.33%)
Mutual labels:  api-client, api-wrapper
Notion Api
Unofficial Notion.so API
Stars: ✭ 250 (+733.33%)
Mutual labels:  api-client, api-wrapper
nyxx
Wrapper around Discord API for Dart
Stars: ✭ 217 (+623.33%)
Mutual labels:  api-client, api-wrapper

RadioBrowser4j

Java CI Maven Central ReleaseDate javadoc License

A Java API for the RadioBrowser internet radio station online repository.

The library is useful for applications wanting to retrieve internet radio station URLs, streams and meta information.

How to use

Maven for JDK targets

First step is to include the dependency in your Maven or Gradle project. For Maven, you need this dependency:

<dependency>
    <groupId>de.sfuhrm</groupId>
    <artifactId>radiobrowser4j</artifactId>
    <version>2.2.3</version>
</dependency>

After adding this dependency, you can start by creating one instance and using it

// 5000ms timeout, user agent is Demo agent/1.0
RadioBrowser browser = new RadioBrowser(5000, "Demo agent/1.0");
// print the first 64 stations in station name order
browser.listStations(ListParameter.create().order(FieldName.name))
    .limit(64)
    .forEach(s -> System.out.printf("%s: %s%n",
        s.getName(),
        s.getUrl()
));

You can take a look at the javadoc documentation to get the full concepts of the API.

Gradle for Android targets

Some adjustments are necessary to the packaging of your app build.gradle:

...

android {
...
    packagingOptions {
        exclude 'META-INF/NOTICE.md'
        exclude 'META-INF/LICENSE.md'
        exclude 'META-INF/NOTICE.markdown'
    }
}

dependencies {
...

    implementation 'de.sfuhrm:radiobrowser4j:2.2.3';
}

Add the following statements to the Proguard config if you are obfuscating your build:

-keep class org.glassfish.hk2.utilities.** { *; } -keep class org.glassfish.jersey.** { *; } -keep class org.jvnet.hk2.internal.** { *; } -keep class de.sfuhrm.radiobrowser4j.** { *; }

More examples

The library was extracted from an internet radio player and recorder program in Java, radiorecorder. You can take a look at real-life usage patterns there.

How it is tested

The API is tested using the WireMock REST testing framework. Mocked web requests/responses are located in the test resources.

Version history

  • v2.2.3:
    • Add proxy support for EndpointDiscovery also.
    • Update Jersey dependency to 3.0.4.
    • Fix multiple typos, rework some Javadoc.
  • v2.2.2:
    • Support for HTTP proxy usage.
  • v2.2.1:
    • Update log4j2 test dependency.
  • v2.2.0:
    • Update multiple dependencies.
  • v2.1.0:
    • Switch Jersey JAX-RS 2.3.3 -> 3.0.1.
    • Updated lombok/junit/log4j2 dependencies.
  • v2.0.5:
    • Android support!
  • v2.0.4:
    • Updated dependencies.
  • v2.0.3:
    • Updated dependencies.
  • v2.0.2:
    • Minor code improvements.
    • Updated dependencies.
  • v2.0.0:
    • Support new radiobrowser API.
    • Clients will have to do minor changes to calling the library.
  • v1.3.0:
    • Use new API DNS names.
    • Update maven plugins / dependencies.
  • v1.2.1:
    • Made building with JDK 11 possible.
    • JDK 10/11 building in TravisCI.
    • Updated dependencies.
  • v1.2.0:
    • Minor code improvements.
    • Updated many dependencies, for example Jersey JAX-RS.
  • v1.1.0:
    • Added stream API calls.
    • Added tags list version to Station.
    • ListParameter for list order control.
    • editStation call in RadioBrowser.
  • v1.0.0: First maven release.

License

Copyright 2017-2022 Stephan Fuhrmann

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].