It’s the Open Sourced SharkAttack, yeah!
I’ve been working on my project called “SharkAttack” for awhile. It started out as a simple little Adobe AIR app to download new music from RSS feeds. Soon after, I rewrote the whole thing as a service with Node.js. And then, just lately I rewrote some of THAT to use Grunt.js.
Anyway, the aim of SharkAttack is to start with a list of your favorite music news feeds that will occasionally offer free music. The service will then dive into these rough seas and download the latest tunes a few times a day. It will deal with RSS feeds, webpages, YouTube, Soundcloud, Vimeo, and plain old MP3.
SharkAttack will convert, transcode, and track the songs. It publishes a playlist for both my personal website http://play.blastanova.com and for my radio show every Wednesday at 1pm EST on the awesome http://www.codebassradio.net under the leadership of the even awesomer Vicky Ryder.
In the past few weeks, I authored some admin pages to add/remove/edit your sources, review logs, and edit my weekly show script. Additionally, I added some personal radio functionality – meaning that you open up a page on your local network and the server will stream a personal radio station based on the songs that SharkAttack has for you at that moment.
I’m at version 1.9 right now. As I approach 2.0, I’d like to get the streaming solid (right now it’s a bit iffy) and get some really personal stuff in there like reading of your Twitter/Facebook messages as “radio ads” between songs.
It’s great to take a project like this all the way to something I enjoy using (or listening to). It never would have happened without my weekly radio slot on Codebass to keep making the SharkAttack better. And now I think it’s got a few additional purposes as I keep adding functionality.
Here’s a rundown of the tech I used:
- Based on Node.js
- Express.js for radio streaming and administration
- MongoDB for maintaining data (I use MongoHQ)
- Twitter Bootstrap and AngularJS for administration and radio pages
- D3.js for daily download charts
- GruntJS for media library and playlist building tasks (run as cron jobs)
- FFMPEG and Youtube-DL for video conversion
Anyway – it’s out there on GitHub land now. It’s pretty fine tuned for my purposes, but maybe it’ll help someone else, either as a whole or with the code torn apart in bits.