import urllib.request
import csv
import time
# Get a file-like object for a site.
def cse_link():
try:
f = urllib.request.urlopen("http://www.cse.lk/listedcompanies/overview.htm?d-16544-e=1&6578706f7274=1")
# NOTE: At the interactive Python prompt, you may be prompted for a username
#http://www.cse.lk/listedcompanies/overview.htm?d-16544-e=1&6578706f7274=1
# NOTE: and password here.
# Read from the object, storing the page's contents in 's'.
# Read data decoded to utf-8
s = f.read().decode('utf-8')
# Save 's' data to log.csv file
logfile=open("log.csv",'w')
# log.csv file size
logfile.write(s)
size =logfile.tell()
if size==0:
print ("Nothing found to display"
"If the market status is CLOSED" )
logfile.close()
except:
print ("Network failed please re-check after few minuits")
def csv_read():
global positive,negitive,nothing,change_c,price_positive,price_negitive
" Open save file from above function"
filename = "log.csv"
reader = csv.reader(open(filename, "rt"))
line_to_read=0
# Comapny Status
positive=[]
negitive=[]
nothing=[]
#Value of gain
change_c=[]
# Price changes
price_positive=[]
price_negitive=[]
for r in reader:
" Read first value of the file "
Name_of_Company =r[0]
" Read coloum of Price change in Rs"
price_index=r[9]
" Read Coloum of price change in % "
gain=r[10]
"*********************************************************************************"
"Read contributor status (-),'',(+) "
change_symbol=r[11]
if change_symbol=='(-)':
line_to_read +=1
negitive.append(Name_of_Company)
if price_index.find(',')>0:
first_negitive=price_index[0]
second_negitive=eval(first_negitive)
third_negitive=eval(price_index[2:])
for i in range(second_negitive):
fixed_negitive=+second_negitive*1000
now_negitive=fixed_negitive + third_negitive
#print (now_negitive)
price_negitive.append(now_negitive)
else:
price_negitive.append(price_index)
if change_symbol=='(+)':
line_to_read +=1
positive.append(Name_of_Company)
change_c.append(gain)
if price_index.find(',')>0:
first_positive=price_index[0]
second_positive=eval(first_positive)
third_positive=eval(price_index[2:])
for i in range(second_positive):
fixed_positive=+second_positive*1000
now_positive=fixed_positive + third_positive
#print (now_positive)
price_positive.append(now_positive)
else:
price_positive.append(price_index)
if change_symbol=='':
line_to_read +=1
nothing.append(Name_of_Company)
def company_stat():
global Positive_Cont,total,Negitive_Cont,Nothing_Cont
#"Reading Status completed"
" ********************************************************************************* "
" Number of Company involved for trading"
total=len(positive) + len(negitive) + len(nothing)
Positive_Cont=int(len(positive)/total*100)
Negitive_Cont=int(len(negitive)/total*100)
Nothing_Cont=int(len(nothing)/total*100)
print ("\nDaily Share Trading companies", total)
"**************************************************************************************"
def percent_positive():
global Max_v,Min_v,name_company,name_company_min
" To read Max and Min change in percerntage-wise (%)"
Max_v=max(change_c, key=float)
Min_v=min(change_c, key=float)
"To get Maximum % changes"
name_company=change_c.index(Max_v)
name_company_min=change_c.index(Min_v)
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
def price_gain_positive():
global Max_price,Min_price, name_company_price_max, name_company_price_min
" To read Max and Min change in price-wise"
try:
Max_price_positive=max(price_positive, key=float)
Min_price_positive=min(price_positive, key=float)
except:
print (" Version Upgration required")
try:
name_company_price_max=price_positive.index(Max_price_positive)
name_company_price_min=price_positive.index(Min_price_positive)
except:
print ("Version upgrading required")
def print_detail():
#Analys of Positive contributors status
print ("_______________________________________________________")
print ("\nNo's of Positive |contributors",len(positive), "as " ,Positive_Cont,"%" )
print (" \n\tMaximum Gain companies : ",positive[name_company], "at", Max_v,"%")
print ("\n\tMinimum Gain companies : ",positive[name_company_min],"at",Min_v,"%")
print ("\n\tMaximum Price change companies : ",positive[name_company_price_max],
"at Rs",Max_price ," &",change_c[name_company_price_max])
print ("_________________________________________________________")
print ("\nNo's of No|contributors",len(nothing), " as % " ,Nothing_Cont,"%")
print ("_________________________________________________________")
def price_loss_negitive():
# Get maximum loss company price change
Max_price_negitive=min(price_negitive, key=float)
Min_price_negitive=max(price_negitive, key=float)
# Get index from negitive comapny list
negitive_name_company_price_max_index=price_negitive.index(Max_price_negitive)
negitive_name_company_price_min_index=price_negitive.index(Min_price_negitive)
# Get name of the Max and Min loss company
negitive_name_company_price_max=negitive[negitive_name_company_price_max_index]
negitive_name_company_price_min=negitive[negitive_name_company_price_min_index]
print ("_________________________________________________________")
print ("\nNo's of Negitive |contributors",len(negitive), " as %",Negitive_Cont,"%")
print ("\n\t Maximum Price Loss Comapany is : ", negitive_name_company_price_max, " at" ,Max_negitive)
print ("\n\t Minimum Price Loss Company is : ",negitive_name_company_price_min, "at" ,Min_negitive)
def check(t):
while True:
cse_link()
csv_read()
company_stat()
price_loss_negitive()
percent_positive()
price_positive()
print_detail()
print (" \n \tNext check will be after :",t,"seconds\n\t")
time.sleep(t)
continue
check(120)
import csv
import time
# Get a file-like object for a site.
def cse_link():
try:
f = urllib.request.urlopen("http://www.cse.lk/listedcompanies/overview.htm?d-16544-e=1&6578706f7274=1")
# NOTE: At the interactive Python prompt, you may be prompted for a username
#http://www.cse.lk/listedcompanies/overview.htm?d-16544-e=1&6578706f7274=1
# NOTE: and password here.
# Read from the object, storing the page's contents in 's'.
# Read data decoded to utf-8
s = f.read().decode('utf-8')
# Save 's' data to log.csv file
logfile=open("log.csv",'w')
# log.csv file size
logfile.write(s)
size =logfile.tell()
if size==0:
print ("Nothing found to display"
"If the market status is CLOSED" )
logfile.close()
except:
print ("Network failed please re-check after few minuits")
def csv_read():
global positive,negitive,nothing,change_c,price_positive,price_negitive
" Open save file from above function"
filename = "log.csv"
reader = csv.reader(open(filename, "rt"))
line_to_read=0
# Comapny Status
positive=[]
negitive=[]
nothing=[]
#Value of gain
change_c=[]
# Price changes
price_positive=[]
price_negitive=[]
for r in reader:
" Read first value of the file "
Name_of_Company =r[0]
" Read coloum of Price change in Rs"
price_index=r[9]
" Read Coloum of price change in % "
gain=r[10]
"*********************************************************************************"
"Read contributor status (-),'',(+) "
change_symbol=r[11]
if change_symbol=='(-)':
line_to_read +=1
negitive.append(Name_of_Company)
if price_index.find(',')>0:
first_negitive=price_index[0]
second_negitive=eval(first_negitive)
third_negitive=eval(price_index[2:])
for i in range(second_negitive):
fixed_negitive=+second_negitive*1000
now_negitive=fixed_negitive + third_negitive
#print (now_negitive)
price_negitive.append(now_negitive)
else:
price_negitive.append(price_index)
if change_symbol=='(+)':
line_to_read +=1
positive.append(Name_of_Company)
change_c.append(gain)
if price_index.find(',')>0:
first_positive=price_index[0]
second_positive=eval(first_positive)
third_positive=eval(price_index[2:])
for i in range(second_positive):
fixed_positive=+second_positive*1000
now_positive=fixed_positive + third_positive
#print (now_positive)
price_positive.append(now_positive)
else:
price_positive.append(price_index)
if change_symbol=='':
line_to_read +=1
nothing.append(Name_of_Company)
def company_stat():
global Positive_Cont,total,Negitive_Cont,Nothing_Cont
#"Reading Status completed"
" ********************************************************************************* "
" Number of Company involved for trading"
total=len(positive) + len(negitive) + len(nothing)
Positive_Cont=int(len(positive)/total*100)
Negitive_Cont=int(len(negitive)/total*100)
Nothing_Cont=int(len(nothing)/total*100)
print ("\nDaily Share Trading companies", total)
"**************************************************************************************"
def percent_positive():
global Max_v,Min_v,name_company,name_company_min
" To read Max and Min change in percerntage-wise (%)"
Max_v=max(change_c, key=float)
Min_v=min(change_c, key=float)
"To get Maximum % changes"
name_company=change_c.index(Max_v)
name_company_min=change_c.index(Min_v)
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
def price_gain_positive():
global Max_price,Min_price, name_company_price_max, name_company_price_min
" To read Max and Min change in price-wise"
try:
Max_price_positive=max(price_positive, key=float)
Min_price_positive=min(price_positive, key=float)
except:
print (" Version Upgration required")
try:
name_company_price_max=price_positive.index(Max_price_positive)
name_company_price_min=price_positive.index(Min_price_positive)
except:
print ("Version upgrading required")
def print_detail():
#Analys of Positive contributors status
print ("_______________________________________________________")
print ("\nNo's of Positive |contributors",len(positive), "as " ,Positive_Cont,"%" )
print (" \n\tMaximum Gain companies : ",positive[name_company], "at", Max_v,"%")
print ("\n\tMinimum Gain companies : ",positive[name_company_min],"at",Min_v,"%")
print ("\n\tMaximum Price change companies : ",positive[name_company_price_max],
"at Rs",Max_price ," &",change_c[name_company_price_max])
print ("_________________________________________________________")
print ("\nNo's of No|contributors",len(nothing), " as % " ,Nothing_Cont,"%")
print ("_________________________________________________________")
def price_loss_negitive():
# Get maximum loss company price change
Max_price_negitive=min(price_negitive, key=float)
Min_price_negitive=max(price_negitive, key=float)
# Get index from negitive comapny list
negitive_name_company_price_max_index=price_negitive.index(Max_price_negitive)
negitive_name_company_price_min_index=price_negitive.index(Min_price_negitive)
# Get name of the Max and Min loss company
negitive_name_company_price_max=negitive[negitive_name_company_price_max_index]
negitive_name_company_price_min=negitive[negitive_name_company_price_min_index]
print ("_________________________________________________________")
print ("\nNo's of Negitive |contributors",len(negitive), " as %",Negitive_Cont,"%")
print ("\n\t Maximum Price Loss Comapany is : ", negitive_name_company_price_max, " at" ,Max_negitive)
print ("\n\t Minimum Price Loss Company is : ",negitive_name_company_price_min, "at" ,Min_negitive)
def check(t):
while True:
cse_link()
csv_read()
company_stat()
price_loss_negitive()
percent_positive()
price_positive()
print_detail()
print (" \n \tNext check will be after :",t,"seconds\n\t")
time.sleep(t)
continue
check(120)