Changes:​

  • Fixed song requests not working. This was caused by Spotify rolling out changes to their API which caused major issues.
  • Fixed the Upload Song Info copy button
  • Twitch credentials are now hidden by default in Settings -> Twitch
❗❗Final Update Announcement❗❗

This is the last scheduled update for this project. We are excited to announce that there will be a successor in the pipeline. Please note that although no new features will be introduced going forward, we will continue to address and fix any critical bugs that may arise.


New Features:

  • Introduced a Requester.txt file in the output directory when "Split Artist and Title" is enabled.
  • Enabled the webserver to be accessed by other devices on the local network. Admin rights are required for the app.
  • Added a "New Line" option in the output context menu.
  • Implemented custom responses for both the !remove command and when a requested song isn't found in the permitted playlist.
  • Enhanced the output text file to recognize tab (\t), newline (\n), and carriage return (\r) characters.
Improvements:

  • If the webserver fails to start, a response is now generated and logged in both the log file and console window.
  • Improved the URL copying function from the "upload song info" button.
  • Removed the 10-space limit for the "append spaces" option.
  • Added support for short-form Spotify URLs.
  • Updated various translations for accuracy.
Bug Fixes:

  • Fixed an issue where the !play/!pause command status appeared as disabled incorrectly.
  • Rectified a problem where songs could be requested without choosing a reward under Settings -> Rewards.
Changes:

Bug Fixes and Corrections:

• Modified the queue check to prevent items from getting stuck, though this ongoing issue may not be completely resolved.
• Fixed !song command causing a crash sometimes.
• Corrected a configuration mistake where VIP and subscriber settings were switched.
• Resolved a problem with the check live status functionality not operating correctly.
• Resolved a bug causing the widget cover image to malfunction when accessing the settings window.
• Removed saving/reading from the registry since it caused an issue where every time the app starts it would generate a new ID. This caused trouble with the widget not working since the ID was changed. This means all your generated links from Songify (Queue / Widget / History) are now static again!
• Songify should now remember to minimize and start in the tray

Command and API-Related Changes:
• Implemented checks for certain commands to ensure they only function with the Spotify API.
• Introduced the song_id attribute to the song endpoint, allowing the online queue to remain synchronized with the local queue in Songify, even when the latter fails.
• Incorporated a verification step to the history saving (local file) to prevent the currently playing song from being saved twice if it matches the last saved song.

UI and Console Updates:
• Performed UI clean-up, including the removal of pubsub and refunds completely.
• Included Stream Up/Down alerts in the console.

New Features:
• Added a feature to restrict song requests to a designated playlist. To enable, select the playlist and check the box next to it. The feature will search the selected playlist for the track using the trackId from the Spotify API. If a match is found, the song will be added; otherwise, it won't. Be cautious, as this may fail for songs that appear more than once on Spotify, requiring the exact same version.
v1.4.7

Changes:

  • Added support for new Spotify links that contain /intl-XX/
  • Fixed a crash when trying to add a song to the sr playlist
  • Changed the !ssr command trigger to only trigger when there is a space after it. This enables the trigger without text to be used as a guide on how sr works
v1.4.6

Changes:

  • Potential fix for the crashes introduced in 1.4.5
  • ❗ Please check your AV Software if it's interfering with Songify. Norton and Kaspersky is known to cause issues with the app! ❗

v1.4.5

Changes:

  • Made VIPs higher in rank than subscribers. This should fix unexpected behavior on song requests
  • The current playlist is now added to the local web server
  • Fixed an issue where Songify would stop the playback of Spotify in some scenarios
  • Fixed an issue that made the option 'Enable SR (Channel Rewards)' in Settings -> SongRequests not work

Changes:​

  • Added an option to add all song requests to the selected "liked songs" playlist.
  • Fixed broadcasters not being able to request songs on their own channel.
  • Fixed an issue that prevented the loading of playlists.
  • Improved stability and error handling.
  • Added functionality to populate the local queue even when the web queue is unavailable.
  • Implemented a workaround to handle scenarios where the web queue is not available.
  • Improved error handling by adding support for HTTP status codes 500 and 503.
  • Changed all API calls to point to the new server.
  • Added functionality to populate the local queue even when the web queue is unavailable.
  • Implemented a workaround to handle scenarios where the web queue is not available.
  • Improved error handling by adding support for HTTP status codes 500 and 503.
  • Decreased the frequency at which the app compares the queue with the website since it caused throttling.
Please take the time to read the patch notes. There are some important changes in this update.
* If you want to use chat announcements you have to re-login to Twitch for this to work because of changed scopes.
* If you want to use the !songlike command you have to relink your Spotify account for this to work.

Additions
:
* Added Twitch Login for Bot Account.
* Added a !song response. This will get used for the !song command, the auto announce in chat and replaces the "Output Format Twitch" option from Settings -> Output. The Settings can be found in Bot Responses
* Added the ability to have chat responses appear as Announcements in chat. To do so the response has to start with "[announce color]". Color can be "orange", "purple", "blue", "green" and "primary". Primary is the color that you can select in your channel brand settings. Example: [code single][announce orange]This is an announcement[/code] (You have to re-login to Twitch for this to work because of changed scopes)
* Added a response for refunds. Leave empty for no added response [1]
* Changed the Window-Type of the Queue Window to a regular window instead of ToolWindow. This allows it to be captured by OBS and therefore can be used as a Source Dock.
* Added a song blocklist. You can now block individual songs in addition to artists and users.
* Added the queue to the webserver response body so that it can be used in OBS as a custom browser source.
* Added QueueCount to the webserver JSON response.
* Added IsInLikedPlaylist to the webserver JSON response.
* Added beta patch notes to the patch notes window
* Created a new API for the queue. This will allow for more features in the future.
* This API also cleans up the queue and removes songs that are no longer in the app's queue. Before it happened that the queue on the website was different from the queue in the app, which was not intended. With the API the app checks continuously if the queue on the website matches the queue in the app. If not it will update the queue on the website to match the app's queue.
* Added !remove command to the command list. This will remove the latest song request of the user that sent the command. (It will start playing for 1-2 seconds and then get skipped as soon as Songify detects the song)
* Added !songlike command to the command list. This will add the current playing song to a pre-selected playlist. The playlist is selected in Spotify settings. It also checks if the current song is already in the playlist and if so it will not add it again. [2]
* Added !play and !pause commands to the command list. This will allow you to control the playback of Spotify. The command is only available for the broadcaster and mods.
* Added a response for when the new short URL is used. Unfortunately, the short URL is not working yet and Spotify has no way to get the full URL from the short URL. I will keep trying to find a way to get the full URL from the short URL.
* Added separate permissions for song request command and reward. The old UserLevel will be parsed to the new options which are under Settings -> Twitch -> SongRequests

Changes:
* Temporarily disabled PubSub due to a third-party library issue, resorting to IRC chat for channel reward redemptions until the issue is fixed. Rewards that do not require input are currently non-functional. More information at https://github.com/TwitchLib/TwitchLib.Communication/pull/17.
* The following features are not working right now because of this:
* Song Skip Reward
* Refunds
* Redesigned the Settings Window
* Removed the BotConfig Window. The Bot config is now located in the Settings Window as well.
* The UUID will now be stored in the registry as well as the config file. That way if you ever reset the app your UUID is still there and won't mess with the online services.
* Update Spanish translation
* Bot responses can now be empty. This will prevent the bot from sending a response.

Bugfixes:
* Fixed some settings getting unchecked / reverted to standard
* Fixed a bug where the !next command would crash on some occasions
* Fixed a crash when not connected to Twitch Chat but still tried to send current song info
* Fixed a crash that could occur while connecting to the API
* Fixed songs getting stuck in the queue
* Fixed the notification that the app has been minimized even though it has been shut down

[1] Since PubSub is not working right now, this option is not working either. I still want to make clear that this feature is implemented and will work as soon as PubSub is working again.
[2] You have to relink your Spotify account for this to work. This is because of a change in scopes that are required for this feature.
---
Contribute:
We're still looking for translators! If you want to help us out and contribute to the success of Songify, please contact us on Discord or Twitter!
What's Changed
  • Added error handling on the new chat response if the stream is down. For some reason, it doesn't create the option on some occurrences resulting in crashes. This should prevent this, otherwise, go to Settings -> Twitch and enable these options once and turn them off after (if you don't want to use them)
    215459198-f5fb8315-ec17-419e-bdfe-6460bb5dcb5a.png
  • Removed the patch notes from the main window after an app update. It now opens the patch notes window

What's Changed 1.3.9​

Songify App​

  • Added Twitch Login through Twitch API as well as PubSub (Twitch Event Listener).
    • In order to Login with twitch click on Twitch -> Twitch Login or Settings -> Twitch -> Login With Twitch (this will redirect you to a webpage where you have to grant access)
    • After you logged in you can check Settings -> Twitch and see your connection
    • This does not replace the Twitch Chat Login with Account Name, OAuth Token and Channel Name. You still have to set that up too! (Logging in with Twitch will fill out those fields for you, but if you want to use a different account you have to change it manually)
    • You can also now refund points if something fails (Twitch -> Rewards -> Refund when...)
      • In order to refund, a new Channel Point Reward has to be made through Songify! To do this head over to Settings -> Twitch -> Rewards -> Create New Reward. This is a limitation on Twitch's end. Make sure you chose a unique name for the reward. After creating the reward your Rewards page will automatically open. You can see if Songify can manage the reward by the pencil icon in the dropdown of the rewards.
      • It's now possible to track whether the stream is live or not. That way it's possible to limit all Twitch actions (sr, chat commands, auto announce etc.) to only work when the stream is up. If Songify has been started while the stream is live, it won't detect it. You can click on Twitch -> Check Online Status.
  • The config file (config.xml) is not being used anymore. On first startup with the config file present the app will now create 4 new config files called AppConfig.yaml, SpotifyCredentials.yaml, TwitchCredentials.yaml and BotConfig.yaml. These will now be the standard config files since I want to split tokens and credentials from other configs.
  • Added a web server that can be configured in Settings -> Web Server.
    • The web server exposes data of the current playing song in JSON. This can be used to make custom song displays in OBS using browser sources.
  • Added a 5 seconds cooldown on !voteskip after a song has been skipped to prevent accidental voting for the new song if the votes came in too fast
  • Added indicators that show if services are connected or not. These are in the bottom left of the main window and show a red triangle if a service is not connected. Services are: Twitch Chat Bot, Twitch API, Twitch PubSubs, Spotify and WebServer
  • Added custom response for !next and !pos
  • Added a console window that can be opened by clicking View -> Console.
    • The console window shows (for now) only a handful of events.
    • The console window can be attached/detached by clicking the icon on the top left of the console window
  • Added a setting to receive beta updates. This can be found in Settings -> Config
  • Added the ability to change the command triggers. You can now rename commands to whatever you want. This can be found in the bot configuration.
  • Added a 5-times retry on adding a song request to the Spotify queue. This is due to Spotify having a lot of 503 issues lately...
  • Added the option to disable the song request limit
  • Added a channel reward option to skip the current song (this is optional)
  • Added back in telemetry. The data is still anonymous and only used for statistics. I do want to know how many people are using the app after all.
  • The Settings window has been redesigned
  • Moved the !ssr command to the bot configuration
  • Removed the progress.txt file since it caused issues. The proper way to do it now is to use the data from the webserver.
  • Fixed Album Cover download crash on certain circumstances (hopefully)
  • Fixed !next command not working properly
  • Fixed an issue that reverted the "use own app" setting after an update
  • Fixed artist blocklist not saving correctly when the result contains more than one artist
  • Fixed user blocklist comparison check. It was case sensitive before, now its case insensitive
  • Fixed VLC not properly fetching
  • Fixed a crash that would occur if the output directory has been set in the app and it got deleted afterward. It now shows a prompt and reverts back to the app directory if the output directory can't be found
  • Fixed settings getting corrupt after a PC crash or power outage
  • The Spanish translation has been improved by @elhertz

Songify Website​

  • Overhauled the website to make it more user friendly
  • The queue page now shows the current song and the queue in a fancier way and also updates in real-time
  • Moved to a new hosting provider. This should make the website faster and more reliable
  • URL changed to songify.overcode.tv the old URL will be redirected. Older versions of Songify won't be able to connect to the website anymore.

Songify Widget​

  • The widget won't work with older versions of Songify since the web server has been changed.

What's Changed 1.3.9.1​

  • Added checks for live stream status on every command trigger. Before it only checked if Songify was running and the stream went live afterward. It will now check before every command execution (!song, !next, channel points, etc.) if the stream is up.
  • Added a new option in Settings -> Twitch -> "Send offline notification to chat"
    • Enabling this will send a message to chat if the stream is offline. The option to limit Twitch activity has to be enabled for this. It just responds with "The stream is not live right now".
  • At the bottom of the main window, it will now tell you if the stream is offline and actions have been canceled
  • Changed the icon for the web server to be gray if the server is offline since it's not crucial for Songify.
  • The port range on the web server settings has been set to 1025 - 66535

1.3.8​

What's Changed

  • Fixed an issue where it would put the wrong value in the error message when the max requests per user are reached. It now will output the correct number and max amount for the user's user level. For example @Username maximum number of songs in queue reached (Vip 3).
  • Fixed an issue where Songify would render as a black window and was unresponsive until opened from the system tray again
  • Fixed an issue where the min required user level would not display correctly in the settings window
  • Fixed an issue where the patchnotes would not show
  • Added the ability to set the amounts of votes for skipping a song
  • Added !voteskip command for regulars, number of votes can be adjusted (Settings -> Integration -> Configure Bot Responses & Commands)
  • Changed phrasing on the Twitch user level from "Everyone" to "Viewer (non vip/sub)" because it caused some confusion
  • Removed the Menu entry "Twitch -> Bot Config -> Configure Bot Responses & Commands" and moved the onClick function to just "Bot Config" MenuItem

1.3.7​

  • Fixed output format for twitch not working with requester info ({{requested by {req}}})

1.3.6​

  • Added a secondary output format just for Twitch chat. This output will get sent to Twitch chat when the !song command is used.
    • Added {url} parameter to the right-click menu for output format (this adds the Spotify link of the current song)
  • Added Song request user level restriction e.g. only subs and above or only VIPs and above can request songs. You can choose between Everyone, VIP, Subscriber, Moderator, and Broadcaster
  • Added a cooldown to the skip command (5 seconds)
  • Added a new window under File -> Patch Notes. It displays the patch notes for the current and all past versions.
  • Added the ability to set the max song request limit for each user based on the user level. For example, you can now set everyone ( regulars ) to be able to only request 1 song at a time, VIPs 3, subs 5, and so on. The broadcaster has been removed entirely from the limit. Go to Settings -> Songify SR.
  • Added an update screen with patch notes after the app updated
  • Fixed an issue with the skip command (requester could skip everything)
  • Fixed an issue where the position of the window wouldn't be saved correctly
  • Moved error handling to App.cs instead of MainWindow.cs. This way logs should get created even when the app fails to start correctly.

1.3.5​

  • Added a !skip command.
    • Broadcaster / Moderators and the person who requested the current song can skip immediately. Regulars will start a vote of 5 to skip the song. Votes will be reset on song change.
    • Added bot responses for the !skip command
  • Added an option to open the queue window on startup
  • Changed the way that the columns are spaced in the queue window
  • Switched old Patreon links to Ko-Fi
  • Bot responses now will be saved
  • Fixed bot response toggles in Settings not being displayed correctly
  • Fixed issues with progress saving
  • Fixed an issue where the config export would open twice
  • Fixed an issue where with foobar it would cut off the output if it has multiple . in it. (#30)
  • Fixed a bug that made it possible to connect to twitch multiple times resulting in duplicate messages and song requests

1.3.4​

  • Added a message box that pops up when the software crashes, it can open the log file directory
  • Fixed Progress.txt file save location & related crash

1.3.3​

  • Fixed an issue with the config being stored in wrong case format
  • Removed desktop notifications for Twitch disconnect

What's Changed​

  • Added progress bar setup guide for obs by @karimawii in #29
  • Fixed crashes related to Twitch Auto reconnect
  • Fixed different time formats in log files
  • Changed the way settings are written and read (The Theme setting will reset to default, which is the light mode, fixed a typo...)
  • Moved Progressbar related files to a new folder called Progress

Checksums:​

Zipfile​

md5: 09823632c855b12c588e9cbdcb3b1344
sha1: 2b3957881a021d56bbabb1c05150d99505a12693
sha256: 06ea6a54daa8bbe269c2625c2ea115fe70b245efa2596b09270b9a49f1ae282f

Songify.exe​

md5: cf06108ed07c3c01a6abe7015bda4a0c
sha1: c4f5a6678eab6398f8b6db7737fc84cac9d62f60
sha256: cfecfbb2d495aa5342be11a6f5baf6a4a03e322c87ce520044c708413997601b

Full Changelog: v1.3.1...v1.3.2
Top