views:

159

answers:

5

Hi, I am thinking of creating a video library software which keep track of all my videos and keep track of videos that I already haven't watched and stats like this. The stats will be specific to each user using the software.

My question is, is python appropriate to create this software or do I need something like c++.

+1  A: 

Yes. Python is much easier to use than c++ for something like this. You may want to use it as a front-end to a DB such as sqlite3

foosion
Thanks for the mention of sqlite as DB, though i was thinking about using it you have affirmed it.
andho
+6  A: 

Python is perfectly appropriate for such tasks - indeed the most popular video site, YouTube, is essentially programmed in Python (using, of course, lower-level components called from Python for such tasks as web serving, relational db, video transcoding -- there are plenty of such reusable opensource components for all these kinds of tasks, but your application's logic flow and all application-level logic can perfectly well be in Python).

Just yesterday evening, at the local Python interest group meeting in Mountain View, we had new members who just moved to Silicon Valley exactly to take Python-based jobs in the video industry, and they were saying that professional level video handing in the industry is also veering more and more towards Python -- stalwarts like Pixar and ILM had been using Python forever, but in the last year or two it's been a flood of Python adoption in the industry.

Alex Martelli
Odd how no answer about python and video is complete without a mention of You-Tube :)
whatnick
@whatnick, considering what % of videos on the web YouTube is serving (comscore says 43%, vs 2nd-place Fox Interactive Media at 4%, third-place Yahoo sites at 2.5%, etc) it would indeed be _astonishing_ if the site with such a huge video-serving traffic was not even *mentioned* -- conversely, there's nothing _odd_ in seeing it mentioned.
Alex Martelli
Wow! I didn't know that youtube used python.
andho
+1  A: 

Maybe you should take a look at this project: Moovida

It's a complete media center, open source, written in python that is easy to extend. I don't know if it will do exactly what you want out of the box but you can probably easily add the features you want.

Etienne
Thanks for the link. It would be a bummer if it does all i need :P cox i wanted a project like this to start learning a new language.
andho
+1  A: 

Of course you can use almost any programming language for almost any task. But after noting that, it's also obvious that different languages are also differently well adapted for different tasks.

C/C++ are languages that are very "hardware friendly". Basically, the languages are just one abstraction level above assembler, with C's use of pointers etc. C++ is almost like a (semi-)portable object oriented assembler, if one wants to be funny. :) This makes C/C++ fast and good at talking to hardware.

But those same features become mis-features in other cases. The pointers make it possible to walk all over the memory and unless you are careful you will leak memory all over the place. So I would say (and now C people will get angry) that C/C++ in fact are directly inappropriate for what you want to do.

You want a language that are higher, does more things like memory management automatically and invisibly. There are many to choose from there, but without a doubt Python is eminently suited for this. Python has the last couple of years emerged as The New Cool Language to write these kind of softwares in, and much multimedia software such as Freevo and the already mentioned Moovida are written in Python.

Lennart Regebro
+1  A: 

If you want your code to be REAL FAST, use C++ (or parallel fortran).

However in your application, 99% of the runtime isn't going to be in YOUR code, it's going to be in GUI libraries, OS calls, waiting for user interaction, calling libraries (written in C) to open video files and make thumbnails, that kind of stuff.

So using C++ will make your code 100 times faster, and your application will, as a result, be 1% faster, which is utterly useless. And if you write it in C++ you'll need months, whereas using Python you'll be finished much faster and have lots more fun.

Using C++ could even make it a lot slower, because in Python you can very easily build more scalable algorithms by using super powerful primitives like hashes, sets, generators, etc, try several algorithms in 5 minutes to see which one is the best, import a library which already does 90% of the work, etc.

Write it in Python.

peufeu