Are you planning to go to the concert? This telegram bot will be your companion, like a good buddy! 😎
He can tell you the biography of the artist/band, find out the actual setlist from the last concerts, play the track and show the lyrics.
Just write the artist/band name to the ConcertBuddy bot and enjoy!
A few of the things you can do with ConcertBuddy:
- ✅ Search artist / band by name
MusicBrainz
- ✅ Read artist / band biography
Last.fm
- ✅ View setlists from recent concerts
Setlist.fm
- ✅ Listen to tracks
- Directly from:
Yandex
- External link:
Spotify
- Directly from:
- ✅ Read the lyrics of the tracks
- Different lyric providers:
AZLyrics
,Genius
,SongLyrics
,MusixMatch
- Different lyric providers:
Feel free to send me feedback on Telegram or file an issue. Feature requests are always welcome.
Project is created with:
.NET: 6.0
Microsoft Visual Studio Community 2022
docker
- Telegram.Bot - the most popular .NET Client for 🤖 Telegram Bot API
- LyricsScraperNET - 🎼 a library for .NET that provides an API to search for lyrics of a song from the web
- SpotifyAPI-NET - a client for Spotify's Web API, written in .NET
- MusicBrainzAPI - Implementation of the MuzicBrainz API v2
- Inflatable.Lastfm - Last.fm SDK for modern .NET platforms
- Genius.NET - C# library to access the Genius REST API in .NET
- HtmlAgilityPack - agile HTML parser that builds a read/write DOM and supports plain XPATH or XSLT (you actually don't HAVE to understand XPATH nor XSLT to use it, don't worry...)
- Serilog - simple .NET logging with fully-structured events
- Yandex.Music API - unofficial wrapper for the Yandex.Music API
The bot is launched on the Ubuntu 22.10 64bit server DigitalOcean droplet in a docker container from docker hub repository. It costs 6$/month.
- Create and configure
ConcertBuddy/ConcertBuddy.ConsoleApp/appsettings.json
file with settings Configuration.cs from template appsettings.template.json. - Build and publish docker image with Dockerfile to docker hub registry.
- Use docker-compose.yml to run container.
Name | Link |
---|---|
Development | TestConcertBuddy |
Production | ConcertBuddy |
The serilog adapter is used for event logging. Logs are written to the console, debug, file. Log rotation is configured. Logging settings are set in appsettings.json. Example: appsettings.template.json
Visit github project page or issue board
- Migration from .NET 6 to .NET 8
- Use FakeItEasy instead of Moq
- Optimize docker image size by using alpine in dockerfile
- Updated external libraries to the latest version
- Fixed a problem with lyric searching (Issue 33)
- Use LyricsScraperNET library instead of LyricsScraper project.
- Updated external libraries to the latest version (Spotify, Telegram, Yandex)
BreakingChanges:
- Refactoring. MusicSearcherClient has many responsibilities and bottleneck (Issue 30)
- Use nuget package of Yandex api instead of project reference (Issue 21)
Bugfixes:
- Map properly MusicBrainz to Spotify track while searching (Issue 29)
- Track searching will return nothing if track not found in spotify (Issue 27)
- Can't find Wu tang artist's information and tracks (Issue 28)
- Can't initialize Yandex client! System.Net.WebException: The remote server returned an error: (400) Bad Request. (Issue 31)
Bugfixes:
- Track searching will return nothing if track not found in spotify (Issue 27)
- Disable page navigation if nothing found (Issue 26)
- Added receiving artist's top 10 tracks from Spotify (Issue 9)
- Catch unhandled exceptions and log them. (Issue 24)
- Configure write logs to file with rotation with docker volume. (Issue 25)
- Listening to the track directly in the telegram. Use Yandex track storage. (Issue 8)
Bugfixes:
- Made SearchLyric async. (Issue 16)
- Remove async from telegram messages validation. Move callback messages in MessageHelper. (Issue 18)
- Migrate app.config to appsettings.json with DI.
- Fixed async task order in SearchArtistByMBID method.
- Rename methods with Async.
- Added some TODO comments.
- Added MemoryCache when searching for artists by mbid to reduce API calls.
- Fixed logs format with date and scope.
- Publish docker version 0.0.1 and deploy on server. 🎉
If you want to support this project or my work in general, you can donate via the link below.
This will always be optional! Thank you! 😉