Avatar image for callahan09
#1 Edited by callahan09 (24 posts) - - Show Bio

Let me preface by saying that I've never found a good FREE program that I like for keeping track of my 4000+ issue comic collection.  I don't want to pay 30 bucks a year or 50 dollars even for a one-time ownership fee, or anything like that, I just want something free, but I want it to do what I want it to do, and not have to be limited by the features available in the various free solutions I've found.  So having discovered the ComicVine API, I set about developing an application just for me, for keeping track of my collection the way I want.  I understand that there are great solutions out there and they're not terribly expensive, but I'd rather invest my time and keep my developing skills sharp than to invest money.
I just started on this project yesterday, and in terms of utilizing the ComicVine API, what it will do right now is just allow searches for "Volumes", you can retrieve the results through pagination, as is built-in to the ComicVine API, or you can receive all results all at once (auto-cycling through all pages of the result-set until all of the results have been returned).  I built this into a class called Volume, where all of the fields get a property and there are some methods like retrieving the detail for a specific volume and the two I described already where it returns the list of volumes resulting from a search with pagination or all-at-once.

The benefit of the all-at-once version is that it returns all of the results in a List structure containing each volume, then uses LINQ to order the results by count_of_issues followed by start_year, each in descending order.  And of course, it would be easy for anyone using this class to get the result set and perform some LINQ on it themselves to order the results in any way they see fit.  But for me, my ordering seemed logical because the volume that has the most issues appears at the top, and the one with the most issues is probably the one that most people searching would be trying to find.  As a tie-breaker, for multiple results with the same number of issues, it's sorted by year, so say there are 2 volumes called Axe (just making this up) that each had 4 issues, one came out in 1977, the other in 2011.  2011 appears on top, followed by 1977.  Again, if you don't like the ordering, you could just use LINQ to re-order however you want.  Maybe you want start_year to be the primary sort column.  Who knows.  Anything's possible.  But, for instance, "Batman" returns some 400+ results, with the series simply called "Batman" (with over 700 issues) being buried some number of pages into the result set.  It being the most popular, and having the most issues, it makes the most sense for it to appear at the top of the list, and with my sorting, it does.  Alternatively, you could sort by exact matching titles at the very top, THEN issue count or date or both in some order.  Any number of things to do really, but it all relies on every single result being returned all at once, without pagination, in order to be able to bring up just plain vanilla "Batman" at the top of the result set.

Going forward I am going to continue working on the Volume class for now.  I would like to be able to retrieve the date of the last issue published for each volume, and perhaps that could come in handy for presentation or sorting for some users, but I haven't gotten that far yet.

Soon enough, I'm going to tackle class creation for some of the other resources, particularly Issues.  Right now, I'm not thinking too much about implementing classes for every possible resource that the ComicVine API supports because they just simply wouldn't be necessary for my comic collection application that I'm writing for myself, but if there is any interest at all in a library for C# for utilizing the API, just let me know and I will be sure to keep working on it.  Any suggestions or requests or offers of assistance are welcome, but please, if I ever do get around to uploading the code for public perusal, I would appreciate not being criticized on whatever coding ineptitude you think you find on display: I'm doing this for me, and only offering to share it with the public out of good will and the spirit of helpfulness, I'm not looking to be called a genius programmer or an amateur one.


P.S. Stupid typo in the title of the topic, don't think I can (or can't figure out how to) edit it...
Avatar image for jamesewelch
#2 Posted by jamesewelch (677 posts) - - Show Bio

Comicster (comicster.net) is a free .NET based comics collection software that I've been using for a year+. The code is open source and hosted on one of the various source code sites. The developer also has a ComicVine data source add-on in development (not released yet).  He also has a plug-in architecture that'll support plug-ins in the newest version, so you can just develop your own plug-ins to compliment the application. The Comic Vine data source add-on will be developed as one example of using different data sources. It's developed using WPF, web services,

Avatar image for callahan09
#3 Posted by callahan09 (24 posts) - - Show Bio

Thanks for the info, I'll check that out.

Avatar image for callahan09
#4 Posted by callahan09 (24 posts) - - Show Bio

Just to give an update, the library is coming along nicely.  Volumes are fully featured and implemented... all fields associated with volumes can be acquired, and volumes can be searched.  I also put together a class called APICommandBuilder, which allows for quick and easy construction of ComicVineAPI queries.  It's a back-end thing that is used 100% to generate the queries for the other classes (such as Volume), but it can be used stand-alone as well if you want to query for something in particular that the other classes don't have a pre-canned method for.  There is also a Utilities class that has some homemade remedies for XML parsing that I put together to make life easier and to make some of the code in the individual resource classes look better and be easier to develop the remaining parsing code for the other resource classes as I go forward.

There's still a lot to be done... Next I'm going to tackle the Issues resource.
Avatar image for kingfenix
#5 Posted by kingfenix (1 posts) - - Show Bio

I would absolutely love to have a C# library and see the code you have callahan09. As you I am a programmer who wants more tools for my eComic collection.

Avatar image for tlbignerd
#6 Posted by tlbignerd (1 posts) - - Show Bio

I know it's been a while, but has there been any progress on this? I'm about to start a Web API, C#, Upshot, Knockout application. It seems pretty straightforward to just interface with the API, but thought I'd ask if anything had been done so I could get somewhere to start from.

Avatar image for sorrentmutie
#7 Edited by sorrentmutie (7 posts) - - Show Bio