import re with open('internal/core/market.go', 'r') as f: text = f.read() pattern = re.compile(r'func \(m \*Market\) downloadOrders\(regionID int\) \(\[\]Order, error\) \{.*?return formatted, nil\n\}', re.DOTALL) replacement = """func (m *Market) downloadOrders(regionID int) ([]Order, error) { page := 1 var rawOrders []map[string]interface{} var lastExpiry string for { pageOrders, expiry, totalPages, err := m.EsiClient.GetRegionOrders(regionID, page) if err != nil { log.Printf("Failed to get region orders %d page %d: %v", regionID, page, err) break } if len(pageOrders) == 0 { break } rawOrders = append(rawOrders, pageOrders...) lastExpiry = expiry if page >= totalPages { break } page++ } if lastExpiry != "" { if parsed, err := time.Parse(time.RFC1123, lastExpiry); err == nil { m.ExpiresTimes[regionID] = parsed } else { m.ExpiresTimes[regionID] = time.Now().UTC() } } else { m.ExpiresTimes[regionID] = time.Now().UTC() } var formatted []Order for _, o := range rawOrders { typeID := int(o["type_id"].(float64)) item, exists := m.Items[typeID] if !exists { continue } cargoVol := item.Volume if cargoVol == nil || *cargoVol <= 0 { continue } issuedStr, _ := o["issued"].(string) issuedTime, _ := time.Parse("2006-01-02T15:04:05Z", issuedStr) isBuyOrder, _ := o["is_buy_order"].(bool) orderIDFloat, _ := o["order_id"].(float64) locIDFloat, _ := o["location_id"].(float64) price, _ := o["price"].(float64) volRemainFloat, _ := o["volume_remain"].(float64) formatted = append(formatted, Order{ OrderID: int(orderIDFloat), RegionID: regionID, LocationID: int(locIDFloat), TypeID: typeID, IsBuyOrder: isBuyOrder, Price: price, Issued: issuedTime, VolumeRemain: int(volRemainFloat), ItemName: item.TypeName, ItemCargoVolume: *cargoVol, }) } return formatted, nil }""" with open('internal/core/market.go', 'w') as f: f.write(text.replace(text[re.search(pattern, text).start():re.search(pattern, text).end()], replacement))