From d84d880627bcc1e1898a8f96b861bc25863ec86c Mon Sep 17 00:00:00 2001 From: Jesse Gilles Date: Mon, 20 Apr 2015 17:14:31 -0500 Subject: initial commit --- scripts/create-mcc-mnc-table.py | 106 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 scripts/create-mcc-mnc-table.py (limited to 'scripts') diff --git a/scripts/create-mcc-mnc-table.py b/scripts/create-mcc-mnc-table.py new file mode 100644 index 0000000..761454c --- /dev/null +++ b/scripts/create-mcc-mnc-table.py @@ -0,0 +1,106 @@ +#Generates MTS_IO_MccMncTable.cpp file by pulling latest MCC/MNC values +#from http://mcc-mnc.com + +#Original Source Idea: https://github.com/musalbas/mcc-mnc-table + + +import re +import urllib2 +import datetime + +print "/*!" +print " \\file MTS_IO_MccMncTable.cpp" +print " \\brief Auto-Generated MCC-MNC Lookup Table" +print " \\date " + str(datetime.date.today()) +print " \\author sgodinez" +print "" +print " An Auto-Generated MCC-MNC Lookup Table" +print "*/" +print "" +print "#include " +print "#include " +print "#include " +print "" +print "using namespace MTS::IO;" +print "" +print "MTS::AutoPtr MccMncTable::m_apLock(new MTS::Lock());" +print "MccMncTable* MccMncTable::m_pInstance = NULL;" +print "" +print "MccMncTable* MccMncTable::getInstance() {" +print " if(m_pInstance == NULL) {" +print " m_apLock->lock();" +print " if (m_pInstance == NULL) {" +print " m_pInstance = new MccMncTable();" +print " }" +print " m_apLock->unlock();" +print " }" +print " return m_pInstance;" +print "}" +print "" +print "MccMncTable::MccMncTable() {" +print " createTable();" +print "}" +print "" +print "Json::Value MccMncTable::lookup(const std::string& sMcc, const std::string& sMnc) {" +print " uint32_t iMcc, iMnc;" +print ' printTrace("[MCCMNC] MCCx[%s] MNCx[%s]", sMcc.c_str(), sMnc.c_str());' +print " if(!MTS::Text::parseHex(iMcc, sMcc)) { return Json::Value::null; }" +print " if(!MTS::Text::parseHex(iMnc, sMnc)) { return Json::Value::null; }" +print ' printTrace("[MCCMNC] MCC0X[%d] MNC0X[%d]", iMcc, iMnc);' +print " if (m_mTable.count(iMcc)) {" +print " if(m_mTable[iMcc].count(iMnc)) {" +print " std::vector vJson = MTS::Text::split(m_mTable[iMcc][iMnc], ',');" +print " Json::Value j;" +print ' j["iso"] = vJson[0];' +print ' j["country"] = vJson[1];' +print ' j["code"] = vJson[2];' +print ' j["carrier"] = vJson[3];' +print " return j;" +print " }" +print " }" +print "" +print " return Json::Value::null;" +print "}" +print "" +print "void MccMncTable::createTable() {" +print " std::string sData;" + +td_re = re.compile('([^<]*)'*6) + +html = urllib2.urlopen('http://mcc-mnc.com/').read() + +tbody_start = False +for line in html.split('\n'): + if '' in line: + tbody_start = True + elif '' in line: + break + elif tbody_start: + td_search = td_re.search(line) + mcc = td_search.group(1).strip().replace(',','') + mnc = td_search.group(2).strip().replace(',','') + iso = td_search.group(3).strip().replace(',','') + countryCode = td_search.group(4).strip().replace(',','') + country = td_search.group(5).strip().replace(',','') + carrier = td_search.group(6).strip().replace(',','') + + if mnc != "n/a": + mcc_int = int(mcc, 16) + if len(mnc) == 2: + mnc_int = int(mnc + 'f', 16) + else: + mnc_int = int(mnc, 16) + print ' m_mTable[' + str(mcc_int) + '][' + str(mnc_int) + '] = "' + \ + iso + ',' + countryCode + ',' + country + ',' + carrier + '";' + else: + print " //MCC(" + mcc + ') MNC(N/A) ISO(' + iso + ') Country Code(' + countryCode + ') Country(' + country + ') Carrier(' + carrier + ')' + + + +print "}" +print "" + + + + + -- cgit v1.2.3