1. lastath = [18588]; %%18588 = Annie 2371 = for men now This is the seed of the first athlete on the leaderboard
  2. S = {};
  3. for n=1:20
  4. S{end+1} = urlread(['http://leaderboard.crossfit.com/leaderboard.php?did=2&rid=0&npp=100&uid=',num2str(lastath(n))]);
  5. %%% Note to change from men to women, change the did to either 1(men)
  6. %%% or 2 (women)
  7. ind = findstr(S{n},'/athlete/');
  8. longID = S{n}(ind(end)+9:ind(end)+15);
  9. en = findstr(longID,'"');
  10. id = longID(1:en-1);
  11. if lastath(end) == str2num(id);
  12. break
  13. else
  14. lastath(end+1) = str2num(id);
  15. end
  16. end
  17. 
  18. %%
  19. clearvars -except S xfitm xfitw lastath
  20. m = 1;
  21. for i = 1:length(S)
  22. if i == 1 %% special case of the first page, where the whole page is unique
  23. ind = findstr(S{i},'/athlete/');
  24. for j = 1:length(ind)
  25. longname = S{i}(ind(j)+20:ind(j)+100);
  26. top = findstr(longname,'"_top">');
  27. en = findstr(longname,'</a></td>');
  28. xfit(m).name = longname(top+7:en-1);
  29. st = findstr(S{i},xfit(m).name);
  30. if j<length(ind) %careful could be bad
  31. en = ind(j+1);
  32. else
  33. en = length(S{i});
  34. end
  35. allworkoutstr = S{i}(st:en);
  36. wkind = findstr(allworkoutstr,'"tooltip');
  37. for k = 1:3
  38. longwkstr = allworkoutstr(wkind(k)+10:wkind(k)+60);
  39. if k == 1
  40. if findstr(longwkstr,'">')
  41. scorest = findstr(longwkstr,'">');
  42. scoreen = findstr(longwkstr,'bur');
  43. score = str2num(longwkstr(scorest+2:scoreen-1));
  44. eval(['xfit(m).wk',num2str(k),' = score;']);
  45. else
  46. eval(['xfit(m).wk',num2str(k),' = [];']);
  47. end
  48. else
  49. if findstr(longwkstr,'">')
  50. scorest = findstr(longwkstr,'">');
  51. scoreen = findstr(longwkstr,'tot');
  52. score = str2num(longwkstr(scorest+2:scoreen-1));
  53. eval(['xfit(m).wk',num2str(k),' = score;']);
  54. else
  55. eval(['xfit(m).wk',num2str(k),' = [];']);
  56. end
  57. end
  58. end
  59. m=m+1;
  60. end
  61. else
  62. st = findstr(S{i},xfit(end).name);
  63. shortpg = S{i}(st:end);
  64. ind = findstr(shortpg,'/athlete/');
  65. for j = 1:length(ind)
  66. longname = shortpg(ind(j)+20:ind(j)+100);
  67. top = findstr(longname,'"_top">');
  68. en = findstr(longname,'</a></td>');
  69. xfit(m).name = longname(top+7:en-1);
  70. st = findstr(shortpg,xfit(m).name);
  71. if j<length(ind) %careful could be bad
  72. en = ind(j+1);
  73. else
  74. en = length(shortpg);
  75. end
  76. allworkoutstr = shortpg(st:en);
  77. wkind = findstr(allworkoutstr,'"tooltip');
  78. for k = 1:3
  79. longwkstr = allworkoutstr(wkind(k)+10:wkind(k)+60);
  80. if k == 1
  81. if findstr(longwkstr,'">')
  82. scorest = findstr(longwkstr,'">');
  83. scoreen = findstr(longwkstr,'bur');
  84. score = str2num(longwkstr(scorest+2:scoreen-1));
  85. eval(['xfit(m).wk',num2str(k),' = score;']);
  86. else
  87. eval(['xfit(m).wk',num2str(k),' = [];']);
  88. end
  89. else
  90. if findstr(longwkstr,'">')
  91. scorest = findstr(longwkstr,'">');
  92. scoreen = findstr(longwkstr,'tot');
  93. score = str2num(longwkstr(scorest+2:scoreen-1));
  94. eval(['xfit(m).wk',num2str(k),' = score;']);
  95. else
  96. eval(['xfit(m).wk',num2str(k),' = [];']);
  97. end
  98. end
  99. end
  100. m=m+1;
  101. end
  102. end
  103. end
  104. 
  105. %% Basic cdfplot
  106. 
  107. cdfplot([xfitm.wk3]); hold on; cdfplot([xfitw.wk3])
  108. title(['Early week 3 results']);
  109. xlabel('Total reps');
  110. ylabel('Percentile for week 3');