Thursday, November 2, 2023

 using Microsoft.AspNetCore.Mvc;

using System.Xml.Linq;

using System.Xml.XPath;

//<table class="common-table medium js-table js-streamable-table">

namespace WebApplication1.Controllers

{

    [ApiController]

    [Route("[controller]")]

    public class WeatherForecastController : ControllerBase

    {

        private static readonly string[] Summaries = new[]

        {

        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"

    };


        private readonly ILogger<WeatherForecastController> _logger;


        public WeatherForecastController(ILogger<WeatherForecastController> logger)

        {

            _logger = logger;

        }


        [HttpGet(Name = "GetWeatherForecast")]

        public async Task<string>  Get()

        {

            try

            {

                //HttpClient client = new HttpClient();

                //var uri = new Uri("" , 

                //var x = await client.GetStringAsync()"https://in.investing.com/equities/trending-stocks/technical");

                //https://in.investing.com/stock-screener/?sp=country::14|sector::a|industry::a|equityType::a<eq_market_cap:1

                //https://in.investing.com/stock-screener/?sp=country::14|sector::a|industry::a|equityType::a%3Ceq_market_cap;1

                //var url = "https://in.investing.com/equities/trending-stocks/technical";

                //var url = "https://in.investing.com/stock-screener/?" + Uri.EscapeDataString("sp=country::14|sector::a|industry::a|equityType::a<eq_market_cap:1");

                var url = "https://in.investing.com/equities/trending-stocks/technical";

                using var client = new HttpClient();


                var msg = new HttpRequestMessage(HttpMethod.Get, url);

                msg.Headers.Add("User-Agent", "Mozilla/5.0");

                var res = await client.SendAsync(msg);

                var content = await res.Content.ReadAsStringAsync();

                //XPathDocument xPath = new XPathDocument(content);

                //var nav = xPath.CreateNavigator();

                //var iter = nav.Select("/");


                //StreamReader textReader = new StreamReader(content);

                //XDocument doc = XDocument.Parse(content);

                //XElement xElement = XElement.Parse(content);

                int StartIndex = content.IndexOf("<table class=\"common-table medium js-table js-streamable-table\">");

                int EndIndex = content.IndexOf("</table>", StartIndex);

                string usefulContent = content.Substring(StartIndex, EndIndex+ 8  - StartIndex);

                //XDocument doc = XDocument.Parse(usefulContent);

                //XElement xElement = XElement.Parse(usefulContent);

                var lst = ParseString(usefulContent);

                Console.WriteLine(content);

            }

            catch ( Exception ex)

            {


            }


            return "test";

        }


        private  List<string> ParseString(string inpString)

        {

            string StartPattern = "<tr class=\"common-table-item u-clickable \"";

            string EndPattern = "</tr>";

            

            var lst = ExtractHtmlTags(inpString, StartPattern, EndPattern);

            var titleList = new List<String>();

            var hourList = new List<String>();

            var dayList = new List<String>();

            var weekList = new List<String>();

            var monthList = new List<String>();

            var companyList = new List<Company>();


            foreach (var item in lst)

            {

                Company company = new Company();

                company.Title = ExtractHtmlTags(ExtractHtmlTags(item, "<a", "</a>")[0], ">", "</", true)[0];

                company.Hourly = ExtractHtmlTags(ExtractHtmlTags(item, "<td class=\"col-technical_hour", "</td>")[0], "<span class=\"text\">", "</span>", true)[0];

                company.Daily = ExtractHtmlTags(ExtractHtmlTags(item, "<td class=\"col-technical_day", "</td>")[0], "<span class=\"text\">", "</span>", true)[0];

                company.Weekly = ExtractHtmlTags(ExtractHtmlTags(item, "<td class=\"col-technical_week", "</td>")[0], "<span class=\"text\">", "</span>", true)[0];

                company.Monthly = ExtractHtmlTags(ExtractHtmlTags(item, "<td class=\"col-technical_month", "</td>")[0], "<span class=\"text\">", "</span>", true)[0];

                companyList.Add(company);


                titleList.Add(ExtractHtmlTags(ExtractHtmlTags(item, "<a", "</a>")[0] , ">" , "</", true)[0]);

                hourList.Add(ExtractHtmlTags(ExtractHtmlTags(item, "<td class=\"col-technical_hour", "</td>")[0] , "<span class=\"text\">" , "</span>", true)[0]);

                dayList.Add(ExtractHtmlTags(ExtractHtmlTags(item, "<td class=\"col-technical_day", "</td>")[0], "<span class=\"text\">", "</span>", true)[0]);

                weekList.Add(ExtractHtmlTags(ExtractHtmlTags(item, "<td class=\"col-technical_week", "</td>")[0], "<span class=\"text\">", "</span>", true)[0]);

                monthList.Add(ExtractHtmlTags(ExtractHtmlTags(item, "<td class=\"col-technical_month", "</td>")[0], "<span class=\"text\">", "</span>", true)[0]);

            }

            return lst;

        }


        private List<string> ExtractHtmlTags(string inpString , string StartPattern, string EndPattern, bool excludePatterns = false)

        {

            List<string> lst = new List<string>();

            int StartIndex = 0; int EndIndex = 0;


            StartIndex = inpString.IndexOf(StartPattern);

            EndIndex = inpString.IndexOf(EndPattern, StartIndex + 1);

            while (StartIndex > 0 && EndIndex > 0)

            {

                int substringStartIndex = StartIndex;

                int substringEndIndex = EndIndex - StartIndex + EndPattern.Length;

                if ( excludePatterns)

                {

                    substringStartIndex = StartIndex + StartPattern.Length;

                    substringEndIndex = EndIndex - substringStartIndex;

                }

                string trString = inpString.Substring(substringStartIndex, substringEndIndex);

                lst.Add(trString);

                if (EndIndex + EndPattern.Length + 1 >= inpString.Length) break;

                StartIndex = inpString.IndexOf(StartPattern, EndIndex);

                EndIndex = inpString.IndexOf(EndPattern, StartIndex + 1);

            }

            return lst;

        }

    }


    public class Company

    {

        public string? Title {  get; set; }

        public string? Hourly { get; set; }

        public string? Daily { get; set; }

        public string? Weekly { get; set; }

        public string? Monthly { get; set; }


    }

}

Wednesday, August 30, 2023

Non Technical- MF SIP Advice

small cap 


Nippon India small cap direct growth 

SBI small cap  500

kotak small cap 1000

hdfc small cap  500

quant small cap 1000

icici small cap  500


4000


balanced funds 

*hdfc balanced advantage 1500

icici pru balanced advantage 500

nippon 500

kotak 500


3000



FoF

Kotak multi assest allocator FoF dynamic 2500

icici pru asset allocator 1000


3500


ICICI


icici pru value discovery fund  500

icici pru equity and debt fund  500

icici pru multi asset fund      500

icici pru blue chip fund        500

2000


bank nifty   (could not be done)

hdfc bank nifty       500

kotak nifty bank etf  500


1000

Saturday, July 8, 2023

Difference between axios and fetch - a detailed article

 https://codilime.com/blog/axios-vs-fetch/#:~:text=Different%20properties%20are%20used%20for,API%20using%20the%20POST%20method.


35 mins read! here

Saturday, June 24, 2023

CSS border shadow for input box taken from https://stackoverflow.com/questions/14820952/change-bootstrap-input-focus-blue-glow

<!DOCTYPE html>
<html>
<head>
<style> 
input[type=text] {
  width: 100%;
  padding: 12px 20px;
  margin: 8px 0;
  box-sizing: border-box;
  border: 1px solid #555;
  outline: none;
  border-radius: 5px;
}

input[type=text]:focus {
  border-color: #28a745;
  box-shadow: 0 0 0 0.1rem rgba(40, 167, 69, 0.25);
}
</style>
</head>
<body>

<h2>Input fields with color on :focus</h2>

<p>Here, the input field gets a color when it gets focus (clicked on):</p>

<form>
  <label for="fname">First Name</label>
  <input type="text" id="fname" name="fname" value="John">
  <label for="lname">Last Name</label>
  <input type="text" id="lname" name="lname" value="Doe">
</form>

</body>
</html>


Monday, January 16, 2023

WORKING Promise and Then for Angular APP_INITIALIZER

 //const appInitializerFn = (infoService: InfoService) => {

//  return () => {

//    return infoService.loadInfo().then( (promise) => {alert("tete"); return promise } ).then(_ => Promise.resolve(true)).then(_ => alert("tetete"));

//  };

//};




//WORKING APPINITIALIZER FUNCTION

const appInitializerFn = (infoService: InfoService,  httpClient : HttpClient) => { 


return () => {

    //return infoService.loadInfo()

return Promise.resolve(true)

.then( (promise) => {alert("tete"); return promise } )

.then(_ => infoService.setConfig(new AppInfo("aaaa")))

.then(_ => alert("tetete"));

  };


}






INFO SERVICE
import { Injectable } from '@angular/core';
import { HttpBackend, HttpClient } from '@angular/common/http';
import { AppInfo } from './app-info';

@Injectable()
export class InfoService {

  info: any;

  constructor(private httpBackend: HttpBackend) {}

  loadInfo(): Promise<boolean> {
    // bypass HTTP interceptors by using HttpBackend
    const http = new HttpClient(this.httpBackend);

    return (
      http
        .get<AppInfo>('/assets/info')
        // convert to Promise per Angular's `useFactory` requirement (not officially documented)
        .toPromise()
        .then(response => {
          // using a class factory to keep AppInfo class getters in place
alert("1");
          this.info = response;
        })
        // returning `true` to satisfy `useFactory` contract (not officially documented)
        .then(_ => {  return Promise.resolve(true); } )
        .catch(error => {
          console.error('Error loading info', error);
          return Promise.resolve(false);
        })
    );
  }

setConfig(inInfo : any)
{
alert("hi"); console.log("fri service");console.log(inInfo);
this.info =  inInfo;
console.log(this.info);
}

}

APP-INFO.TS
export class AppInfo {
  clientId: string;
  constructor(cli: string) 
{
this.clientId = cli;
}
}

How to check local and global angular versions

 Use the command ng version (or ng v ) to find the version of Angular CLI in the current folder. Run it outside of the Angular project, to f...