Mechanical Turk uploading more hits than needed - mechanicalturk

I am new to Mechanical Turk and am running a survey on an external website. My task allows one worker to do 10 different HITs independently (watch 10 different movies, then be asked questions after watching the movie).
My input file has the first line with the field heading 'moviename'. The subsequent rows are the list of movies.
moviename
movie_1
movie_2
...
movie_10
When I upload my task on sandbox from terminal, I get a return message saying that I've uploaded 11 Hits, when I only have 10 Hits. I have an annotation parameter of videoId which then calls upon info from my input file.
https://mywebsite.html?videoId=${moviename}
I'm assuming that mturk is thinking that the field heading in my input file is a HIT. Does anyone know how to fix this and have an explanation for why this is happening?

Related

Tracking readership of a PDF document

Background. As some of you know I Publish a business deals listings magazine in PDF format. I am after Google Analytics/Matomo style tracking of readership of the PDF. (I use Matomo for my websites and prefer it over google)
Where I want to get to for example is User one spent 3 seconds on Page 1 skipped page 2, read pages 3-10 left.
User 2 read pages 20-30 and spent an average of 5 seconds on each page. Etc Etc,
Is there a way to do this or is it even possible?
I already know if the magazine has been downloaded and where and when and have this data.
Many thanks

Google Classroom API suddenly returning quota errors

I have routines that synchronize Class/Roster information between an SIS and Google Classroom. Everything has been running smoothly until very recently (11/1/2016). Now we're seeing the following message in all of our log files for routines that handle Classroom syncs.
Insufficient tokens for quota group and limit 'DefaultGroupUSER-100s' of service 'classroom.googleapis.com', using the limit by ID...
We perform batch requests whenever possible and these errors are showing up in individual batch "part" responses. The fact that these errors suddenly started showing up for ALL of our Classroom routines makes me think that something changed on the Google end of things.
I've been playing around with the throttling on our end by changing both the number of requests that we send in each batch (docs say that you can send 1000 per batch) as well as the total number of requests/batches that we're sending per 100 seconds (docs say you can send 50/s/client and also 5/s/user). Interestingly, the quotas indicated in the development console display slightly different but I assume they are to be interpreted in conjunction with one another.
I've throttled things down to the point where we're not even getting close to 5 requests per second and I'm still getting these errors back from the server.
Can someone provide some suggestions or solutions. Has anyone experienced this lately?
Let me know if I any additional information is needed.

Present variable information within a single mturk HIT

I'd like to use mturk to have 10 workers visit my website, log in with a test account, and enter some information on their profile. I don't want them to see each other's entries, so each worker should get login information for a different test account when they view the HIT.
This almost looks like what mturk's template feature is for -- I could upload a CSV with the information for each test account. But if I understand correctly, that will make 10 separate HITs, and allow one worker to do all 10 of them. Is there any way to have mturk put information that varies between workers into a single HIT?
Here are the solutions I'm currently aware of:
Use the CLI to automate creation of a bunch of different HITs. This would be a lot of work, and also make approving and retrieving the results cumbersome.
Direct workers to a survey website that's capable of doing what I want, and have them get the login information there.
Dynamically fill in part of the HIT using an AJAX request to an external website and database. That seems like crazy overkill for something so simple.
Are there other options?

Mechanical Turk - Fetch results for a batch via API

We've created batches of HITs using the Mechanical Turk web interface. Now all we want to do is download the results for a batch using the API, the same way you can download the results for a batch in the web interface using "Download CSV".
The documentation from Amazon says that downloading the results from the API is possible and I would be surprised if it isn't. But after a lot of programming hours and testing I have not been able to get the results of a batch.
http://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_OperationsArticle.html
Our problem is not to get the HIT data, that stuff is easy with GetHIT. Our problem isn't either to get the assignment data, that's easily done with GetAssignmentsForHIT. Our problem is to figure out the HIT IDs of a batch so that we only fetch the results of that batch.
We thought we would be able to do this with GetHITsForQualificationType but since we use the same HIT type ID for all batches this isn't possible. The only other operation I can see is SearchHITs, but this operation only lets you "sort" values and not "filter" by e.g batch ID.
If Amazon is a SOA company and they follow the "eat your own dog food" concept, then I wonder how they generate the results in "Download CSV" using their API?
Any hints would be greatly appreciated. Thank you!
UPDATE #1
I believe you could use SearchHITs to pull out all HITs. Then grab the details for each HIT using GetHIT. Then filter all the HITs by "RequesterAnnotation" which actually contains the batch ID, e.g "BatchId:1234567;". This might be the only solution. Sounds a bit far fetched though.
The workflow is exactly as you describe in your Update #1:
(1) Use SearchHITs to get all of your HITs.
(2) Get details with GetHIT (You can actually skip this step because the "Requester Annotation" field comes with SearchHITs if you include the HITDetail response group).
(3) Filter the results by the annotation field to get the HITs you want.
(4) Use GetAssignmentsForHIT to retrieve assignments.
The "batch id" is something that appears to only be accessible to Amazon for use on the Requester User Interface. (see some discussion on the MTurk Developer Forum)
And, of course, the API is going to give you results in XML, which you'll need to parse to turn them into a CSV.

Bumping an Amazon Mechanical Turk HIT

We have a web-based game for two players, which we offer via Amazon Mechanical Turk. For each game we need two players that will enter simultaneously, or at most 1 minute apart. We noticed that at the first few minutes after we publish the HIT, we get many workers, because the HIT is on the first page of their search results, but later the rate drops as the game moves to a previous page. So, in order to get enough simultaneous workers, we had to remove the HIT, and open a new HIT.
Is it possible, instead of deleting a HIT, and opening a new HIT to somehow "bump" / "poke" the old HIT to make it appear new?
This is possible in many ad websites, when after you publish an ad, you can bump it to the head of the ad list.
Using TurkPrime.com it is possible to bump a hit by using the "Restart" feature. It closes the first HIT and opens a new HIT excluding all workers who completed the first HIT. The effect is that it bumps the HIT to the top of Mechanical Turk when sorted by date.
With TurkPrime you use your own Amazon MTurk account, but they have an option for requesters with no MTurk account.
The only surefire way I know of to bump a HIT is to create different HITs of the same HIT Type and add HITs to that type. That bumps the creation date of the entire HIT Type for sorting purposes, which is what workers often search for. See my projects which use this approach:
https://github.com/HarvardEconCS/turkserver-meteor
https://github.com/HarvardEconCS/TurkServer
The other way to get concurrent workers for your HITs is to post on worker forums.
http://www.mturkforum.com/
http://www.cloudmebaby.com/
http://www.reddit.com/r/mturk
http://www.mturkgrind.com/
http://www.turkernation.com/
Generally, if you are going to do things that require more than two workers at the same time, you need to establish communication with the workers and schedule something in advance.