package common

import (
	"bufio"
	"fmt"
	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/bson/primitive"
	"os"
	"strings"
	"sync"
	"time"
	"wss-pool/config"
	"wss-pool/internal/data"
	"wss-pool/logging/applogger"
)

var validStockCodeMutex = sync.RWMutex{}
var validStockCode = map[string]bool{}
var NotStockCode = map[string]bool{
	"BSE:20MICRONS":  true,
	"BSE:21STCENMGM": true,
	"BSE:360ONE":     true,
	"BSE:3IINFOLTD":  true,
	"BSE:3MINDIA":    true,
	"BSE:3PLAND":     true,
	"BSE:5PAISA":     true,
	"BSE:63MOONS":    true,
	"BSE:A2ZINFRA":   true,
	"BSE:AAATECH":    true,
	"BSE:AAREYDRUGS": true,
	"BSE:AARTECH":    true,
	"BSE:AARTIDRUGS": true,
	"BSE:AARTIIND":   true,
	"BSE:AARTIPHARM": true,
	"BSE:AARVEEDEN":  true,
	"BSE:AAVAS":      true,
	"BSE:ABAN":       true,
	"BSE:ABB":        true,
	"BSE:ABBOTINDIA": true,
	"BSE:ABCAPITAL":  true,
	"BSE:ABFRL":      true,
	"BSE:ABSLAMC":    true,
	"BSE:ACC":        true,
	"BSE:ACCELYA":    true,
	"BSE:ACE":        true,
	"BSE:ACI":        true,
	"BSE:ACL":        true,
	"BSE:ADANIENSOL": true,
	"BSE:ADANIENT":   true,
	"BSE:ADANIGREEN": true,
	"BSE:ADANIPORTS": true,
	"BSE:ADANIPOWER": true,
	"BSE:ADFFOODS":   true,
	"BSE:ADL":        true,
	"BSE:ADORWELD":   true,
	"BSE:ADROITINFO": true,
	"BSE:ADSL":       true,
	"BSE:ADVANIHOTR": true,
	"BSE:ADVENZYMES": true,
	"BSE:AEROFLEX":   true,
	"BSE:AETHER":     true,
	"BSE:AFFLE":      true,
	"BSE:AGARIND":    true,
	"BSE:AGI":        true,
	"BSE:AGRITECH":   true,
	"BSE:AGSTRA":     true,
	"BSE:AHL":        true,
	"BSE:AHLEAST":    true,
	"BSE:AHLUCONT":   true,
	"BSE:AIAENG":     true,
	"BSE:AIRAN":      true,
	"BSE:AJANTPHARM": true,
	"BSE:AJMERA":     true,
	"BSE:AKI":        true,
	"BSE:AKSHAR":     true,
	"BSE:AKSHARCHEM": true,
	"BSE:AKSHOPTFBR": true,
	"BSE:AKZOINDIA":  true,
	"BSE:ALANKIT":    true,
	"BSE:ALBERTDAVD": true,
	"BSE:ALEMBICLTD": true,
	"BSE:ALICON":     true,
	"BSE:ALKALI":     true,
	"BSE:ALKEM":      true,
	"BSE:ALKYLAMINE": true,
	"BSE:ALLCARGO":   true,
	"BSE:ALLSEC":     true,
	"BSE:ALMONDZ":    true,
	"BSE:ALOKINDS":   true,
	"BSE:ALPA":       true,
	"BSE:ALPHAGEO":   true,
	"BSE:ALPSINDUS":  true,
	"BSE:AMBER":      true,
	"BSE:AMBICAAGAR": true,
	"BSE:AMBIKCO":    true,
	"BSE:AMBUJACEM":  true,
	"BSE:AMDIND":     true,
	"BSE:AMIORG":     true,
	"BSE:AMJLAND":    true,
	"NSE:AMNPLST":    true,
	"BSE:AMRUTANJAN": true,
	"BSE:ANANDRATHI": true,
	"BSE:ANANTRAJ":   true,
	"BSE:ANDHRAPAP":  true,
	"BSE:ANDHRSUGAR": true,
	"BSE:ANDREWYU":   true,
	"BSE:ANGELONE":   true,
	"BSE:ANIKINDS":   true,
	"BSE:ANKITMETAL": true,
	"BSE:ANMOL":      true,
	"BSE:ANUP":       true,
	"BSE:ANURAS":     true,
	"BSE:APARINDS":   true,
	"BSE:APCL":       true,
	"BSE:APCOTEXIND": true,
	"BSE:APEX":       true,
	"BSE:APLAPOLLO":  true,
	"BSE:APLLTD":     true,
	"BSE:APOLLO":     true,
	"BSE:APOLLOHOSP": true,
	"BSE:APOLLOPIPE": true,
	"BSE:APOLLOTYRE": true,
	"BSE:APTECHT":    true,
	"BSE:APTUS":      true,
	"BSE:ARCHIDPLY":  true,
	"BSE:ARCHIES":    true,
	"BSE:ARENTERP":   true,
	"BSE:ARIES":      true,
	"BSE:ARIHANTCAP": true,
	"BSE:ARIHANTSUP": true,
	"BSE:ARMANFIN":   true,
	"BSE:AROGRANITE": true,
	"BSE:ARROWGREEN": true,
	"BSE:ARSHIYA":    true,
	"BSE:ARTEMISMED": true,
	"BSE:ARVIND":     true,
	"BSE:ARVINDFASN": true,
	"BSE:ARVSMART":   true,
	"BSE:ASAHIINDIA": true,
	"BSE:ASAHISONG":  true,
	"BSE:ASAL":       true,
	"BSE:ASALCBR":    true,
	"BSE:ASHAPURMIN": true,
	"BSE:ASHIANA":    true,
	"BSE:ASHIMASYN":  true,
	"BSE:ASHOKA":     true,
	"BSE:ASHOKLEY":   true,
	"BSE:ASIANENE":   true,
	"BSE:ASIANHOTNR": true,
	"BSE:ASIANPAINT": true,
	"BSE:ASIANTILES": true,
	"BSE:ASMS":       true,
	"BSE:ASTEC":      true,
	"BSE:ASTERDM":    true,
	"BSE:ASTRAL":     true,
	"BSE:ASTRAMICRO": true,
	"BSE:ASTRAZEN":   true,
	"BSE:ASTRON":     true,
	"BSE:ATALREAL":   true,
	"BSE:ATAM":       true,
	"BSE:ATFL":       true,
	"BSE:ATGL":       true,
	"BSE:ATL":        true,
	"BSE:ATUL":       true,
	"BSE:ATULAUTO":   true,
	"BSE:AUBANK":     true,
	"BSE:AURIONPRO":  true,
	"BSE:AUROPHARMA": true,
	"BSE:AURUM":      true,
	"BSE:AUSOMENT":   true,
	"BSE:AUTOAXLES":  true,
	"BSE:AUTOIND":    true,
	"BSE:AVADHSUGAR": true,
	"BSE:AVALON":     true,
	"BSE:AVANTIFEED": true,
	"BSE:AVG":        true,
	"BSE:AVONMORE":   true,
	"BSE:AVROIND":    true,
	"BSE:AVTNPL":     true,
	"BSE:AWHCL":      true,
	"BSE:AWL":        true,
	"BSE:AXISBANK":   true,
	"BSE:AXISCADES":  true,
	"BSE:AXITA":      true,
	"BSE:AYMSYNTEX":  true,
	"BSE:BAFNAPH":    true,
	"BSE:BAGFILMS":   true,
	"BSE:BAIDFIN":    true,
	"BSE:BAJAJCON":   true,
	"BSE:BAJAJELEC":  true,
	"BSE:BAJAJFINSV": true,
	"BSE:BAJAJHCARE": true,
	"BSE:BAJAJHIND":  true,
	"BSE:BAJAJHLDNG": true,
	"BSE:BAJFINANCE": true,
	"BSE:BALAJITELE": true,
	"BSE:BALAMINES":  true,
	"BSE:BALKRISHNA": true,
	"BSE:BALKRISIND": true,
	"BSE:BALMLAWRIE": true,
	"BSE:BALPHARMA":  true,
	"BSE:BALRAMCHIN": true,
	"BSE:BANARBEADS": true,
	"BSE:BANARISUG":  true,
	"BSE:BANCOINDIA": true,
	"BSE:BANDHANBNK": true,
	"BSE:BANG":       true,
	"BSE:BANKBARODA": true,
	"BSE:BANKINDIA":  true,
	"BSE:BANSWRAS":   true,
	"BSE:BARBEQUE":   true,
	"BSE:BASF":       true,
	"BSE:BASML":      true,
	"BSE:BATAINDIA":  true,
	"BSE:BAYERCROP":  true,
	"BSE:BBL":        true,
	"BSE:BBOX":       true,
	"BSE:BBTC":       true,
	"BSE:BBTCL":      true,
	"BSE:BCG":        true,
	"BSE:BCLIND":     true,
	"BSE:BCONCEPTS":  true,
	"BSE:BDL":        true,
	"BSE:BEARDSELL":  true,
	"BSE:BECTORFOOD": true,
	"BSE:BEDMUTHA":   true,
	"BSE:BEL":        true,
	"BSE:BEML":       true,
	"BSE:BEPL":       true,
	"BSE:BERGEPAINT": true,
	"BSE:BFINVEST":   true,
	"BSE:BFUTILITIE": true,
	"BSE:BGRENERGY":  true,
	"BSE:BHAGCHEM":   true,
	"BSE:BHAGERIA":   true,
	"BSE:BHAGYANGR":  true,
	"BSE:BHANDARI":   true,
	"BSE:BHARATFORG": true,
	"BSE:BHARATGEAR": true,
	"BSE:BHARATRAS":  true,
	"BSE:BHARATWIRE": true,
	"BSE:BHARTIARTL": true,
	"BSE:BHEL":       true,
	"BSE:BIGBLOC":    true,
	"BSE:BIKAJI":     true,
	"BSE:BIL":        true,
	"BSE:BINANIIND":  true,
	"BSE:BIOCON":     true,
	"BSE:BIOFILCHEM": true,
	"BSE:BIRLACABLE": true,
	"BSE:BIRLACORPN": true,
	"BSE:BIRLAMONEY": true,
	"BSE:BKMINDST":   true,
	"BSE:BLAL":       true,
	"BSE:BLBLIMITED": true,
	"BSE:BLISSGVS":   true,
	"BSE:BLKASHYAP":  true,
	"BSE:BLS":        true,
	"BSE:BLUECHIP":   true,
	"BSE:BLUEDART":   true,
	"BSE:BLUESTARCO": true,
	"BSE:BODALCHEM":  true,
	"BSE:BOMDYEING":  true,
	"BSE:BOROLTD":    true,
	"BSE:BORORENEW":  true,
	"BSE:BOSCHLTD":   true,
	"BSE:BPCL":       true,
	"BSE:BPL":        true,
	"BSE:BRIGADE":    true,
	"NSE:BRIGHT":     true,
	"BSE:BRITANNIA":  true,
	"BSE:BRNL":       true,
	"BSE:BROOKS":     true,
	"BSE:BSL":        true,
	"BSE:BSOFT":      true,
	"BSE:BTML":       true,
	"BSE:BURNPUR":    true,
	"BSE:BUTTERFLY":  true,
	"BSE:BVCL":       true,
	"BSE:BYKE":       true,
	"BSE:CALSOFT":    true,
	"BSE:CAMLINFINE": true,
	"BSE:CAMPUS":     true,
	"BSE:CAMS":       true,
	"BSE:CANBK":      true,
	"BSE:CANFINHOME": true,
	"BSE:CANTABIL":   true,
	"BSE:CAPACITE":   true,
	"BSE:CAPLIPOINT": true,
	"BSE:CAPTRUST":   true,
	"BSE:CARBORUNIV": true,
	"BSE:CAREERP":    true,
	"BSE:CARERATING": true,
	"BSE:CARTRADE":   true,
	"BSE:CARYSIL":    true,
	"BSE:CASTROLIND": true,
	"BSE:CCHHL":      true,
	"BSE:CCL":        true,
	"BSE:CEATLTD":    true,
	"BSE:CELEBRITY":  true,
	"BSE:CENTENKA":   true,
	"BSE:CENTEXT":    true,
	"BSE:CENTRALBK":  true,
	"BSE:CENTRUM":    true,
	"BSE:CENTUM":     true,
	"BSE:CENTURYPLY": true,
	"BSE:CENTURYTEX": true,
	"BSE:CERA":       true,
	"BSE:CEREBRAINT": true,
	"BSE:CESC":       true,
	"BSE:CGCL":       true,
	"BSE:CGPOWER":    true,
	"BSE:CHALET":     true,
	"BSE:CHAMBLFERT": true,
	"BSE:CHEMBOND":   true,
	"BSE:CHEMCON":    true,
	"BSE:CHEMFAB":    true,
	"BSE:CHEMPLASTS": true,
	"BSE:CHENNPETRO": true,
	"BSE:CHEVIOT":    true,
	"BSE:CHOICEIN":   true,
	"BSE:CHOLAFIN":   true,
	"BSE:CHOLAHLDNG": true,
	"BSE:CIEINDIA":   true,
	"BSE:CIGNITITEC": true,
	"BSE:CINELINE":   true,
	"BSE:CINEVISTA":  true,
	"BSE:CIPLA":      true,
	"BSE:CLEAN":      true,
	"BSE:CLEDUCATE":  true,
	"BSE:CLSEL":      true,
	"BSE:CMSINFO":    true,
	"BSE:COALINDIA":  true,
	"BSE:COASTCORP":  true,
	"BSE:COCHINSHIP": true,
	"BSE:COFFEEDAY":  true,
	"BSE:COFORGE":    true,
	"BSE:COLPAL":     true,
	"BSE:COMPINFO":   true,
	"BSE:COMPUSOFT":  true,
	"BSE:CONCOR":     true,
	"BSE:CONCORDBIO": true,
	"BSE:CONFIPET":   true,
	"BSE:CONTROLPR":  true,
	"BSE:CORALFINAC": true,
	"BSE:CORDSCABLE": true,
	"BSE:COROMANDEL": true,
	"BSE:COSMOFIRST": true,
	"BSE:COUNCODOS":  true,
	"BSE:CRAFTSMAN":  true,
	"NSE:CREATIVE":   true,
	"BSE:CREATIVEYE": true,
	"BSE:CREDITACC":  true,
	"BSE:CREST":      true,
	"BSE:CRISIL":     true,
	"BSE:CROMPTON":   true,
	"BSE:CSBBANK":    true,
	"BSE:CSLFINANCE": true,
	"BSE:CTE":        true,
	"BSE:CUB":        true,
	"BSE:CUBEXTUB":   true,
	"BSE:CUMMINSIND": true,
	"BSE:CUPID":      true,
	"BSE:CYBERMEDIA": true,
	"BSE:CYBERTECH":  true,
	"BSE:CYIENT":     true,
	"BSE:CYIENTDLM":  true,
	"BSE:DABUR":      true,
	"BSE:DALBHARAT":  true,
	"BSE:DALMIASUG":  true,
	"BSE:DAMODARIND": true,
	"BSE:DATAMATICS": true,
	"BSE:DATAPATTNS": true,
	"BSE:DBCORP":     true,
	"BSE:DBL":        true,
	"BSE:DBOL":       true,
	"BSE:DBREALTY":   true,
	"BSE:DBSTOCKBRO": true,
	"BSE:DCAL":       true,
	"BSE:DCBBANK":    true,
	"BSE:DCI":        true,
	"BSE:DCM":        true,
	"BSE:DCMFINSERV": true,
	"BSE:DCMNVL":     true,
	"BSE:DCMSHRIRAM": true,
	"BSE:DCMSRIND":   true,
	"BSE:DCW":        true,
	"BSE:DCXINDIA":   true,
	"BSE:DECCANCE":   true,
	"BSE:DEEPAKFERT": true,
	"BSE:DEEPAKNTR":  true,
	"BSE:DEEPENR":    true,
	"BSE:DEEPINDS":   true,
	"BSE:DELHIVERY":  true,
	"BSE:DELPHIFX":   true,
	"BSE:DELTACORP":  true,
	"BSE:DELTAMAGNT": true,
	"BSE:DEN":        true,
	"BSE:DENORA":     true,
	"BSE:DEVIT":      true,
	"BSE:DEVYANI":    true,
	"BSE:DGCONTENT":  true,
	"BSE:DHAMPURSUG": true,
	"BSE:DHANBANK":   true,
	"BSE:DHANI":      true,
	"BSE:DHANUKA":    true,
	"BSE:DHARMAJ":    true,
	"BSE:DHRUV":      true,
	"BSE:DHUNINV":    true,
	"BSE:DIACABS":    true,
	"BSE:DIAMINESQ":  true,
	"BSE:DIAMONDYD":  true,
	"BSE:DICIND":     true,
	"BSE:DIGISPICE":  true,
	"BSE:DISHTV":     true,
	"BSE:DIVGIITTS":  true,
	"BSE:DIVISLAB":   true,
	"BSE:DIXON":      true,
	"BSE:DJML":       true,
	"BSE:DLF":        true,
	"BSE:DLINKINDIA": true,
	"BSE:DOLPHIN":    true,
	"BSE:DPWIRES":    true,
	"NSE:DRL":        true,
	"BSE:DTIL":       true,
	"BSE:DYCL":       true,
	"BSE:EMSLIMITED": true,
	"BSE:EPIGRAL":    true,
	"BSE:FINPIPE":    true,
	"BSE:FOCUS":      true,
	"BSE:GANGESSECU": true,
	"BSE:GENSOL":     true,
	"BSE:GHCLTEXTIL": true,
	"BSE:GMMPFAUDLR": true,
	"BSE:GREENLAM":   true,
	"BSE:GSTL":       true,
	"BSE:GUJGASLTD":  true,
	"BSE:GUJRAFFIA":  true,
	"BSE:HBSL":       true,
	"BSE:HISARMETAL": true,
	"BSE:HMAAGRO":    true,
	"BSE:IDEAFORGE":  true,
	"BSE:IKIO":       true,
	"BSE:INNOVATIVE": true,
	"BSE:IRBINVIT":   true,
	"BSE:JAYSREETEA": true,
	"BSE:JIOFIN":     true,
	"BSE:JLHL":       true,
	"BSE:JSWINFRA":   true,
	"BSE:KALAMANDIR": true,
	"BSE:KDL":        true,
	"BSE:KEYFINSERV": true,
	"NSE:KORE":       true,
	"BSE:KPIL":       true,
	"BSE:KRIDHANINF": true,
	"BSE:KRITI":      true,
	"BSE:LINCOLN":    true,
	"BSE:LLOYDSME":   true,
	"BSE:LOTUSEYE":   true,
	"BSE:MAGADSUGAR": true,
	"BSE:MANAKALUCO": true,
	"BSE:MANAKCOAT":  true,
	"BSE:MANAKSTEEL": true,
	"BSE:MAXIND":     true,
	"BSE:MAZDA":      true,
	"BSE:MICEL":      true,
	"BSE:MKPL":       true,
	"BSE:MOLDTECH":   true,
	"BSE:MSTCLTD":    true,
	"BSE:MUTHOOTCAP": true,
	"BSE:MVGJL":      true,
	"BSE:NAGAFERT":   true,
	"BSE:NETWEB":     true,
	"BSE:NIITMTS":    true,
	"BSE:NILAINFRA":  true,
	"BSE:NRAIL":      true,
	"BSE:NUVAMA":     true,
	"BSE:OCCL":       true,
	"BSE:ORCHPHARMA": true,
	"BSE:ORICONENT":  true,
	"BSE:ORTINLAB":   true,
	"BSE:PAKKA":      true,
	"BSE:PALASHSECU": true,
	"BSE:PALREDTEC":  true,
	"BSE:PAVNAIND":   true,
	"BSE:PODDARHOUS": true,
	"BSE:PODDARMENT": true,
	"BSE:PRECISION":  true,
	"BSE:PREMEXPLN":  true,
	"BSE:PROZONER":   true,
	"BSE:PTCIL":      true,
	"BSE:PYRAMID":    true,
	"BSE:RAJRATAN":   true,
	"BSE:RAJRILTD":   true,
	"BSE:RATNAVEER":  true,
	"BSE:REDTAPE":    true,
	"BSE:RHFL":       true,
	"BSE:RISHABH":    true,
	"BSE:ROML":       true,
	"BSE:RRKABEL":    true,
	"BSE:RSYSTEMS":   true,
	"BSE:SAFARI":     true,
	"BSE:SALONA":     true,
	"BSE:SALZERELEC": true,
	"BSE:SAMHI":      true,
	"BSE:SAMPANN":    true,
	"BSE:SANDUMA":    true,
	"BSE:SBCL":       true,
	"BSE:SBFC":       true,
	"BSE:SEJALLTD":   true,
	"NSE:SEL":        true,
	"BSE:SELMC":      true,
	"BSE:SENCO":      true,
	"NSE:SENSEXETF":  true,
	"BSE:SHARDAMOTR": true,
	"NSE:SHEETAL":    true,
	"BSE:SHIVATEX":   true,
	"BSE:SHYAMCENT":  true,
	"BSE:SIGIND":     true,
	"BSE:SIGMA":      true,
	"BSE:SIGNATURE":  true,
	"BSE:SINDHUTRAD": true,
	"BSE:SOMICONVEY": true,
	"BSE:SOUTHWEST":  true,
	"BSE:SPENCERS":   true,
	"BSE:SRGHFL":     true,
	"BSE:SUBEXLTD":   true,
	"BSE:TASTYBITE":  true,
	"BSE:TECILCHEM":  true,
	"BSE:TITAGARH":   true,
	"BSE:TPLPLASTEH": true,
	"BSE:TREL":       true,
	"BSE:TTKHLTCARE": true,
	"BSE:TVSSCS":     true,
	"BSE:UCAL":       true,
	"BSE:UDS":        true,
	"BSE:UMANGDAIRY": true,
	"BSE:UNIENTER":   true,
	"BSE:URAVI":      true,
	"BSE:URJA":       true,
	"BSE:UTKARSHBNK": true,
	"BSE:VALIANTLAB": true,
	"BSE:VENKEYS":    true,
	"BSE:VIJIFIN":    true,
	"BSE:VIPULLTD":   true,
	"BSE:VLEGOV":     true,
	"BSE:VPRPL":      true,
	"NSE:WORTH":      true,
	"BSE:WSI":        true,
	"BSE:YASHO":      true,
	"BSE:YATHARTH":   true,
	"BSE:YATRA":      true,
	"NSE:ZEAL":       true,
	"BSE:BLUECOAST":  true,
	"BSE:DIGJAMLMTD": true,
	"BSE:GATECH":     true,
	"NSE:SECMARK":    true,
	"BSE:KEL":        true,
	"BSE:PLAZACABLE": true,
	"BSE:SICALLOG":   true,
	"BSE:LLOYDSENGG": true,
	"NSE:MAL":        true,
	"NSE:TCLCONS":    true,
	"BSE:TPHQ":       true,
	"BSE:SURAJEST":   true,
	"BSE:NCC":        true,
}

func GetIndiaStock() {
	for {
		filter := bson.M{"Country": "India"}
		dateList, err := data.MgoFind(data.StockList, filter)
		if err != nil {
			applogger.Error("MgoFind info err: %v", err)
			continue
		}
		//start := time.Now() // 获取当前时间
		validStockCodeMutex.Lock()
		if len(dateList.([]primitive.M)) > 0 {
			validStockCode = map[string]bool{}
		}
		for _, value := range dateList.([]primitive.M) {
			if value["Exchange"] == nil || value["Code"] == nil {
				continue
			}
			code := value["Code"].(string)
			exchange := value["Exchange"].(string)
			validStockCode[fmt.Sprintf("%s:%s", exchange, code)] = true
		}
		validStockCodeMutex.Unlock()
		//fmt.Println("Run time: ", time.Since(start))
		applogger.Info("india stock number :%v", len(validStockCode))
		time.Sleep(1 * time.Hour)
	}
}

func GetIndiaStockBool(key, country string) bool {
	if country != "India" {
		return true
	}
	validStockCodeMutex.RLock()
	defer validStockCodeMutex.RUnlock()
	return validStockCode[key]
}

func ReadTest(rename string) {
	data.Mgo_init(config.Config.Mongodb)
	file, err := os.Open(rename)
	if err != nil {
		// 错误处理
		fmt.Println("Error opening file:", err)
		return
	}
	defer file.Close() // 确保在函数结束时关闭文件

	scanner := bufio.NewScanner(file)
	stockList := make([]string, 0)
	//	i := 0
	for scanner.Scan() {
		//i++
		// scanner.Text() 返回当前行的内容
		//	fmt.Println(strings.TrimSpace(scanner.Text()),i)
		filter := bson.M{"Country": "India", "Code": strings.TrimSpace(scanner.Text())}
		dateList, _ := data.MgoFind(data.StockList, filter)
		res := dateList.([]primitive.M)
		if len(res) <= 0 {
			fmt.Println(res)
			continue
		} else if len(res) >= 2 {
			fmt.Println(res)
			break
		}
		str, ok := res[0]["Exchange"].(string)
		if !ok {
			fmt.Println(res)
			continue
		}
		exchange := "BSE"
		if str == "BSE" {
			exchange = "NSE"
		}
		stockList = append(stockList, fmt.Sprintf("%s:%s", exchange, strings.TrimSpace(scanner.Text())))
	}

	if err := scanner.Err(); err != nil {
		fmt.Println("Error reading file:", err)
	}
	write(stockList)
}

func write(param []string) {
	fmt.Println(len(param))
	filename := "example.txt"
	// 打开文件以追加数据,如果文件不存在则创建它
	file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
	if err != nil {
		fmt.Println("Error opening file:", err)
		return
	}
	defer file.Close()
	// 要追加的内容
	for _, value := range param {
		content := fmt.Sprintf(`"%s":true, %s`, value, "\n")
		// 写入数据
		_, err = file.WriteString(content)
		if err != nil {
			fmt.Println("Error writing to file:", err)
			return
		}
	}
}