def run(): # Get reports, gather data and write it down result = [ [0, 0, 0, 0], # Events without curse, 25/50/75/100% damage done [0, 0, 0, 0] # Events with curse, 25/50/75/100% damage done ] reportSet = getReportSet(encounterData.get('zone'), l) reportCount = len(reportSet) processedCount = 0 encounterName = encounterData.get('encounterData').get('name') zoneNumber = encounterData.get('zone') for url in reportSet: report = Report(url) data = report.returnPartialsTable() for curseType in range(2): for partialType in range(4): result[curseType][partialType] += data[curseType][partialType] processedCount += 1 print('{} out of {} reports are done for {}'.format( processedCount, reportCount, encounterName)) if processedCount % 10 == 0 or processedCount == len(reportSet): # Rewrite crawl results sometimes to backup in case of crash or error fileName = '{}-{}-{}.txt'.format(zoneNumber, encounterName, s) f = open(fileName, 'w') f.write(f'# {encounterName}\n') f.write('### No curse: {}\n'.format(calcMitigation(result[0]))) f.write('### With curse: {}\n\n'.format(calcMitigation(result[1]))) f.write('##### Dataset (number of casts by % of damage done):\n') f.write('No curse: 25% - {} | 50% - {} | 75% - {} | 100% - {}\\\n'. format(result[0][0], result[0][1], result[0][2], result[0][3])) f.write('With curse: 25% - {} | 50% - {} | 75% - {} | 100% - {}\n'. format(result[1][0], result[1][1], result[1][2], result[1][3])) f.close()
}, 97: { 'hit': 0, 'total': 0 }, 98: { 'hit': 0, 'total': 0 }, 99: { 'hit': 0, 'total': 0 } } reports = getReportSet(zone=1005, pages=50) counter = 0 for report in reports: print(counter) damage = reportDamageQuerySmite(report).get('reportData', {}).get( 'report', {}).get('events', {}).get('data', []) if not damage: continue response = reportGearQuerySmite(report) gearResponse = response.get('reportData', {}).get('report', {}).get('events', {}).get('data', []) playerResponse = response.get('reportData', {}).get('report', {}).get('masterData',
sourceID = data[0].get('sourceID') data = list( filter( lambda e: e.get('sourceID') == sourceID and e.get('type') == 'applybuff', data)) rangeList = [] for i in range(len(data) - 1): tpRange = round( (data[i + 1].get('timestamp') - data[i].get('timestamp')) / 1000, 1) if tpRange < 25 or tpRange > 50: # Skip obv wrong values continue rangeList.append(tpRange) return rangeList if __name__ == '__main__': reportSet = getReportSet(1005, 2) dataset = [] counter = 0 bins_list = arange(28, 45, 0.1) for report in reportSet: dataset.extend(crawlReport(report)) counter += 1 print(counter, report) if counter % 1000 == 0: # Return histogram after every N reports plt.hist(dataset, bins=bins_list) plt.show()
from utils.querys import getReportSet, obsidianTable reportSet = getReportSet(1006, 2) counter = 1 ''' events = [] partials = { 25: 0, 50: 0, 75: 0, 100: 0 } for report in reportSet: print(counter, 'out of', len(reportSet)) startTime = 1 while startTime: print(startTime) response = sapphDmgTaken(report, startTime).get('reportData', {}).get('report', {}).get('events', {}) data = response.get('data') events.extend(data) startTime = response.get('nextPageTimestamp', 0) if len(events) > 60000: break if len(events) > 60000: break counter += 1 fullRes = 0 total = 0 for event in events: u = event.get('unmitigatedAmount', 0)