-
-
Save randompherret/f772d43cb618b55997f203e023631d5f to your computer and use it in GitHub Desktop.
| <?php | |
| $apiaccess =[ | |
| "url" => "https://grocy.yourdomain.tld/api", | |
| "key" => "1234password" | |
| ]; | |
| $quantity_units = [ | |
| "Cup" => [ | |
| "name" => "Cup", | |
| "description" => "", | |
| "name_plural" => "Cups" | |
| ], | |
| "Gallon" => [ | |
| "name" => "Gallon", | |
| "description" => "", | |
| "name_plural" => "Gallons" | |
| ], | |
| "Gram" => [ | |
| "name" => "Gram", | |
| "description" => "", | |
| "name_plural" => "Grams" | |
| ], | |
| "Kilogram" => [ | |
| "name" => "Kilogram", | |
| "description" => "", | |
| "name_plural" => "Kilograms" | |
| ], | |
| "Liter" => [ | |
| "name" => "Liter", | |
| "description" => "", | |
| "name_plural" => "Liters" | |
| ], | |
| "Milliliter" => [ | |
| "name" => "Milliliter", | |
| "description" => "", | |
| "name_plural" => "Milliliters" | |
| ], | |
| "Ounce" => [ | |
| "name" => "Ounce", | |
| "description" => "", | |
| "name_plural" => "Ounces" | |
| ], | |
| "Ounce liquid" => [ | |
| "name" => "Ounce liquid", | |
| "description" => "", | |
| "name_plural" => "Ounces liquid" | |
| ], | |
| "Pint" => [ | |
| "name" => "Pint", | |
| "description" => "", | |
| "name_plural" => "Pints" | |
| ], | |
| "Pound" => [ | |
| "name" => "Pound", | |
| "description" => "", | |
| "name_plural" => "Pounds" | |
| ], | |
| "Quart" => [ | |
| "name" => "Quart", | |
| "description" => "", | |
| "name_plural" => "Quarts" | |
| ], | |
| "Tablespoon" => [ | |
| "name" => "Tablespoon", | |
| "description" => "", | |
| "name_plural" => "Tablespoons" | |
| ], | |
| "Teaspoon" => [ | |
| "name" => "Teaspoon", | |
| "description" => "", | |
| "name_plural" => "Teaspoons" | |
| ], | |
| ]; | |
| $quantity_unit_conversions = [ | |
| "Cup" => [ | |
| "Gallon" => [ | |
| "factor"=> ".0078", | |
| ], | |
| "Liter" => [ | |
| "factor"=> "4.1667", | |
| ], | |
| "Milliliter" => [ | |
| "factor"=> ".0042", | |
| ], | |
| "Ounce liquid" => [ | |
| "factor"=> "8", | |
| ], | |
| "Pint" => [ | |
| "factor"=> ".5", | |
| ], | |
| "Quart" => [ | |
| "factor"=> ".125", | |
| ], | |
| "Tablespoon" => [ | |
| "factor"=> "16", | |
| ], | |
| "Teaspoon" => [ | |
| "factor"=> "48", | |
| ], | |
| ], | |
| "Gallon" => [ | |
| "Cup" => [ | |
| "factor"=> "16", | |
| ], | |
| "Liter" => [ | |
| "factor"=> ".2642", | |
| ], | |
| "Milliliter" => [ | |
| "factor"=> ".0003", | |
| ], | |
| "Ounce liquid" => [ | |
| "factor"=> "128", | |
| ], | |
| "Pint" => [ | |
| "factor"=> "8", | |
| ], | |
| "Quart" => [ | |
| "factor"=> "4", | |
| ], | |
| "Tablespoon" => [ | |
| "factor"=> "256", | |
| ], | |
| "Teaspoon" => [ | |
| "factor"=> "768", | |
| ], | |
| ], | |
| "Gram" => [ | |
| "Kilogram" => [ | |
| "factor"=> "0.0010", | |
| ], | |
| "Ounce" => [ | |
| "factor"=> "28.3495", | |
| ], | |
| "Pound" => [ | |
| "factor"=> "453.5920", | |
| ], | |
| ], | |
| "Kilogram" => [ | |
| "Gram" => [ | |
| "factor"=> "1000.0000", | |
| ], | |
| "Ounce" => [ | |
| "factor"=> "28349.5000", | |
| ], | |
| "Pound" => [ | |
| "factor"=> "453592.0000", | |
| ], | |
| ], | |
| "Liter" => [ | |
| "Cup" => [ | |
| "factor"=> "0.2400", | |
| ], | |
| "Gallon" => [ | |
| "factor"=> "3.7850", | |
| ], | |
| "Milliliter" => [ | |
| "factor"=> "0.0010", | |
| ], | |
| "Ounce liquid" => [ | |
| "factor"=> "0.0296", | |
| ], | |
| "Pint" => [ | |
| "factor"=> "0.4730", | |
| ], | |
| "Quart" => [ | |
| "factor"=> "1.0570", | |
| ], | |
| "Tablespoon" => [ | |
| "factor"=> "0.0148", | |
| ], | |
| "Teaspoon" => [ | |
| "factor"=> "0.0049", | |
| ], | |
| ], | |
| "Milliliter" => [ | |
| "Cup" => [ | |
| "factor"=> "240.0000", | |
| ], | |
| "Gallon" => [ | |
| "factor"=> "3785.0000", | |
| ], | |
| "Liter" => [ | |
| "factor"=> "1000.0000", | |
| ], | |
| "Ounce liquid" => [ | |
| "factor"=> "29.5740", | |
| ], | |
| "Pint" => [ | |
| "factor"=> "473.0000", | |
| ], | |
| "Quart" => [ | |
| "factor"=> "1057.0000", | |
| ], | |
| "Tablespoon" => [ | |
| "factor"=> "14.7870", | |
| ], | |
| "Teaspoon" => [ | |
| "factor"=> "4.9290", | |
| ], | |
| ], | |
| "Ounce" => [ | |
| "Gram" => [ | |
| "factor"=> "0.0353", | |
| ], | |
| "Kilogram" => [ | |
| "factor"=> "0.0000", | |
| ], | |
| "Pound" => [ | |
| "factor"=> "0.0625", | |
| ], | |
| ], | |
| "Ounce liquid" => [ | |
| "Cup" => [ | |
| "factor"=> "0.1250", | |
| ], | |
| "Gallon" => [ | |
| "factor"=> "0.0078", | |
| ], | |
| "Liter" => [ | |
| "factor"=> "33.8135", | |
| ], | |
| "Milliliter" => [ | |
| "factor"=> "0.0338", | |
| ], | |
| "Pint" => [ | |
| "factor"=> "0.0625", | |
| ], | |
| "Quart" => [ | |
| "factor"=> "0.0313", | |
| ], | |
| "Tablespoon" => [ | |
| "factor"=> "2.0000", | |
| ], | |
| "Teaspoon" => [ | |
| "factor"=> "6.0000", | |
| ], | |
| ], | |
| "Pint" => [ | |
| "Cup" => [ | |
| "factor"=> "2.0000", | |
| ], | |
| "Gallon" => [ | |
| "factor"=> "0.1250", | |
| ], | |
| "Liter" => [ | |
| "factor"=> "2.1142", | |
| ], | |
| "Milliliter" => [ | |
| "factor"=> "0.0021", | |
| ], | |
| "Ounce liquid" => [ | |
| "factor"=> "16.0000", | |
| ], | |
| "Quart" => [ | |
| "factor"=> "0.5000", | |
| ], | |
| "Tablespoon" => [ | |
| "factor"=> "32.0000", | |
| ], | |
| "Teaspoon" => [ | |
| "factor"=> "96.0000", | |
| ], | |
| ], | |
| "Pound" => [ | |
| "Gram" => [ | |
| "factor"=> "0.0022", | |
| ], | |
| "Kilogram" => [ | |
| "factor"=> "0.0000", | |
| ], | |
| "Ounce" => [ | |
| "factor"=> "16.0000", | |
| ], | |
| ], | |
| "Quart" => [ | |
| "Cup" => [ | |
| "factor"=> "4.0000", | |
| ], | |
| "Gallon" => [ | |
| "factor"=> "0.2500", | |
| ], | |
| "Liter" => [ | |
| "factor"=> "0.9461", | |
| ], | |
| "Milliliter" => [ | |
| "factor"=> "0.0009", | |
| ], | |
| "Ounce liquid" => [ | |
| "factor"=> "32.0000", | |
| ], | |
| "Pint" => [ | |
| "factor"=> "2.0000", | |
| ], | |
| "Tablespoon" => [ | |
| "factor"=> "64.0000", | |
| ], | |
| "Teaspoon" => [ | |
| "factor"=> "192.0000", | |
| ], | |
| ], | |
| "Tablespoon" => [ | |
| "Cup" => [ | |
| "factor"=> "0.0625", | |
| ], | |
| "Gallon" => [ | |
| "factor"=> "0.0039", | |
| ], | |
| "Liter" => [ | |
| "factor"=> "67.6270", | |
| ], | |
| "Milliliter" => [ | |
| "factor"=> "0.0676", | |
| ], | |
| "Ounce liquid" => [ | |
| "factor"=> "0.5000", | |
| ], | |
| "Pint" => [ | |
| "factor"=> "0.0313", | |
| ], | |
| "Quart" => [ | |
| "factor"=> "0.0156", | |
| ], | |
| "Teaspoon" => [ | |
| "factor"=> "3.0000", | |
| ], | |
| ], | |
| "Teaspoon" => [ | |
| "Cup" => [ | |
| "factor"=> "0.0208", | |
| ], | |
| "Gallon" => [ | |
| "factor"=> "0.0013", | |
| ], | |
| "Liter" => [ | |
| "factor"=> "202.8809", | |
| ], | |
| "Milliliter" => [ | |
| "factor"=> "0.2029", | |
| ], | |
| "Ounce liquid" => [ | |
| "factor"=> "0.1667", | |
| ], | |
| "Pint" => [ | |
| "factor"=> "0.0104", | |
| ], | |
| "Quart" => [ | |
| "factor"=> "0.0052", | |
| ], | |
| "Tablespoon" => [ | |
| "factor"=> "0.3333", | |
| ], | |
| ], | |
| ]; | |
| function curl_post($stub,$apiaccess,$data) | |
| { | |
| $options = array( | |
| CURLOPT_POST => 1, | |
| CURLOPT_HEADER => 0, | |
| CURLOPT_URL => $apiaccess["url"].$stub, | |
| CURLOPT_FRESH_CONNECT => 1, | |
| CURLOPT_RETURNTRANSFER => 1, | |
| CURLOPT_FORBID_REUSE => 1, | |
| CURLOPT_TIMEOUT => 4, | |
| CURLOPT_POSTFIELDS => $data, | |
| CURLOPT_HTTPHEADER => ["GROCY-API-KEY:".$apiaccess["key"],"Accept: application/json","Content-Type: application/json"], | |
| ); | |
| $ch = curl_init(); | |
| curl_setopt_array($ch, ($options)); | |
| if( ! $result = curl_exec($ch)) | |
| { | |
| trigger_error(curl_error($ch)); | |
| } | |
| curl_close($ch); | |
| return json_decode($result,true); | |
| } | |
| function curl_get($stub,$apiaccess) | |
| { | |
| $options = array( | |
| CURLOPT_URL => $apiaccess["url"].$stub, | |
| CURLOPT_HEADER => 0, | |
| CURLOPT_RETURNTRANSFER => TRUE, | |
| CURLOPT_TIMEOUT => 4, | |
| CURLOPT_HTTPHEADER => ["GROCY-API-KEY:".$apiaccess["key"],"Accept: application/json"], | |
| ); | |
| $ch = curl_init(); | |
| curl_setopt_array($ch, ($options)); | |
| if( ! $result = curl_exec($ch)) | |
| { | |
| trigger_error(curl_error($ch)); | |
| } | |
| curl_close($ch); | |
| return json_decode($result,true); | |
| } | |
| $currentUnits = curl_get("/objects/quantity_units",$apiaccess); | |
| foreach ($currentUnits as $unit) { | |
| if (isset($quantity_units[$unit["name"]])) { | |
| $quantity_units[$unit["name"]]["id"] = $unit["id"]; | |
| } | |
| } | |
| foreach ($quantity_units as $unit => $data) { | |
| if (!isset($data["id"])){ | |
| $result = curl_post("/objects/quantity_units",$apiaccess,json_encode($data)); | |
| if (isset($result["error_message"])) { | |
| die($result["error_message"]); | |
| } | |
| $quantity_units[$unit]["id"] = $result["created_object_id"]; | |
| } | |
| } | |
| $currentConversions = curl_get("/objects/quantity_unit_conversions",$apiaccess); | |
| foreach ($quantity_unit_conversions as $base => $baseData) { | |
| $fromId = $quantity_units[$base]["id"]; | |
| $existingConversions = array_filter($currentConversions, function ($var) use ($fromId) { | |
| return ($var["from_qu_id"] == $fromId); | |
| }); | |
| $existingConversions = array_column($existingConversions,"to_qu_id"); | |
| foreach ($baseData as $to => $toData) { | |
| if(!in_array($quantity_units[$to]["id"],$existingConversions)){ | |
| $result = curl_post("/objects/quantity_unit_conversions",$apiaccess,json_encode([ | |
| "from_qu_id" => $fromId, | |
| "to_qu_id" => $quantity_units[$to]["id"], | |
| "factor" => $toData["factor"], | |
| ])); | |
| if (isset($result["error_message"])) { | |
| die($result["error_message"]); | |
| } | |
| } | |
| } | |
| } |
made a python version of this with typing, overlap safety & optional json output of everything
made a python version of this with typing, overlap safety & optional json output of everything
Im getting an error on line 30 Modulennotfounderror: no Module named 'requests' ive made an .env file with all the details
made a python version of this with typing, overlap safety & optional json output of everything
Im getting an error on line 30 Modulennotfounderror: no Module named 'requests' ive made an .env file with all the details
You'll need to install the requests and python-dotenv packages with pip before running the file
I'm seeing an "PHP Fatal error: Uncaught Error: Undefined constant "CURLOPT_URL" in /home/username/units.php:381" message when I run this after setting my server's URL and API key. I realize I'm likely doing something wrong, but I'm unsure where to go from here. Help?
SimPl-2.0 works for me, feel free to do whatever. I'm glad the time I spent on this continues to help some folks.