Oh, sure. All the time. Sometimes if you need some solution to a problem you need to invent it yourself.
Back in the day when I had a Windows phone, I used Microsoft’s Zune player to sync it - but I used iTunes for my actual library management. This was a problem because all my playlists and ratings were in iTunes and there was no clear migration path. I’m pretty obsessive about organizing and cataloging my media files so this was something I couldn’t let stand. Unfortunately while iTunes had a decent SDK, Zune had none (at least not a public one).
I basically had to reverse engineer Zune’s APIs to figure out how to synchronize things like playlists and star ratings between the two platforms. It was all a big ugly hack — on the one side using iTunes’ documented but limited COM APIs, and on the other using Zune’s completely undocumented but thankfully also COM-based APIs so I could at least try to infer some functionality behind them via reflection. It was a precarious hack as well. When it worked, it worked well enough, but any time the Zune client software updated, parts of their API would change or break and I’d have to try to figure out how to hack around them again.
All these years later, iTunes still has a COM SDK but it hasn’t been updated since 2004 so it’s stuck only supporting some of the most basic iTunes features for automation.
I can still use it for some CLI tools that I have where I can use keyboard shortcuts to set star ratings on songs without having to manually go in iTunes while using it. That way if I have a playlist going in the background I can just press one of a set of programmable keys to launch this little CLI tool to rate a song on the fly without otherwise interrupting what I’m doing. Sadly the SDK doesn’t support the newer heart ratings, or things like checking/unchecking songs from playlists.
I guess what I’m discovering from writing this post is I seem to spend a lot of time trying to automate all my weird scenarios around media management.
Lately I’ve been working on a project in my spare time to control a BLE-based robotic cat toy. The company that made it stopped supporting it and delisted their applications. This was a very expensive toy that I didn’t want to stop working because of the whims of the company. It was a big challenge - I had to reverse engineer their protocols, reverse engineer their applications, and write something new to replicate the functionality. Just to amp up the difficulty I also decided to build a standalone ESP32-based device that I can use to control the robot without even needing a phone. It’s been a big challenge working with lots of unfamiliar technology but it’s also been a lot of fun learning and experimenting with these new (to me) things.
Back in the day when I had a Windows phone, I used Microsoft’s Zune player to sync it - but I used iTunes for my actual library management. This was a problem because all my playlists and ratings were in iTunes and there was no clear migration path. I’m pretty obsessive about organizing and cataloging my media files so this was something I couldn’t let stand. Unfortunately while iTunes had a decent SDK, Zune had none (at least not a public one).
I basically had to reverse engineer Zune’s APIs to figure out how to synchronize things like playlists and star ratings between the two platforms. It was all a big ugly hack — on the one side using iTunes’ documented but limited COM APIs, and on the other using Zune’s completely undocumented but thankfully also COM-based APIs so I could at least try to infer some functionality behind them via reflection. It was a precarious hack as well. When it worked, it worked well enough, but any time the Zune client software updated, parts of their API would change or break and I’d have to try to figure out how to hack around them again.
All these years later, iTunes still has a COM SDK but it hasn’t been updated since 2004 so it’s stuck only supporting some of the most basic iTunes features for automation.
I can still use it for some CLI tools that I have where I can use keyboard shortcuts to set star ratings on songs without having to manually go in iTunes while using it. That way if I have a playlist going in the background I can just press one of a set of programmable keys to launch this little CLI tool to rate a song on the fly without otherwise interrupting what I’m doing. Sadly the SDK doesn’t support the newer heart ratings, or things like checking/unchecking songs from playlists.
I guess what I’m discovering from writing this post is I seem to spend a lot of time trying to automate all my weird scenarios around media management.
Lately I’ve been working on a project in my spare time to control a BLE-based robotic cat toy. The company that made it stopped supporting it and delisted their applications. This was a very expensive toy that I didn’t want to stop working because of the whims of the company. It was a big challenge - I had to reverse engineer their protocols, reverse engineer their applications, and write something new to replicate the functionality. Just to amp up the difficulty I also decided to build a standalone ESP32-based device that I can use to control the robot without even needing a phone. It’s been a big challenge working with lots of unfamiliar technology but it’s also been a lot of fun learning and experimenting with these new (to me) things.