2015-03-23 16 views
5

Próbuję wykorzystać boto do wygenerowania HIT w mechanicznej turk. Celem jest wykorzystanie wspólnego układu, który jest już generowany na moim koncie mTurk, i przekazywanie mu adresów obrazów do iteracyjnego tworzenia HIT-ów.Tworzenie mTurk HIT z układu przy użyciu parametrów przy użyciu boto i python

Problem polega na tym, że nawet w przypadku poprawnego nazwania parametru, jeśli adres URL obrazu nie jest pomyślny. Mój przykładowy kod do tworzenia hitem jest:

from boto.mturk.connection import MTurkConnection 
from boto.s3.connection import S3Connection 
from boto.mturk.layoutparam import LayoutParameter 
from boto.s3.key import Key 
import datetime 

mtc = MTurkConnection(aws_access_key_id=AWSKEY, 
        aws_secret_access_key=AWSSKEY, 
        host=HOST) 

#Define the layout ID to use and url to the image being used (bucket and serial defined in another place 
LAYOUTID = '30W9SLHWRYCURO27D44916CUTGKDS2' 
S3URL = LayoutParameter('image_url','https://s3.amazonaws.com/'+BUCKET_NAME+'/'+SERIAL) 
REWARD = 0.05 

#Call create_hit to generate the HIT 
hit_result = mtc.create_hit(hit_layout=LAYOUTID,layout_params=S3URL, keywords=keywords_list, reward=REWARD, 
          duration=datetime.timedelta(7),max_assignments=1) 

ten generuje błąd Żądanie brakuje wymaganych parametrów. Wymagane parametry to HITLayoutParameter. Nie podałeś wszystkich wymaganych parametrów HITLayout. Brakuje nazwy parametrów: image_url

I tylko upewnić się, mój układ ID ma poprawnych nazw parametrów, kiedy sprawdzić mTurk widzę (nie można umieścić Screengrab):

Układ ID: 30W9SLHWRYCURO27D44916CUTGKDS2 Parametry: IMAGE_URL

czy są jakieś sztuczki do korzystania LayoutParameter? Czy używam create_hit w niewłaściwy sposób?

Odpowiedz

3

Witam, wiem, że jest trochę za późno na odpowiedź, ale oto, co musisz zrobić. Spakuj parametry układu w klasie LayoutParameters po umieszczeniu ich w klasie LayoutParameter. np.

...... 
from boto.mturk.layoutparam import LayoutParameter 
from boto.mturk.layoutparam import LayoutParameters 
........ 

S3URL = LayoutParameter('image_url','https://s3.amazonaws.com/'+BUCKET_NAME+'/'+SERIAL) 

# put the layout parameter in a list/tuple and pass it to LayoutParameters 
params = LayoutParameters([S3URL]) 

hit_result = mtc.create_hit(hit_layout=LAYOUTID,layout_params=params, keywords=keywords_list, reward=REWARD, 
          duration=datetime.timedelta(7),max_assignments=1) 
Powiązane problemy