Releases: tfmart/ScrobbleKit
ScrobbleKit v2.0.0 - Swift 6.0 Concurrency Release
Major release featuring Swift 6.0 strict concurrency support
What's New
- Swift 6.0 concurrency support
- Added support for Linux
- SBKManager is now an actor
- Remove support for completion handler methods
Breaking Changes
This is a major version with breaking changes:
- Minimum Swift version increased to 6.0
- SBKManager is now an actor (requires await for method calls)
- Completion handler methods removed (async/await only)
Migration Guide
Before (completion handlers):
manager.getInfo(forAlbum: .albumArtist(album: "Album", artist: "Artist")) { album, error in
// Handle result
}After (async/await):
do {
let album = try await manager.getInfo(forAlbum: .albumArtist(album: "Album", artist: "Artist"))
// Use album
} catch {
// Handle error
}Supported Platforms
- iOS 13.0+
- macOS 10.15+
- watchOS 6.0+
- tvOS 13.0+
- visionOS 1.0+
- Linux
- Swift 6.0+
Installation
Swift Package Manager
dependencies: [
.package(url: "https://github.com/tfmart/ScrobbleKit.git", from: "2.0.0")
]ScrobbleKit 1.1.1
This version of ScrobbleKit contains the following improvements:
SBKManager
- Added a
signOut()method that removes an session key from a SBKManager instance
Get Recent Tracks API
- Renamed the date range parameter
toandfromtostartDateandendDate - Changed the timestamp properties type from
TimeIntervaltoDatetype
Completion Handler methods
- When the project migrates to Swift 6.0, completion handler methods will be removed from the package. For now, deprecation warning have been added to these methods, alerting users to migrate to async/await versions of the APIs
ScrobbleKit 1.1.0
This new release includes the following additions:
Scrobble Multiple Tracks
- Added
SBKTrackToScrobblemodel to represent a track to be used submited in the scrobble methods - Update scrobble methods to allow scrobbling multple tracks at once by providing an array of
SBKTrackToScrobble - Updated
SBKScrobbleResponsewith new properties to easily check which tracks were successfully scrobbled or not:isCompletelySuccessful: a boolean property indicating if all tracks were scrobbledacceptedScrobbles: a list of tracks that were scrobbledignoredScrobbles: a list of tracks that failed to scrobble
New Tag Services
- Added new services to SBKManager:
getWeeklyChartList(forTag:): Get a list of available charts for this tag, expressed as date ranges which can be sent to the chart services.getInfo(forTag:): Fetch information about a taggetSimilarTags(to:): Get a list of tags similar to the one providedgetTopAlbums(forTag:): Fetches a list of albums that are most tagged by the provided taggetTopArtists(forTag:)`: Fetches a list of artists that are most tagged by the provided tag
New SBKURLBuilder
- Added
SBKURLBuilderstruct to easily construct Last.fm URLs - Provides methods to create URLs for tracks, artists, albums, and tags
- Includes robust error handling with
SBKURLBuilderErrorenum
The documentation has also been updated to reflect these new APIs on this release. If you need any help or want to contribute, feel free to open an Issue or a Pull Request!
Full Changelog: 1.0.4...1.1.0
ScrobbleKit 1.0.4
This new release includes the following improvement:
Added a new date parameter to the scrobble method, allowing to scrobble a song to a custom timestamp instead of only of the current timestamp a scrobble is requested
Thanks for trying out ScrobbleKit, if you need any assistance or have any feedback, feel free to open a new issue or to contribute with a pull request!
ScrobbleKit 1.0.3
Hey there! This patch includes the following changes:
- Updated the
urlproperty type from bothSBKAlbumandSBKTagmodels from an optional String to an optional URL (#7)
Thanks for trying out ScrobbleKit, if you need any assistance or have any feedback, feel free to open a new issue or to contribute with a pull request!
1.0.2
Greetings ScrobbleKit users! This patch includes several fixes and improvements:
- We have updated the return type of the
getInfo(forArtist:)function fromSBKAlbumResponsetoSBKAlbum. (#6) - Additionally, we have updated the return type of the
getInfo(forArtist:)function fromSBKArtistGetInfoDatatoSBKArtist. - We have changed the data types of the
playcountandlistenersproperties in all public models fromString?toInt?. (#5) - We have updated MusicBrainz ID properties from
String?toUUID?, andrenamed them tomusicBrainzID. - We have also updated
urlproperties in all public models fromString?toURL?.
In addition, we've added several new features:
- The
SBKArtistmodel now includes the following properties:isOnTour(optional boolean): indicating if the artist is currently on tour.tags(optional array ofSBKTags): listing the tags applied to an artist.wiki(optional instance ofSBKWiki): representing the Wiki entry for the artist.similarArtists(optional list ofSBKArtist): other artists that are similar to the one represented by the instance.
- We have updated and added new properties to the
SBKImagemodel:- We've changed all model property types from
String?toURL?. - We've added a new
largestSizeproperty, which returns the URL for the highest quality image available.
- We've changed all model property types from
- The
SBKSimilarArtistmodel now includes a newartistproperty (instance ofSBKArtist) and made thematchproperty public.
Thank you for using ScrobbleKit!
ScrobbleKit 1.0.1
This release includes the following patches:
- The
getSimilarTracksmethod now returns and array of a new object,SBKSimilarTrack. This object returns the data of the track it represents, under thetrackproperty and it also includes a newmatchproperty, to indicate how similar the song is to the original track (#1) - Fixes a naming convention issue on SBKArtistGetInfoData (#3)
Thanks for trying out ScrobbleKit, if you need any assistance or have any feedback, feel free to open a new issue or to contribute with a pull request!
ScrobbleKit 1.0
Welcome to the debut of ScrobbleKit 1.0, the newest Last.fm API client for Swift. Our library is designed to streamline the process of incorporating the features of the musical social network into applications across all Apple platforms.
In this inaugural release, you'll find:
- A user-friendly interface for over 30 API methods available in Last.fm's catalog
- Support for both async/await and completion-handler based concurrency models
- Comprehensive documentation covering the majority of functionalities provided