francescomalatesta / wolframalphaphp

A PHP Wrapper for Wolfram|Alpha APIs (v2).
MIT License
4 stars 3 forks source link

How to get the subpot with `primary='true'` property? #2

Open vanabel opened 8 years ago

vanabel commented 8 years ago

As a sample query:

<?xml version='1.0' encoding='UTF-8'?>
<queryresult success='true'
    error='false'
    numpods='6'
    datatypes='ExpandedFood'
    timedout='Data,Character'
    timedoutpods=''
    timing='6.614'
    parsetiming='0.189'
    parsetimedout='false'
    recalculate='http://www5b.wolframalpha.com/api/v2/recalc.jsp?id=MSPa71351c88597f6f24icdi00005h6a2f27i295c3g6&amp;s=51'
    id='MSPa71361c88597f6f24icdi00005cidh7i5deb0d107'
    host='http://www5b.wolframalpha.com'
    server='51'
    related='http://www5b.wolframalpha.com/api/v2/relatedQueries.jsp?id=MSPa71371c88597f6f24icdi00001a037g9e8g89f1d7&amp;s=51'
    version='2.6'>
 <pod title='Input interpretation'
     scanner='Identity'
     id='Input'
     position='100'
     error='false'
     numsubpods='1'>
  <subpod title=''>
   <plaintext>hamburger | amount | 1 hamburger</plaintext>
  </subpod>
 </pod>
 <pod title='Average nutrition facts'
     scanner='Data'
     id='NutritionLabelSingle:ExpandedFoodData'
     position='200'
     error='false'
     numsubpods='1'
     primary='true'>
  <subpod title=''>
   <plaintext>serving size 1 hamburger (161 g)
total calories  421 | fat calories  186
% daily value^* |  
  total fat  20 g | 31%
       saturated fat  7 g | 36%
       trans fat  916 mg | 
  cholesterol  57 mg | 19%
  sodium  647 mg | 27%
  total carbohydrates  38 g | 13%
       dietary fiber  2 g | 9%
       sugar  8 g | 
  protein  22 g | 43%
   vitamin A  2%    |    vitamin C  2%   
   calcium  12%    |    iron  22%   
   vitamin D  6%    |    vitamin E  1%   
   thiamin  25%    |    riboflavin  20%   
   niacin  33%    |    vitamin B6  10%   
   vitamin B12  33%    |    folate  17%   
   phosphorus  18%    |    magnesium  9%   
   zinc  26%    | 
*percent daily values are based on a 2000 calorie diet
(averaged over different types of hamburger)</plaintext>
  </subpod>
 </pod>
 <pod title='Average daily value ranking'
     scanner='Data'
     id='DailyValuesRanking:ExpandedFoodData'
     position='300'
     error='false'
     numsubpods='1'>
  <subpod title=''>
   <plaintext> | mean value | % daily value | range
protein | 22 g | 43% | (18 to 27) g
saturated fat | 7.1 g | 36% | (5.7 to 9.9) g
vitamin B12 | 2 µg | 33% | (1.3 to 2.7) µg
 |  | (vertical ellipsis) | 
vitamin A | 124 IU | 2% | (0 to 299) IU
vitamin E | 149 µg | 1% | (97 to 242) µg
(averaged over different types of hamburger)</plaintext>
  </subpod>
  <states count='1'>
   <state name='More'
       input='DailyValuesRanking:ExpandedFoodData__More' />
  </states>
 </pod>
 <pod title='Average highest nutrients compared to other foods'
     scanner='Data'
     id='NutrientRankingPod:ExpandedFoodData'
     position='400'
     error='false'
     numsubpods='1'>
  <subpod title=''>
   <plaintext> | amount | % daily value | foods distribution | rank
niacin | 6.5 mg | 33% |  | 91%
vitamin K | 19 µg |  |  | 90%
selenium | 34 µg |  |  | 90%
(distributions from log nutrient values in standard servings of 7500 common foods)</plaintext>
  </subpod>
  <states count='1'>
   <state name='More'
       input='NutrientRankingPod:ExpandedFoodData__More' />
  </states>
 </pod>
 <pod title='Calories'
     scanner='Data'
     id='Calories:ExpandedFoodData'
     position='500'
     error='false'
     numsubpods='1'>
  <subpod title=''>
   <plaintext> | mean value | % daily value | range
total calories | 421 Cal | 21% | (364 to 501) Cal
fat calories | 186 Cal |  | (159 to 241) Cal</plaintext>
  </subpod>
  <states count='1'>
   <state name='More'
       input='Calories:ExpandedFoodData__More' />
  </states>
 </pod>
 <pod title='Carbohydrates'
     scanner='Data'
     id='Carbohydrates:ExpandedFoodData'
     position='600'
     error='false'
     numsubpods='1'>
  <subpod title=''>
   <plaintext> | mean value | % daily value | range
total carbohydrates | 38 g | 13% | (28 to 54) g
dietary fiber | 2.3 g | 9% | (1.8 to 2.9) g
sugar | 8.1 g |  | (6.4 to 9.3) g</plaintext>
  </subpod>
  <states count='1'>
   <state name='More'
       input='Carbohydrates:ExpandedFoodData__More' />
  </states>
 </pod>
 <assumptions count='3'>
  <assumption type='Clash'
      word='hamburger'
      template='Assuming &quot;${word}&quot; is ${desc1}. Use as ${desc2} instead'
      count='2'>
   <value name='ExpandedFood'
       desc='a food'
       input='*C.hamburger-_*ExpandedFood-' />
   <value name='Word'
       desc='a word'
       input='*C.hamburger-_*Word-' />
  </assumption>
  <assumption type='SubCategory'
      word='hamburger'
      template='Assuming ${desc1}. Use ${desc2} instead'
      count='8'>
   <value name='Hamburger'
       desc='hamburger'
       input='*DPClash.ExpandedFoodE.hamburger-_*Hamburger-' />
   <value name='GroundBeefPatty'
       desc='ground beef patty'
       input='*DPClash.ExpandedFoodE.hamburger-_*GroundBeefPatty-' />
   <value name='GroundBeef'
       desc='ground beef'
       input='*DPClash.ExpandedFoodE.hamburger-_*GroundBeef-' />
   <value name='RawGroundBeef'
       desc='raw ground beef'
       input='*DPClash.ExpandedFoodE.hamburger-_*RawGroundBeef-' />
   <value name='RawGroundBeefPatty'
       desc='raw ground beef patty'
       input='*DPClash.ExpandedFoodE.hamburger-_*RawGroundBeefPatty-' />
   <value name='BurgerKingHamburger'
       desc='Burger King hamburger'
       input='*DPClash.ExpandedFoodE.hamburger-_*BurgerKingHamburger-' />
   <value name='McDonaldsHamburger'
       desc='McDonald&apos;s hamburger'
       input='*DPClash.ExpandedFoodE.hamburger-_*McDonaldsHamburger-' />
   <value name='Wendys Hamburger'
       desc='Wendys Hamburger'
       input='*DPClash.ExpandedFoodE.hamburger-_*Wendys+Hamburger-' />
  </assumption>
  <assumption type='Attribute'
      word='Hamburger'
      template='Assuming ${desc1}. Use ${desc2} instead'
      count='9'>
   <value name='Hamburger'
       desc='any type of hamburger'
       input='*EAC.ExpandedFood.Hamburger-_**a.Hamburger--' />
   <value name='{Food:FoodSize -&gt; Food:LargePatty, Food:PattyCount -&gt; Food:Single, Food:Variety -&gt; Food:FastFood, Food:Variety -&gt; Food:Plain}'
       desc='hamburger, fast food, large patty, plain, single'
       input='*EAC.ExpandedFood.Hamburger-_**Hamburger.*Food%3AFoodSize_Food%3ALargePatty.Food%3APattyCount_Food%3ASingle.Food%3AVariety_Food%3AFastFood.Food%3AVariety_Food%3APlain---' />
   <value name='{Food:FoodSize -&gt; Food:RegularPatty, Food:PattyCount -&gt; Food:Single, Food:Variety -&gt; Food:FastFood, Food:Variety -&gt; Food:Plain}'
       desc='hamburger, fast food, plain, regular patty, single'
       input='*EAC.ExpandedFood.Hamburger-_**Hamburger.*Food%3AFoodSize_Food%3ARegularPatty.Food%3APattyCount_Food%3ASingle.Food%3AVariety_Food%3AFastFood.Food%3AVariety_Food%3APlain---' />
   <value name='{Food:AddedFoods -&gt; Food:WithCondiments, Food:FoodSize -&gt; Food:LargePatty, Food:PattyCount -&gt; Food:Single, Food:Variety -&gt; Food:FastFood}'
       desc='hamburger, fast food, large patty, single, with condiments'
       input='*EAC.ExpandedFood.Hamburger-_**Hamburger.*Food%3AAddedFoods_Food%3AWithCondiments.Food%3AFoodSize_Food%3ALargePatty.Food%3APattyCount_Food%3ASingle.Food%3AVariety_Food%3AFastFood---' />
   <value name='{Food:AddedFoods -&gt; Food:WithCondiments, Food:FoodSize -&gt; Food:RegularPatty, Food:PattyCount -&gt; Food:Single, Food:Variety -&gt; Food:FastFood}'
       desc='hamburger, fast food, regular patty, single, with condiments'
       input='*EAC.ExpandedFood.Hamburger-_**Hamburger.*Food%3AAddedFoods_Food%3AWithCondiments.Food%3AFoodSize_Food%3ARegularPatty.Food%3APattyCount_Food%3ASingle.Food%3AVariety_Food%3AFastFood---' />
   <value name='{Food:AddedFoods -&gt; Food:WithCondiments, Food:AddedFoods -&gt; Food:WithVegetables, Food:FoodSize -&gt; Food:LargePatty, Food:PattyCount -&gt; Food:Single, Food:Variety -&gt; Food:FastFood}'
       desc='hamburger, fast food, large patty, single, with condiments, with vegetables'
       input='*EAC.ExpandedFood.Hamburger-_**Hamburger.*Food%3AAddedFoods_Food%3AWithCondiments.Food%3AAddedFoods_Food%3AWithVegetables.Food%3AFoodSize_Food%3ALargePatty.Food%3APattyCount_Food%3ASingle.Food%3AVariety_Food%3AFastFood---' />
   <value name='{Food:AddedFoods -&gt; Food:WithCondiments, Food:AddedFoods -&gt; Food:WithVegetables, Food:FoodSize -&gt; Food:RegularPatty, Food:PattyCount -&gt; Food:Single, Food:Variety -&gt; Food:FastFood}'
       desc='hamburger, fast food, regular patty, single, with condiments, with vegetables'
       input='*EAC.ExpandedFood.Hamburger-_**Hamburger.*Food%3AAddedFoods_Food%3AWithCondiments.Food%3AAddedFoods_Food%3AWithVegetables.Food%3AFoodSize_Food%3ARegularPatty.Food%3APattyCount_Food%3ASingle.Food%3AVariety_Food%3AFastFood---' />
   <value name='{Food:AddedFoods -&gt; Food:WithCondimentsVegetables, Food:AddedFoods -&gt; Food:WithMayonnaise, Food:FoodSize -&gt; Food:LargePatty, Food:PattyCount -&gt; Food:Single, Food:Variety -&gt; Food:FastFood}'
       desc='hamburger, fast food, large patty, single, with condiments vegetables, with mayonnaise'
       input='*EAC.ExpandedFood.Hamburger-_**Hamburger.*Food%3AAddedFoods_Food%3AWithCondimentsVegetables.Food%3AAddedFoods_Food%3AWithMayonnaise.Food%3AFoodSize_Food%3ALargePatty.Food%3APattyCount_Food%3ASingle.Food%3AVariety_Food%3AFastFood---' />
   <value name='{Food:AddedFoods -&gt; Food:WithCondiments, Food:AddedFoods -&gt; Food:WithDoubleDeckerBun, Food:AddedFoods -&gt; Food:WithSpecialSauce, Food:FoodSize -&gt; Food:RegularPatty, Food:PattyCount -&gt; Food:Single, Food:Variety -&gt; Food:FastFood}'
       desc='hamburger, fast food, regular patty, single, with condiments, with double decker bun, with special sauce'
       input='*EAC.ExpandedFood.Hamburger-_**Hamburger.*Food%3AAddedFoods_Food%3AWithCondiments.Food%3AAddedFoods_Food%3AWithDoubleDeckerBun.Food%3AAddedFoods_Food%3AWithSpecialSauce.Food%3AFoodSize_Food%3ARegularPatty.Food%3APattyCount_Food%3ASingle.Food%3AVariety_Food%3AFastFood---' />
  </assumption>
 </assumptions>
 <sources count='1'>
  <source url='http://www.wolframalpha.com/sources/ExpandedFoodDataSourceInformationNotes.html'
      text='Expanded food data' />
 </sources>
</queryresult>

I want to get the subpots with primary=true and output its plaintext, It seems hard for me to work it out, could you help?

vanabel commented 8 years ago

I know the method of use the ID:NutritionLabelSingle:ExpandedFoodData, since it change case by case, I want a general method.