I've posted here the type of module that I'd love to use, however, no one else seems interested. The budget that I'm now looking at is $400. If there are any freelance developers out there who are interested and feel that $400 is adequate compensation, let me know. If $400 seems pitifully know, let me know that as well.

Comments

pobster’s picture

I think the problem you're probably having is that no-one really understands *exactly* what it is you're trying to achieve? Well, I'm sure there are people who do understand as you've got some 'backers' behind you, but of course it's the developers who need to understand every little detail...

...So here it is... My confused summary of what you'd like - correct me if I'm wrong!

For instance;

http://www.ciclosuno.com/gallery/team/DSCF0086.JPG.html

Make
FUJIFILM
Model
FinePix F402
Aperture Value
f/8
Color Space
sRGB
Exposure Bias Value
0 EV
Exposure Program
Program
Flash
No Flash
Focal Length
6 mm
ISO
200
Metering Mode
Multi-Segment
Shutter Speed Value
1/388 sec
Date/Time
Sat 24 May 2003 03:50:26 PM UTC

Okay, so assume I uploaded this photo 'freshly', you simply want it to be 'atuo-tagged' with taxomony terms gained from this information and have the date and time of the image nodes creation set as when the photo was actually taken??? Is that it? Is that all?!!

Pobster

Brian@brianpuccio.net’s picture

Here's how the module would work:

User goes to the MAQUM upload page (probably should stick this under the "Create Content" area) and selects a file with metadata. The upon upload, the module creates a node with the title of the node being IPTC field Object Name (aka Title aka Field 5). The body of the node would be IPTC field Caption (limited to 2000 characters by spec, aka Field 120). The node creation date and time would be retrieved from EXIF (an example of some EXIF is included in the above post). The IPTC field Keywords (aka Field 25) would be used to tag the image (such as "car" "red" and "race") in one vocabulary called "image tags". The shutterspeed (from EXIF) would be added to the "shutterspeed" vocabulary. The aperture (from EXIF) would be added to the aperture vocabulary. Etc. Etc.

In short, there would be numerous vocabularies which would be populated by various EXIF and IPTC fields in addition to an automagically generated node title and date/time.

pobster’s picture

See you're doing it again ;o) This is probably why no-ones been able to do this before as the jargon is very specialized. What is "Field 120", etc?

Could you give me an *exact* list of the vocabularies required and also point me to a photo on the 'net which contains a good range of metadata I can use for testing?

Thanks

Pobster

Brian@brianpuccio.net’s picture

http://www.controlledvocabulary.com/pdf/IPTC_mapped_fields.pdf

Those are the IPTC fields. I'll come up with a complete list tonight as well as a sample image with all the fields so you can look at them for youself. Phil Harvey's ExifTool is probably best for reading both the EXIF and IPTC metadata. (Command line and cross platform, so it would work well with Drupal in the same way imagemagick does.)

pobster’s picture

Ah excellent! That explains a lot! I'll check back tomorrow morning (am in UK so your tonight is my tomorrow...) and once I get the vocabulary list and a sample image I'll crack on and get a basic working module up and running.

Pobster

Brian@brianpuccio.net’s picture

The second image here has EXIF, IPTC and GPS information embedded. However, the EXIF there varies from the EXIF generated by my camera, a Digital Rebel (sample images with EXIF).

In addition to generating the node title and date/time, from EXIF, I'd like the following vocabluaries:

Model
Shutter
F-Number
ISO
Metering Mode
Focal Length
GPS Longitude
GPS Latitiude

From IPTC, I'd like to pull from keywords (note there may be more than one) and put that into its own vocabulary called something like "photo tags".

I'm not looking for a fully polished module, just one that works 100%. I'm not a programmer, but I can modify existing code to make it do what I want. I could probably learn from whatever you've put together to create more vocabularies at a later time if I wanted.

Before you start doing anything, I'd like to contact you to discuss payment, but your contact form is disabled. I can be reached at brian@brianpuccio.net.

pobster’s picture

Hmmm I was hoping to be able to do this during the day today (as I've been *really* bored) but you've posted a little bit on the late side and I'm packing up work now... I've not got much spare time this weekend but I'll attempt to mock up something, if not definitely on Monday - that's FINISHED on Monday at the latest just to give you a schedule.

It'll probably depend on having the image module installed, hope that's not a problem for anyone? Just seems a bit pointless to rewrite existing code.

As for payment, wait until I'm done with a 'first draft' and happy with what I'm putting out...

Thanks

Pobster

Brian@brianpuccio.net’s picture

I don't at all want you to replace the image module, it does what it does fine, I just want a quicker way to create image nodes. Reinventing the wheel is horrible in Drupal and in OSS in general. I'm not a programmer, but I know how stuff like this should work.

Sorry I posted so late, honestly, I'm an individual, not a corporation, and I just want this done when it's done, not rushed to meet some arbitrary deadline.

Thanks again for being so quick. You're much easier to work with than the people on sites like rentacoder.com.

Enjoy your weekend!

andrewgearhart’s picture

*ping* I'd love to know more details on this too.

If you get it developed, I'd also love to see it as a supported 3rd party module. I would be willing to be part of the team (or the one) who supports the module long term as I could see this as something useful for my family's website.

Andrew Gearhart
Web Developer kinda guy

pobster’s picture

Well, to be honest it sounds too easy? I'm sure there must be more to this than I'm thinking of (because I don't know *any* of the jargon used in the specs...) I could easily knock up a basic module to do what I described above - is that really all you need it to do? Obviously I could theme it and fancy it up later?

Pobster

Brian@brianpuccio.net’s picture

If this is as easy as you say it is, I'd love to see you do it and am willing to pay. A theme isn't necessary since this is just an alternate way of creating image nodes. This would not replace the current image node creation method, rather be an alternative that would do a bunch of work for me.

Brian@brianpuccio.net’s picture

Well, it looks like my dream module will be built! I'm going to allow everyone to use it, I'll release it under the GPL. I see no point in hoarding it and keeping it to myself.

solipsist’s picture

Hi,

TBarregren (Thomas Barregren) here on Drupal.org is the user you should talk to, but I think 400 USD is pitifully low considering the work required. Thomas has been writing EXIF importers before so he's familiar with the task.

--
Jakob Persson
Drupal developer, web designer and usability consultant
http://www.jakob-persson.com

--
Jakob Persson - blog
Leancept – Digital effect and innovation agency

Brian@brianpuccio.net’s picture

If the above Drupaler doesn't work out, I'll contact him. Thank you for the endorsement.

pobster’s picture

Okay afraid I started work on this pretty late today and I'm packing up work (real work!) fairly soon and I'm only say, 85% finished with the project so far... Not bad for only an hours work ;o) I'll finish the rest of it tonight and pretty it up tomorrow night (as I'm afraid I'm out during the day tomorrow on another Drupal project).

Pobster

Brian@brianpuccio.net’s picture

I'm glad to hear this is such an easy task. In my earler thread, I mentioned $150 and here I mentioned I now have a budget of up tp $400. Please contact me regarding payment, etc when you have a chance. My email address is brian@brianpuccio.net

Thanks!

(Are you calling out to ExifTool to read the metadata?)

pobster’s picture

Well I'm afraid I had a brand new HDTV waiting for me after work so I've done nothing else to the module as I couldn't just let it sit there in it's box ;o)

Anyways, the module still at around 85%-ish currently;

Allows you to set which vocabulary in which to create the terms (defaults to 'image gallery' if you have one)
Allows you to set which tags you want to be categorized by.
Uses exiftool to set those tags... (Both Windows and Linux compatible I think! Will need testing by someone with a Windows server.)
Creates a pseudo-image node...

What it doesn't yet do;

Attach an image to the node it creates.
Create new terms, it only copes with terms which already exist...

So other than that it's finished. I've left the two hardest parts till last here, but please just be aware that I will not finish this module for less than the stated $400. It's just not worth my while... Else, you're welcome to have the module 'as it is' for $150? I can gloss over how to do the two outstanding parts to it if you'd like? Apologies to sound so abrupt with that, but I didn't read any previous threads other than this one and well, that's kind of what you offered...

Pobster

Brian@brianpuccio.net’s picture

What do you mean by "psuedo-image node"? I wasn't hoping for a new node type. I want a regular image node.

You mentioned that it doesn't "attach" the image yet. How does it create an image node without an image?

I really wish we discussed this in more detail over email before you started work as I indicated in my post last week. I also really wish you'd read the previous forum post I made here as it goes into great detail about what I'm looking for.

Please, STOP all work until we are both no the same page. I don't think either one of us has been on the same page since day one and you just jumped in. Again, I am not some company looking to get this done as soon as possible. Rather, I'm a college student looking to get some functionality in software that doesn't currently exist. I'd rather have it done and done right in two months than done in a rush and not what I want.

Also, is this for 5.0 RC or the 4.7 branch?

pobster’s picture

I mean "psuedo-image node" as the module currently creates an image node rather than a MAQUM node, so we're both on the right page with that part by the sounds of it. Just to break that down in case it's not clear enough; In order to get an entry on the 'create content' page you're required to "be" a new nodetype, so I've created 'MAQUM' as a new nodetype but when the node is submitted I've changed $node->type = 'image', so yes it's a regular image node.

Currently the module uploads a supplied image to the servers temporary directory and does all the footwork with categorizing it here using exiftool; here's a freebie:

function _MAQUM_exiftool($path) {
  $temp = shell_exec(variable_get('MAQUM_path', '/usr/bin/').'exiftool --list '.escapeshellarg($path));
  $temp = explode("\n", $temp);
  foreach ($temp as $item) {
    $plip = explode(':', $item);
    $info[trim($plip[0])] = trim($plip[1]);
  }
  return $info;
}

The idea next is to pass this already uploaded image to _image_insert which is (obviously) part of the image module. This will grab the uploaded image out of the temporary folder and process it attaching it to the node we've just created. The reason we don't do this ourselves is to keep up with progressions in image.module, this way we stay 'bleeding edge' so to speak... So if image.module is updated it doesn't make any difference to our code. I haven't done this part yet, currently the module creates a blank node of type 'image' which has a title and creation date gained from exiftool and is assigned metadata terms which already exist (creating new terms on-the-fly is easy enough, I just didn't manage to finish this part before I left work).

I wish you'd stop reminding me that you're an 'individual' and not some company, who the hell do you think I am??!! I'M AN INDIVIDUAL and the only reason we haven't discussed your requirements in depth is because at the VERY start I asked;

Okay, so assume I uploaded this photo 'freshly', you simply want it to be 'atuo-tagged' with taxomony terms gained from this information and have the date and time of the image nodes creation set as when the photo was actually taken??? Is that it? Is that all?!!

And well... You repeated what you'd written before just in a different way, so the answer was 'yes' then to - "is that all?" I don't see anywhere where you've asked for anything different to the module I'm writing? This post and your last one (which I'll confess I didn't fully follow as I'm not up on photography lingo, but then that's why I tried to give you an example to make sure I was on the same level as you) simply asked to have something which creates an image node which using Drupal taxonomy, categorizes the image with EXIF metadata gained from exiftool. Anyone who needs two months to complete a simple module like this is an idiot, this is a short module - it hijacks functions from image.module and uses routines which are present in already existing modules - the function I've included in this very post is more or less the only new piece of programming this module requires. This is a SHORT module, it's one full days work at the very most...

I write modules for free if I'm going to use them myself, but I've absolutely no interest in using this module. I only took this one on to help out, not particularly for the pocket money which I don't *need* at all - I've a very good job which doesn't have anything in the slightest to do with programming!

The module is for 4.7, but it's not the kind of module which will require any upgrading to 5.0 - you'll simply need to add a .info file and a menu item for the settings - that should be all.

Pobster

Brian@brianpuccio.net’s picture

I mean "psuedo-image node" as the module currently creates an image node rather than a MAQUM node, so we're both on the right page with that part by the sounds of it. Just to break that down in case it's not clear enough; In order to get an entry on the 'create content' page you're required to "be" a new nodetype, so I've created 'MAQUM' as a new nodetype but when the node is submitted I've changed $node->type = 'image', so yes it's a regular image node.

Excellent. This is ideal.

freebie code

And this is exactly why I can't do this. I wouldn't know to write something like that to save my life. I can't write code from scratch, but I can tinker with someone else's code.

The idea next is to pass this already uploaded image to _image_insert which is (obviously) part of the image module. This will grab the uploaded image out of the temporary folder and process it attaching it to the node we've just created. The reason we don't do this ourselves is to keep up with progressions in image.module, this way we stay 'bleeding edge' so to speak... So if image.module is updated it doesn't make any difference to our code. I haven't done this part yet, currently the module creates a blank node of type 'image' which has a title and creation date gained from exiftool and is assigned metadata terms which already exist (creating new terms on-the-fly is easy enough, I just didn't manage to finish this part before I left work).

Great!

Anyone who needs two months to complete a simple module like this is an idiot, this is a short module - it hijacks functions from image.module and uses routines which are present in already existing modules - the function I've included in this very post is more or less the only new piece of programming this module requires. This is a SHORT module, it's one full days work at the very most...

I understand that this module is not complex, nor does it introduce any novel ideas. The only thing stopping me from doing it myself is that I cannot program, nor do I have the time to learn.

I felt that this is something that could be accomplished in hours and assuming an eight hour day, this is $50 per hour. Not a whole lot, but I didn't think the difficulty level warranted a whole lot more.

The module is for 4.7, but it's not the kind of module which will require any upgrading to 5.0 - you'll simply need to add a .info file and a menu item for the settings - that should be all.

I've looked over the "how to port to 5.x" handbook pages and that is why I didn't really specify initially what version of Drupal because this does seem to be, as you indicate, an easy to upgrade module.

Thank you for clarifying the work you've done. If it is still agreeable, I will pay $400 for the completion of this module. I assume since you have done a decent amount of work so far, that at least half the payment now is reasonable.

Please let me know if you're willing to see this through and for the $400 amount mentioned above.

Thanks for your time.

pobster’s picture

Yeah I can finish it - hold off paying for it until you're happy with it though, no-one should EVER part with any money until full completion of modules/ themes or anything. You're just asking to get stung if you pay up-front...

...I had kind of hoped to be finished with this already as I'm going to be a little bit busy over the next couple of days - but I will endeavour to make time for it. By the way, I'd anticipated around three to four hours solid work to complete and test this module and whilst that may not appear to be very cost efficient for your $400, I do intend to fully support this module and incorporate feature requests or iron out any problems which may arise (changes to core breaking it, etc...) just clarifying.

Pobster

pobster’s picture

Ah I have a question...

I've just finished attaching the images to MAQUM nodes (which are actually image nodes, but well... You know what I mean!) So the only thing I have left to do is to attach new terms to those created nodes (existing terms already get attached).

Anyways, I was just thinking to myself - "hope I'm doing this right?" and I suddenly worried about how I'm going about categorizing;

Currently it works like this:

In 'settings' you set a home vocabulary such as 'Image Galleries' then the module literally creates a one-tier set of terms, for instance;

Image Galleries
--> ISO : 100
--> ISO : 200
--> ISO : 400
--> Aperture Value : 16.0
etc...

What I'm wondering is, wouldn't it be better to make the terms two tier so you'd have something like this;

Image Galleries
--> ISO
------> 100
------> 200
------> 400
--> Aperture Value
------> 16.0

Like that? Then you could display all the photos which have that tag and not just that particular ISO value (for instance). Is this useful or do you think it'd make the categories link on the node page too cluttered? You can set which metatags are processed in the settings by the way, I don't know which ones are best for default so it's currently set to default to: 'Camera Model Name', 'Make' and 'ISO'. What are your thoughts?

Pobster

pobster’s picture

Well, assuming you only want it one tier for the categories the module is finished... I've enabled my contact form - you can test it out on one of my test sites and request changes, etc before payment.

Thanks

Pobster

Brian@brianpuccio.net’s picture

I know I've made lots of comments just recently, but I'd love to give it a spin, I'm really excited about this! I'll contact you via the contact form for the demo site (good idea, I get to try it out, but you don't lose the code).

Brian@brianpuccio.net’s picture

I've just finished attaching the images to MAQUM nodes (which are actually image nodes, but well... You know what I mean!) So the only thing I have left to do is to attach new terms to those created nodes (existing terms already get attached).

Great!

Currently it works like this:

In 'settings' you set a home vocabulary such as 'Image Galleries' then the module literally creates a one-tier set of terms, for instance;

Image Galleries
-- ISO : 100
-- ISO : 200
-- ISO : 400
-- Aperture Value : 16.0
etc...

What I'm wondering is, wouldn't it be better to make the terms two tier so you'd have something like this;

Image Galleries
-- ISO
------ 100
------ 200
------ 400
-- Aperture Value
------ 16.0

Actually, I was thinking there should be each term should be it's own vocabulary:

Image Tags
-- Child
-- Parent
-- Family

Aperture
-- 1.4
-- 1.8
-- 2.0
-- 2.4
-- 2.8
-- 3.2

ISO
-- 100
-- 200
-- 400

In this manner, Image Tags, Aperture, ISO, etc would all be their own vocabularies, with their own vocabulary description. Imaeg Tags would be a multiple select vocab.

Is this useful or do you think it'd make the categories link on the node page too cluttered? You can set which metatags are processed in the settings by the way, I don't know which ones are best for default so it's currently set to default to: 'Camera Model Name', 'Make' and 'ISO'.

I'd probably use some special theming (and the views module) to handle the display of all this metadata. That's the easy part (at least for me).

A settings? Wow, I wasn't expecting that. I was expecting to have to mess with the code itself if I wanted to change the underlying fundamental EXIF/IPTC field to taxonomy mappings. Gallery's settings are really robust:

http://gallery.menalto.com/gallery/screenshots/screenshotsG2/admin/exif_...

But I wasn't expecting anything like that at all. Not for $400.

Brian@brianpuccio.net’s picture

The way I'm used to things working is that some money should be fronted to avoid a developer doing tons of work and then the "client" disappears without taking delivery or making any payment. True, in this case, the "client" loses nothing, but the developer lost the most valuable asset: time.

pobster’s picture

If it'd been a huge project where I'd have needed to take time off work (or worked over a weekend) then yes I'd have asked for money up-front to compensate, but I think I've perhaps spent only around 3 hours-ish programming and an hour or so testing which I've managed to fit in around my own work anyway so I've not really lost anything by doing it this way.

To be honest, I know it's a short module but I'm quite proud of it! :o)

Pobster

Brian@brianpuccio.net’s picture

Understandable. I also note you're an active member for over one year, that makes me less likely to think that you're trying to scam me.

pobster’s picture

I'm just popping out to the supermarket but when I'll get back I'll sort out the module creating vocabularies of terms instead of just terms. That shouldn't take too long (I hope!) In the meantime I sent you an email via your contact form to give you the log in details for one of my test sites.

Thanks

Pobster

pobster’s picture

Back now... Actually I really think you should take a look at how the module is now before I change it to create vocabularies as well as terms. As it is at the moment it integrates fairly well with the image_gallery module (which is enabled on my test site). This module takes one vocabulary ('image galleries') and uses the terms contained within it to show which pictures relate to which terms. I've no problem with losing this functionality and changing it, but well as I noticed you've not logged into my test site yet I felt like maybe you should take a look before I go ahead and change it?

Let me know what you think.

Pobster

Brian@brianpuccio.net’s picture

I'm actually at work right now and don't have access to my normal email. I also have a math final tonight. After that, I'll take a look at it. That's roughly 9 hours from now. Sorry for the delay!

pobster’s picture

That is not a problem! I was just concerned that changing it may lose some *very* useful functionality. I'd really prefer you to have a play around with it as it is before I change it that drastically, obviously it's no real concern of mine to retain integration with image_gallery - I just thought it was perhaps something which may be useful to you?

Let me know, and good luck with the math!

Pobster

Brian@brianpuccio.net’s picture

I sent you an email, tested it out, looks great, just a few things. Thanks again for all your work on this.

(Math didn't go so hot, but thanks!)

pobster’s picture

Oop! I just thought that I've been merrily emailing away to you this morning, but I bet you can't pick up any of them as you're at work?!!!

Anyways, it's finished completely and does both;

Terms within a specified vocabulary (eg. vocab = 'Image Galleries', terms = 'Make : Fujifilm', 'Make : Canon', 'Make : HP', etc...)

Or:

Vocabularies populated with terms created from the metatags (eg. vocab = 'Make', terms = 'Fujifilm', 'Canon', 'HP', etc...)

You simply set which mode you wish to operate in from MAQUM settings. On that screen you can also set where the module picks up the creation date, title and body for the node you create. Plus most importantly, you specify on this screen all the metatags you wish to act on, currently it's a very short list consisting of; Camera Model, Make and ISO. Obviously you specify as many tags as you want here I only included those three for testing purposes.

Enjoy!

Pobster

Nimo’s picture

Will this module be public available?

Because I had love to use this kind of module.

pobster’s picture

Brian posted the entire module here; http://drupal.org/node/116089

BTW, there's no bug with it - the problem was just system configuration.

If you use it (and like it) I'd suggest donating something to Brian as he funded it himself - it's all about the karma.

Thanks

Pobster