pbs is a very simple command line interface to a PYBOSSA server. It allows you to create projects, add tasks (from a CSV, JSON, PO or a PROPERTIES file) with a nice progress bar, delete them and update the project templates (tutorial, task_presenter, and descriptions) all from the command line.
PYBOSSA server >= 2.3.7.
pbs is available in Pypi, so you can install the software with pip:
pip install pybossa-pbs
If you have all the dependencies, the package will be installed and you will be able to use it from the command line. The command is: pbs.
If you want to hack on the code, just install it but with the --editable flag after cloning the repository:
git clone https://github.com/Scifabric/pbs.git
cd pbs
virtualenv env
source env/bin/activate
pip install --editable .
This will install the pbs package, and you'll be able to modify it, patch it, etc. If you improve it, please, let us know and share the code so we can integrate it back ;-)
pbs is very handy when you work with one or two PYBOSSA servers. The best way to configure it is creating a simple config file in your home folder:
cd ~
vim .pybossa.cfg
The file should have the following structure:
[default]
server: http://theserver.com
apikey: yourkey
If you are working with more servers, add another section below it. For example:
[default]
server: http://theserver.com
apikey: yourkey
[crowdcrafting]
server: http://crowdcrafting.org
apikey: yourkeyincrowdcrafting
By default pbs will use the credentials of the section default, so you don't have to type anything to use those values. However, if you want to do actions in the other server all you have to do is the following:
pbs --credentials crowdcrafting --help
That command will use the values of the crowdcrafting section.
PYBOSSA by default returns first your projects, meaning that if you want to work on a project that you don't own, it will return an error as the project will not be found. For solving this issue you have two options:
Creating a project is very simple. All you have to do is create a file named project.json with the following fields:
{
"name": "Flickr Person Finder",
"short_name": "flickrperson",
"description": "Image pattern recognition",
"question": "Do you see a real human face in this photo?"
}
If you use the name project.json you will not have to pass the file name via an argument, as it's the named used by default. Once you have the file created, run the following command:
pbs create_project
That command should create the project. If you want to see all the available options, please check the --help command:
pbs create_project --help
Adding tasks is very simple. You can have your tasks in three formats:
Therefore, adding tasks to your project is as simple as this command:
pbs add_tasks --tasks-file tasks_file.json
If you want to see all the available options, please check the --help command:
NOTE: By default PYBOSSA servers use a rate limit for avoiding abuse of the API. For this reason, you can only do usually 300 requests per every 15 minutes. If you are going to add more than 300 tasks, pbs will detect it and warn you, auto-enabling the throttling for you to respect the limits.
pbs add_tasks --help
Now that you have added tasks, you can work in your templates. All you have to do to add/update the templates to your project is running the following command:
pbs update_project
That command needs to have in the same folder where you are running it, the following files:
If you want to use another template, you can via arguments:
pbs update_project --template /tmp/template.html
If you want to see all the available options, please check the --help command:
pbs update_project --help
Since pbs >= 2.3.0, pbs will check for an external JavaScript file named bundle.js or bundle.min.js. If any of those files exist, then, they will be added at the bottom of your template (like you have been doing so far with your projects).
This solution allows you to use for example webpack plus babel to transpile your code, minimize it and add it to your PYBOSSA project.
In order to use this solution, just transpile to a file named bundle.js or bundle.min.js.
NOTE If there's a minified version of the file, bundle.min.js, that file will be always used instead of bundle.js.
At some point you will end up running lots of pbs update_project commands, as you will be using your own editor for fixing CSS, HTML or JavaScript. For these scenarios, pbs comes with a handy feature: --watch. This argument will tell pbs to run update_project automatically when template.html, tutorial.html or long_description.md are modified in the file system. As simple as that.
You can run it like this:
pbs update_project --watch
And the output will be similar to this:
NOTE: this also works with bundle.js files :smile: Thus, you can have webpack transpiling automatically your code, and pbs will update automatically your project with the new code.
If you need it, you can update the redundancy of a task using its ID or all the tasks skipping the ID. For example, to update the redundancy of one task to 5:
pbs update-task-redundancy --task-id 34234 --redundancy 5
To update all of them:
pbs update-task-redundancy --redundancy 5
Note: without the --redundancy argument it will revert the redundancy to the default value: 30.
This last command will confirm that you want to update all the tasks.
If you want to see all the available options, please check the --help command:
pbs update-task-redundancy --help
If you need it, you can delete all the tasks from your project, or only one using its task.id. For deleting all the tasks, all you've to do is run the following command:
pbs delete_tasks
This command will confirm that you want to delete all the tasks and associated task_runs.
If you want to see all the available options, please check the --help command:
pbs delete_tasks --help
Adding helping materials is very simple. You can have your materials in three formats:
Therefore, adding helping materials to your project is as simple as this command:
pbs add_helpingmaterials
--helping-materials-lfile file.xlsx --helping-type xlsx
If you want to see all the available options, please check the --help command:
NOTE: By default PYBOSSA servers use a rate limit for avoiding abuse of the API. For this reason, you can only do usually 300 requests per every 15 minutes. If you are going to add more than 300 tasks, pbs will detect it and warn you, auto-enabling the throttling for you to respect the limits.
NOTE: PYBOSSA helping materials allows you to upload media files like videos, images, or sounds to support your project tutorials. The command line pbs will check for a column in your file with the name file_path so it can upload it first into the server. Please, be sure that the file (or files) path is reachable from the helping materials file.
pbs add_helpingmaterials --help
To run the test suite for pbs, first install note:
apt-get install python-nose
To run all tests, execute the following from the pbs project directory:
nosetests test
You have more documentation, with real examples at http://docs.pybossa.com.
Check the tutorial as it uses pbs, and also its pbs section in the site.
Copyright (C) 2017 Scifabric LTD.
License: see LICENSE file.