Bots: Difference between revisions
No edit summary |
|||
Line 7: | Line 7: | ||
The bot uses both the mongodb database and the perl binary files that stores the product data, but you could just use the mongodb data only, it's the same. | The bot uses both the mongodb database and the perl binary files that stores the product data, but you could just use the mongodb data only, it's the same. | ||
=Writing bots in Perl = | == Writing bots in Perl == | ||
=Writing bots in Ruby = | == Writing bots in Ruby == | ||
<pre> | <pre> | ||
gem install openfoodfacts | gem install openfoodfacts | ||
</pre> | </pre> | ||
* Example that adds parent brands: https://github.com/openfoodfacts/openfoodfacts-corrector | * Example that adds parent brands: https://github.com/openfoodfacts/openfoodfacts-corrector | ||
= Writing bots in Python = | == Writing bots in Python == | ||
= Testing bots = | == Testing bots == | ||
* Please test bots on world.openfoodfacts.net | * Please test bots on world.openfoodfacts.net | ||
* Please ask for permission to use the bot on Slack before you switch to .org | * Please ask for permission to use the bot on Slack before you switch to .org | ||
= Active | == Active bots == | ||
==Checkbot== | === Checkbot === | ||
Checkbot is a little bot that will check Open Food Facts for obvious errors and report them on Slack, in the [https://openfoodfacts.slack.com/messages/bots/ #bots] channel. | Checkbot is a little bot that will check Open Food Facts for obvious errors and report them on Slack, in the [https://openfoodfacts.slack.com/messages/bots/ #bots] channel. | ||
=== Code === | ==== Code ==== | ||
* Language: Perl | * Language: Perl | ||
* [https://bitbucket.org/openfoodfacts/product-opener/src/3f2b4c2790d19ad559fb68376001d4dbc7cd34a5/cgi/checkbot.pl?at=master Code on bitbucket] | * [https://bitbucket.org/openfoodfacts/product-opener/src/3f2b4c2790d19ad559fb68376001d4dbc7cd34a5/cgi/checkbot.pl?at=master Code on bitbucket] | ||
=== Current checks === | ==== Current checks ==== | ||
* It checks if one of the nutrients has a value higher than 105g for 100g / 100ml. | * It checks if one of the nutrients has a value higher than 105g for 100g / 100ml. | ||
* It checks if sugar+starch > carbohydrates etc. | * It checks if sugar+starch > carbohydrates etc. | ||
* We'll be able to add rules like:Â sum of nutrients per 100g > 105g, | * We'll be able to add rules like:Â sum of nutrients per 100g > 105g, | ||
=== Ideas === | ==== Ideas ==== | ||
* Checkbot pingue sur Slack les personnes qui ont ajouté les produits (ou leur envoyer un mail d'ailleurs) | * Checkbot pingue sur Slack les personnes qui ont ajouté les produits (ou leur envoyer un mail d'ailleurs) | ||
* version live de checkbot qui pingue en continu | * version live de checkbot qui pingue en continu | ||
Line 36: | Line 36: | ||
[http://world.openfoodfacts.org/label/incorrect-nutrition-facts-on-label incorrect-nutrition-facts-on-label] | [http://world.openfoodfacts.org/label/incorrect-nutrition-facts-on-label incorrect-nutrition-facts-on-label] | ||
==Infobot== | === Infobot === | ||
[http://world.openfoodfacts.org/contributor/infobot Infobot user profile] | [http://world.openfoodfacts.org/contributor/infobot Infobot user profile] | ||
Infobot will add some information on requests on many products | Infobot will add some information on requests on many products | ||
== Fixbot == | == Retired bots == | ||
=== Fixbot === | |||
[http://world.openfoodfacts.org/contributor/fixbot Fixbot user profile] | [http://world.openfoodfacts.org/contributor/fixbot Fixbot user profile] | ||
Fixbot removed bogus countries that appeared at some point in the products, due to a Product Opener bug | Fixbot removed bogus countries that appeared at some point in the products, due to a Product Opener bug | ||
Product http://world.openfoodfacts.org/product/8414606446629 (miel-quot-esencia-andalusi-quot / esencia-andalusi) : removing bogus countries, replacing with Spain | Product http://world.openfoodfacts.org/product/8414606446629 (miel-quot-esencia-andalusi-quot / esencia-andalusi) : removing bogus countries, replacing with Spain | ||
=== Code === | ==== Code ==== | ||
* Language: Perl | * Language: Perl | ||
=== Ideas === | ==== Ideas ==== | ||
<pre> | <pre> | ||
tacite [12:53 AM] Â | tacite [12:53 AM] Â | ||
Line 63: | Line 64: | ||
Tout les produits Leclerc Drive peuvent ĂȘtre trouvĂ©s dans Leclerc mais l'inverse pas forcĂ©ment | Tout les produits Leclerc Drive peuvent ĂȘtre trouvĂ©s dans Leclerc mais l'inverse pas forcĂ©ment | ||
</pre> | </pre> | ||
==Scanbot== | === Scanbot === | ||
[http://world.openfoodfacts.org/contributor/scanbot Scanbot user profile] | [http://world.openfoodfacts.org/contributor/scanbot Scanbot user profile] | ||
Scanbot will look for the IP of scanned products, and will add the matching countries in the country field. | Scanbot will look for the IP of scanned products, and will add the matching countries in the country field. | ||
Runs on demand. Not really reliable because of the IP system. | Runs on demand. Not really reliable because of the IP system. | ||
==UPCBot== | === UPCBot === | ||
[http://world.openfoodfacts.org/contributor/upcbot UPCbot user profile] | [http://world.openfoodfacts.org/contributor/upcbot UPCbot user profile] | ||
UPCBot was used to normalize UPC codes. Since we now normalize them in Product Opener, it should not be used anymore. | UPCBot was used to normalize UPC codes. Since we now normalize them in Product Opener, it should not be used anymore. | ||
[[Category:ProductOpener]][[Category:Bots]] | [[Category:ProductOpener]][[Category:Bots]] | ||
=== Code === | ==== Code ==== | ||
* Language: Perl | * Language: Perl | ||
= Ideas for new bots = | = Ideas for new bots = | ||
* tacite [10:10 PM]Â New bot idea : Getting notifications for new complete products by contributors that have less than 5 completed products. That way we know we have to control it thoroughly | * tacite [10:10 PM]Â New bot idea : Getting notifications for new complete products by contributors that have less than 5 completed products. That way we know we have to control it thoroughly |
Revision as of 16:28, 31 May 2019
|
---|
The bots are written in Perl or in Ruby, but it's relatively independent of the Product Opener code base, similar scripts could be written in pretty much any language. The bot uses both the mongodb database and the perl binary files that stores the product data, but you could just use the mongodb data only, it's the same.
Writing bots in Perl
Writing bots in Ruby
gem install openfoodfacts
- Example that adds parent brands: https://github.com/openfoodfacts/openfoodfacts-corrector
Writing bots in Python
Testing bots
- Please test bots on world.openfoodfacts.net
- Please ask for permission to use the bot on Slack before you switch to .org
Active bots
Checkbot
Checkbot is a little bot that will check Open Food Facts for obvious errors and report them on Slack, in the #bots channel.
Code
- Language: Perl
- Code on bitbucket
Current checks
- It checks if one of the nutrients has a value higher than 105g for 100g / 100ml.
- It checks if sugar+starch > carbohydrates etc.
- We'll be able to add rules like: sum of nutrients per 100g > 105g,
Ideas
- Checkbot pingue sur Slack les personnes qui ont ajouté les produits (ou leur envoyer un mail d'ailleurs)
- version live de checkbot qui pingue en continu
- Ă©cart Ă la moyenne de plus d'un facteur 9 (erreur de virgule)
- What about a label we could add on the products that have a verified erroneous label like the ajolix-chili above? We could tag them "error on label" and have checkbot skip them. What would you think of that @stephane?
incorrect-nutrition-facts-on-label
Infobot
Infobot user profile Infobot will add some information on requests on many products
Retired bots
Fixbot
Fixbot user profile Fixbot removed bogus countries that appeared at some point in the products, due to a Product Opener bug Product http://world.openfoodfacts.org/product/8414606446629 (miel-quot-esencia-andalusi-quot / esencia-andalusi) : removing bogus countries, replacing with Spain
Code
- Language: Perl
Ideas
tacite [12:53 AM] ça permettrait aussi de fusionner quand on a un "leclerc drive" comme magasin au lieu de "leclerc", c'est plus pertinent de laisser que "leclerc" vu que leclerc fait du picking dans son magasin stephane [10:38 AM] C'est une idĂ©e intĂ©ressante. Pour l'instant dans magasins, on met en gĂ©nĂ©ral seulement le magasin oĂč la personne qui a ajoutĂ© le produit l'a achetĂ©, mais c'est vrai que ça serait intĂ©ressant. AprĂšs le problĂšme c'est que ça change tout le temps. vince [2:55 AM] â_"quand on a un "leclerc drive" comme magasin au lieu de "leclerc", c'est plus pertinent de laisser que "leclerc" vu que leclerc fait du picking dans son magasin"_â Je ne suis pas sĂ»r : Leclerc rend-il disponible â*tous*â ses produits via le drive? Tous les distributeurs le font-ils? Si certains distributeurs ne mettent Ă disposition qu'une partie de leurs produits en drive, il pourrait ĂȘtre intĂ©ressant de savoir lesquels. En rĂ©sumĂ© et comme souvent, je suis partisan de laisser l'utilisateur saisir l'information la plus granulaire possible, quitte Ă â*afficher*â une info simplifiĂ©e aggrĂ©gĂ©e, mais en continuant Ă â*stocker*â l'info dĂ©taillĂ©e. AprĂšs, je serais prudent quant Ă l'ajout â*automatique*â du magasin sur la simple base de la marque distributeur : l'Ă©picerie de quartier en bas de chez moi est bourrĂ©e de produits de marques distributeurs (françaises et allemandes Ă Paris, anglaises et polonaises Ă Liverpool)... au double du prix, mais en bas de chez moi :wink: tacite [1:21 PM] Tout les produits Leclerc Drive peuvent ĂȘtre trouvĂ©s dans Leclerc mais l'inverse pas forcĂ©ment
Scanbot
Scanbot user profile Scanbot will look for the IP of scanned products, and will add the matching countries in the country field. Runs on demand. Not really reliable because of the IP system.
UPCBot
UPCbot user profile UPCBot was used to normalize UPC codes. Since we now normalize them in Product Opener, it should not be used anymore.
Code
- Language: Perl
Ideas for new bots
- tacite [10:10 PM] New bot idea : Getting notifications for new complete products by contributors that have less than 5 completed products. That way we know we have to control it thoroughly