Coder Social home page Coder Social logo

Comments (7)

0xrushi avatar 0xrushi commented on May 31, 2024 3

Coded as below - little messy - please improve it.

import websocket
import time
import threading
import json

SOCKET = "wss://data.tradingview.com/socket.io/websocket"

headers = {
    "Accept-Encoding": "gzip, deflate, br",
    # "Accept-Language": "en-US,en;q=0.9",
    # "Cache-Control": "no-cache",
    # "Connection": "Upgrade",
    "Host": "data.tradingview.com",
    "Origin": "https://www.tradingview.com",
    # "Pragma": "no-cache",
    # "Sec-WebSocket-Extensions": "permessage-deflate; client_max_window_bits",
    # "Sec-WebSocket-Key": "Qf9IDRKqcgNBrNs7X4FK9w==",
    # "Sec-WebSocket-Version": 13,
    # "Upgrade": "websocket",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
}

"""
~m~55~m~{"m":"chart_create_session","p":["cs_zEcm9GqyQdK0",""]}
'~m~52~m~{"m":"quote_create_session","p":["qs_dl0OygXkO4uu"]}'
~m~98~m~{"m":"quote_add_symbols","p":["qs_dl0OygXkO4uu","BINANCE:BTCUSDT",{"flags":["force_permission"]}]}
~m~68~m~{"m":"quote_fast_symbols","p":["qs_dl0OygXkO4uu","BINANCE:BTCUSDT"]}
~m~6~m~~h~157
~m~411~m~{"m":"quote_fast_symbols","p":["qs_x72fChUYomPp","MCX:GOLDGUINEAN2020","NSE:NIFTY","MCX:GOLDPETALN2020","NSE:BAJFINANCE","MCX:SILVERMQ2020","NSE:SBIN","NSE:BANKNIFTY","NSE:RBLBANK","NSE:INDIAVIX","NSE:INDUSINDBK","NSE:CIPLA","NSE:SUNTV","MCX:NATURALGAS1!","MCX:SILVERMIC1!","MCX:CRUDEOIL1!","MCX:GOLDM1!","NSE:BANKNIFTY1!","SGX:IN1!","OANDA:USDINR","NSE:DABUR","NSE:BERGEPAINT","NASDAQ:TSLA","BINANCE:BTCUSDT"]}
~m~68~m~{"m":"quote_fast_symbols","p":["qs_dl0OygXkO4uu","BINANCE:BTCUSDT"]}
~m~98~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","BINANCE:BTCUSDT",{"flags":["force_permission"]}]}

"""



def on_open(ws):
    print('opened connection')
    # def run(*args):
    #     for i in range(30):
    #         time.sleep(1)
    #         ws.send("Hello %d" % i)
    #     time.sleep(1)
    #     ws.close()
    #     print("thread terminating...")
    # threading.start_new_thread(run, ())
    time.sleep(2)
    # ws.send('~m~524~m~{"m":"set_auth_token","p":["eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJ1c2VyX2lkIjo5OTIxMjA1LCJleHAiOjE2MDM2NzgyMDcsImlhdCI6MTYwMzY2MzgwNywicGxhbiI6IiIsImV4dF9ob3VycyI6MSwicGVybSI6IiIsInN0dWR5X3Blcm0iOiJQVUI7eXNueXc5aUVOY0dTeEhJQk9pNGJUUDFIczJreVg2Y1EsUFVCO0ZQRlJnWU5FOTZiZEI3MXBBZ1RSUGdIa3dLWGswZnJXIiwibWF4X3N0dWRpZXMiOjMsIm1heF9mdW5kYW1lbnRhbHMiOjB9.LTCdVfkkquhStte9UU_xWiVJE-ZBIoShUrPQP6vywh1ep3S894qEpk3h509utD5vmz8vgAzcJRZKy3eKPMY-bh81gg76WRjwdjJ2RM2YnoQ7tAhKF0wK78-JFg_3BfcTmude1ypJu_7I5NJgeF8RqM78ymJ6OTiKzgu84ZrMRr4"]}')
    ws.send('~m~54~m~{"m":"set_auth_token","p":["unauthorized_user_token"]}')
    ws.send('~m~55~m~{"m":"chart_create_session","p":["cs_zEcm9GqyQdK0",""]}')
    ws.send('~m~52~m~{"m":"quote_create_session","p":["qs_x72fChUYomPp"]}')
    ws.send('~m~344~m~{"m":"quote_set_fields","p":["qs_x72fChUYomPp","ch","chp","current_session","description","local_description","language","exchange","fractional","is_tradable","lp","lp_time","minmov","minmove2","original_name","pricescale","pro_name","short_name","type","update_mode","volume","currency_code","logoid","currency-logoid","base-currency-logoid"]}')

    ws.send('~m~98~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","BINANCE:BTCUSDT",{"flags":["force_permission"]}]}')
    ws.send('~m~98~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","BINANCE:BNBUSDT",{"flags":["force_permission"]}]}')
    ws.send('~m~91~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","NSE:SBIN",{"flags":["force_permission"]}]}')
    ws.send('~m~98~m~{"m":"quote_fast_symbols","p":["qs_x72fChUYomPp","BINANCE:BTCUSDT","BINANCE:BNBUSDT", "NSE:SBIN"]}')


def on_close(ws):
    print('closed connection')


def on_message(ws, message):
    # p = message.split('~', -1)[4]
    # data = json.loads(p)
    # print(data)
    # print(f'received message :: {message}')
    if 'lp' in message:
        p = message.split('~', -1)[4]
        data = json.loads(p)
        # print(data)
        timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
        symbol = data['p'][1]['n']
        ltp = data['p'][1]['v']['lp']
        volume = data['p'][1]['v']['volume']
        if symbol.upper() == "NSE:SBIN":
            print(f'tick :: {timestamp} :: {symbol} :: {ltp} :: {volume}')


# ws = websocket.WebSocketApp(SOCKET, on_open=on_open, on_data=on_data,
#                             on_close=on_close, on_message=on_message, header=headers)
# ws.run_forever()


if __name__ == "__main__":
    websocket.enableTrace(False)
    ws = websocket.WebSocketApp(
        SOCKET, on_message=on_message, on_open=on_open, on_close=on_close)
    wst = threading.Thread(target=ws.run_forever)
    wst.daemon = True
    wst.start()

    conn_timeout = 60
    while not ws.sock.connected and conn_timeout:
        time.sleep(1)
        conn_timeout -= 1

    while ws.sock is not None:
        time.sleep(10)

Output as below:

opened connection
tick :: 2020-10-26 15:16:44 :: NSE:SBIN :: 196.65 :: 43263601
tick :: 2020-10-26 15:16:47 :: NSE:SBIN :: 196.55 :: 43281572
tick :: 2020-10-26 15:16:48 :: NSE:SBIN :: 196.5 :: 43284530
tick :: 2020-10-26 15:16:49 :: NSE:SBIN :: 196.65 :: 43284705
tick :: 2020-10-26 15:16:50 :: NSE:SBIN :: 196.55 :: 43289608
tick :: 2020-10-26 15:16:53 :: NSE:SBIN :: 196.65 :: 43302304
tick :: 2020-10-26 15:16:58 :: NSE:SBIN :: 196.6 :: 43306025
tick :: 2020-10-26 15:16:59 :: NSE:SBIN :: 196.55 :: 43310465
tick :: 2020-10-26 15:17:00 :: NSE:SBIN :: 196.65 :: 43313272
tick :: 2020-10-26 15:17:04 :: NSE:SBIN :: 196.6 :: 43324023
tick :: 2020-10-26 15:17:05 :: NSE:SBIN :: 196.7 :: 43327660
tick :: 2020-10-26 15:17:06 :: NSE:SBIN :: 196.65 :: 43327834
tick :: 2020-10-26 15:17:07 :: NSE:SBIN :: 196.6 :: 43329298
tick :: 2020-10-26 15:17:09 :: NSE:SBIN :: 196.65 :: 43329746
tick :: 2020-10-26 15:17:10 :: NSE:SBIN :: 196.6 :: 43332710
tick :: 2020-10-26 15:17:12 :: NSE:SBIN :: 196.65 :: 43334585
tick :: 2020-10-26 15:17:15 :: NSE:SBIN :: 196.55 :: 43336631
tick :: 2020-10-26 15:17:16 :: NSE:SBIN :: 196.6 :: 43337236
tick :: 2020-10-26 15:17:18 :: NSE:SBIN :: 196.7 :: 43352825
tick :: 2020-10-26 15:17:20 :: NSE:SBIN :: 196.55 :: 43359141
tick :: 2020-10-26 15:17:22 :: NSE:SBIN :: 196.65 :: 43362175
tick :: 2020-10-26 15:17:23 :: NSE:SBIN :: 196.55 :: 43364062
tick :: 2020-10-26 15:17:25 :: NSE:SBIN :: 196.6 :: 43364601
tick :: 2020-10-26 15:17:27 :: NSE:SBIN :: 196.55 :: 43371410
tick :: 2020-10-26 15:17:28 :: NSE:SBIN :: 196.7 :: 43384268
tick :: 2020-10-26 15:17:30 :: NSE:SBIN :: 196.6 :: 43385580
tick :: 2020-10-26 15:17:32 :: NSE:SBIN :: 196.7 :: 43388415
tick :: 2020-10-26 15:17:33 :: NSE:SBIN :: 196.6 :: 43390152
tick :: 2020-10-26 15:17:35 :: NSE:SBIN :: 196.65 :: 43392443
tick :: 2020-10-26 15:17:36 :: NSE:SBIN :: 196.7 :: 43392859
tick :: 2020-10-26 15:17:37 :: NSE:SBIN :: 196.65 :: 43395097
tick :: 2020-10-26 15:17:39 :: NSE:SBIN :: 196.6 :: 43395708
tick :: 2020-10-26 15:17:40 :: NSE:SBIN :: 196.65 :: 43395846
tick :: 2020-10-26 15:17:43 :: NSE:SBIN :: 196.5 :: 43419135
tick :: 2020-10-26 15:17:46 :: NSE:SBIN :: 196.65 :: 43424576
tick :: 2020-10-26 15:17:47 :: NSE:SBIN :: 196.6 :: 43426038
tick :: 2020-10-26 15:17:52 :: NSE:SBIN :: 196.5 :: 43436492
tick :: 2020-10-26 15:17:53 :: NSE:SBIN :: 196.6 :: 43437217
tick :: 2020-10-26 15:17:55 :: NSE:SBIN :: 196.5 :: 43439284
tick :: 2020-10-26 15:17:56 :: NSE:SBIN :: 196.6 :: 43442305
tick :: 2020-10-26 15:17:57 :: NSE:SBIN :: 196.65 :: 43444488
tick :: 2020-10-26 15:17:58 :: NSE:SBIN :: 196.5 :: 43454282
tick :: 2020-10-26 15:17:59 :: NSE:SBIN :: 196.65 :: 43458267
tick :: 2020-10-26 15:18:01 :: NSE:SBIN :: 196.5 :: 43461217
closed connection

I did add this https://github.com/rushic24/tradingview-scraper/blob/master/livestreamtest.py but the data is getting repeated sometimes, not sure why.

from tradingview-scraper.

rahulmr avatar rahulmr commented on May 31, 2024

Coded as below - little messy - please improve it.

import websocket
import time
import threading
import json

SOCKET = "wss://data.tradingview.com/socket.io/websocket"

headers = {
    "Accept-Encoding": "gzip, deflate, br",
    # "Accept-Language": "en-US,en;q=0.9",
    # "Cache-Control": "no-cache",
    # "Connection": "Upgrade",
    "Host": "data.tradingview.com",
    "Origin": "https://www.tradingview.com",
    # "Pragma": "no-cache",
    # "Sec-WebSocket-Extensions": "permessage-deflate; client_max_window_bits",
    # "Sec-WebSocket-Key": "Qf9IDRKqcgNBrNs7X4FK9w==",
    # "Sec-WebSocket-Version": 13,
    # "Upgrade": "websocket",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
}

"""
~m~55~m~{"m":"chart_create_session","p":["cs_zEcm9GqyQdK0",""]}
'~m~52~m~{"m":"quote_create_session","p":["qs_dl0OygXkO4uu"]}'
~m~98~m~{"m":"quote_add_symbols","p":["qs_dl0OygXkO4uu","BINANCE:BTCUSDT",{"flags":["force_permission"]}]}
~m~68~m~{"m":"quote_fast_symbols","p":["qs_dl0OygXkO4uu","BINANCE:BTCUSDT"]}
~m~6~m~~h~157
~m~411~m~{"m":"quote_fast_symbols","p":["qs_x72fChUYomPp","MCX:GOLDGUINEAN2020","NSE:NIFTY","MCX:GOLDPETALN2020","NSE:BAJFINANCE","MCX:SILVERMQ2020","NSE:SBIN","NSE:BANKNIFTY","NSE:RBLBANK","NSE:INDIAVIX","NSE:INDUSINDBK","NSE:CIPLA","NSE:SUNTV","MCX:NATURALGAS1!","MCX:SILVERMIC1!","MCX:CRUDEOIL1!","MCX:GOLDM1!","NSE:BANKNIFTY1!","SGX:IN1!","OANDA:USDINR","NSE:DABUR","NSE:BERGEPAINT","NASDAQ:TSLA","BINANCE:BTCUSDT"]}
~m~68~m~{"m":"quote_fast_symbols","p":["qs_dl0OygXkO4uu","BINANCE:BTCUSDT"]}
~m~98~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","BINANCE:BTCUSDT",{"flags":["force_permission"]}]}

"""



def on_open(ws):
    print('opened connection')
    # def run(*args):
    #     for i in range(30):
    #         time.sleep(1)
    #         ws.send("Hello %d" % i)
    #     time.sleep(1)
    #     ws.close()
    #     print("thread terminating...")
    # threading.start_new_thread(run, ())
    time.sleep(2)
    # ws.send('~m~524~m~{"m":"set_auth_token","p":["eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJ1c2VyX2lkIjo5OTIxMjA1LCJleHAiOjE2MDM2NzgyMDcsImlhdCI6MTYwMzY2MzgwNywicGxhbiI6IiIsImV4dF9ob3VycyI6MSwicGVybSI6IiIsInN0dWR5X3Blcm0iOiJQVUI7eXNueXc5aUVOY0dTeEhJQk9pNGJUUDFIczJreVg2Y1EsUFVCO0ZQRlJnWU5FOTZiZEI3MXBBZ1RSUGdIa3dLWGswZnJXIiwibWF4X3N0dWRpZXMiOjMsIm1heF9mdW5kYW1lbnRhbHMiOjB9.LTCdVfkkquhStte9UU_xWiVJE-ZBIoShUrPQP6vywh1ep3S894qEpk3h509utD5vmz8vgAzcJRZKy3eKPMY-bh81gg76WRjwdjJ2RM2YnoQ7tAhKF0wK78-JFg_3BfcTmude1ypJu_7I5NJgeF8RqM78ymJ6OTiKzgu84ZrMRr4"]}')
    ws.send('~m~54~m~{"m":"set_auth_token","p":["unauthorized_user_token"]}')
    ws.send('~m~55~m~{"m":"chart_create_session","p":["cs_zEcm9GqyQdK0",""]}')
    ws.send('~m~52~m~{"m":"quote_create_session","p":["qs_x72fChUYomPp"]}')
    ws.send('~m~344~m~{"m":"quote_set_fields","p":["qs_x72fChUYomPp","ch","chp","current_session","description","local_description","language","exchange","fractional","is_tradable","lp","lp_time","minmov","minmove2","original_name","pricescale","pro_name","short_name","type","update_mode","volume","currency_code","logoid","currency-logoid","base-currency-logoid"]}')

    ws.send('~m~98~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","BINANCE:BTCUSDT",{"flags":["force_permission"]}]}')
    ws.send('~m~98~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","BINANCE:BNBUSDT",{"flags":["force_permission"]}]}')
    ws.send('~m~91~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","NSE:SBIN",{"flags":["force_permission"]}]}')
    ws.send('~m~98~m~{"m":"quote_fast_symbols","p":["qs_x72fChUYomPp","BINANCE:BTCUSDT","BINANCE:BNBUSDT", "NSE:SBIN"]}')


def on_close(ws):
    print('closed connection')


def on_message(ws, message):
    # p = message.split('~', -1)[4]
    # data = json.loads(p)
    # print(data)
    # print(f'received message :: {message}')
    if 'lp' in message:
        p = message.split('~', -1)[4]
        data = json.loads(p)
        # print(data)
        timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
        symbol = data['p'][1]['n']
        ltp = data['p'][1]['v']['lp']
        volume = data['p'][1]['v']['volume']
        if symbol.upper() == "NSE:SBIN":
            print(f'tick :: {timestamp} :: {symbol} :: {ltp} :: {volume}')


# ws = websocket.WebSocketApp(SOCKET, on_open=on_open, on_data=on_data,
#                             on_close=on_close, on_message=on_message, header=headers)
# ws.run_forever()


if __name__ == "__main__":
    websocket.enableTrace(False)
    ws = websocket.WebSocketApp(
        SOCKET, on_message=on_message, on_open=on_open, on_close=on_close)
    wst = threading.Thread(target=ws.run_forever)
    wst.daemon = True
    wst.start()

    conn_timeout = 60
    while not ws.sock.connected and conn_timeout:
        time.sleep(1)
        conn_timeout -= 1

    while ws.sock is not None:
        time.sleep(10)

Output as below:

opened connection
tick :: 2020-10-26 15:16:44 :: NSE:SBIN :: 196.65 :: 43263601
tick :: 2020-10-26 15:16:47 :: NSE:SBIN :: 196.55 :: 43281572
tick :: 2020-10-26 15:16:48 :: NSE:SBIN :: 196.5 :: 43284530
tick :: 2020-10-26 15:16:49 :: NSE:SBIN :: 196.65 :: 43284705
tick :: 2020-10-26 15:16:50 :: NSE:SBIN :: 196.55 :: 43289608
tick :: 2020-10-26 15:16:53 :: NSE:SBIN :: 196.65 :: 43302304
tick :: 2020-10-26 15:16:58 :: NSE:SBIN :: 196.6 :: 43306025
tick :: 2020-10-26 15:16:59 :: NSE:SBIN :: 196.55 :: 43310465
tick :: 2020-10-26 15:17:00 :: NSE:SBIN :: 196.65 :: 43313272
tick :: 2020-10-26 15:17:04 :: NSE:SBIN :: 196.6 :: 43324023
tick :: 2020-10-26 15:17:05 :: NSE:SBIN :: 196.7 :: 43327660
tick :: 2020-10-26 15:17:06 :: NSE:SBIN :: 196.65 :: 43327834
tick :: 2020-10-26 15:17:07 :: NSE:SBIN :: 196.6 :: 43329298
tick :: 2020-10-26 15:17:09 :: NSE:SBIN :: 196.65 :: 43329746
tick :: 2020-10-26 15:17:10 :: NSE:SBIN :: 196.6 :: 43332710
tick :: 2020-10-26 15:17:12 :: NSE:SBIN :: 196.65 :: 43334585
tick :: 2020-10-26 15:17:15 :: NSE:SBIN :: 196.55 :: 43336631
tick :: 2020-10-26 15:17:16 :: NSE:SBIN :: 196.6 :: 43337236
tick :: 2020-10-26 15:17:18 :: NSE:SBIN :: 196.7 :: 43352825
tick :: 2020-10-26 15:17:20 :: NSE:SBIN :: 196.55 :: 43359141
tick :: 2020-10-26 15:17:22 :: NSE:SBIN :: 196.65 :: 43362175
tick :: 2020-10-26 15:17:23 :: NSE:SBIN :: 196.55 :: 43364062
tick :: 2020-10-26 15:17:25 :: NSE:SBIN :: 196.6 :: 43364601
tick :: 2020-10-26 15:17:27 :: NSE:SBIN :: 196.55 :: 43371410
tick :: 2020-10-26 15:17:28 :: NSE:SBIN :: 196.7 :: 43384268
tick :: 2020-10-26 15:17:30 :: NSE:SBIN :: 196.6 :: 43385580
tick :: 2020-10-26 15:17:32 :: NSE:SBIN :: 196.7 :: 43388415
tick :: 2020-10-26 15:17:33 :: NSE:SBIN :: 196.6 :: 43390152
tick :: 2020-10-26 15:17:35 :: NSE:SBIN :: 196.65 :: 43392443
tick :: 2020-10-26 15:17:36 :: NSE:SBIN :: 196.7 :: 43392859
tick :: 2020-10-26 15:17:37 :: NSE:SBIN :: 196.65 :: 43395097
tick :: 2020-10-26 15:17:39 :: NSE:SBIN :: 196.6 :: 43395708
tick :: 2020-10-26 15:17:40 :: NSE:SBIN :: 196.65 :: 43395846
tick :: 2020-10-26 15:17:43 :: NSE:SBIN :: 196.5 :: 43419135
tick :: 2020-10-26 15:17:46 :: NSE:SBIN :: 196.65 :: 43424576
tick :: 2020-10-26 15:17:47 :: NSE:SBIN :: 196.6 :: 43426038
tick :: 2020-10-26 15:17:52 :: NSE:SBIN :: 196.5 :: 43436492
tick :: 2020-10-26 15:17:53 :: NSE:SBIN :: 196.6 :: 43437217
tick :: 2020-10-26 15:17:55 :: NSE:SBIN :: 196.5 :: 43439284
tick :: 2020-10-26 15:17:56 :: NSE:SBIN :: 196.6 :: 43442305
tick :: 2020-10-26 15:17:57 :: NSE:SBIN :: 196.65 :: 43444488
tick :: 2020-10-26 15:17:58 :: NSE:SBIN :: 196.5 :: 43454282
tick :: 2020-10-26 15:17:59 :: NSE:SBIN :: 196.65 :: 43458267
tick :: 2020-10-26 15:18:01 :: NSE:SBIN :: 196.5 :: 43461217
closed connection

from tradingview-scraper.

sammathew000 avatar sammathew000 commented on May 31, 2024

Is this script, stills works?
Am getting this error

raise WebSocketBadStatusException("Handshake status %d", status) websocket._exceptions.WebSocketBadStatusException: Handshake status 403

from tradingview-scraper.

sammathew000 avatar sammathew000 commented on May 31, 2024

closed connection Traceback (most recent call last): File "C:\test.py", line 95, in <module> while not ws.sock.connected and conn_timeout: AttributeError: 'NoneType' object has no attribute 'connected'

from tradingview-scraper.

rahulmr avatar rahulmr commented on May 31, 2024

Coded as below - little messy - please improve it.

import websocket
import time
import threading
import json

SOCKET = "wss://data.tradingview.com/socket.io/websocket"

headers = {
    "Accept-Encoding": "gzip, deflate, br",
    # "Accept-Language": "en-US,en;q=0.9",
    # "Cache-Control": "no-cache",
    # "Connection": "Upgrade",
    "Host": "data.tradingview.com",
    "Origin": "https://www.tradingview.com",
    # "Pragma": "no-cache",
    # "Sec-WebSocket-Extensions": "permessage-deflate; client_max_window_bits",
    # "Sec-WebSocket-Key": "Qf9IDRKqcgNBrNs7X4FK9w==",
    # "Sec-WebSocket-Version": 13,
    # "Upgrade": "websocket",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
}

"""
~m~55~m~{"m":"chart_create_session","p":["cs_zEcm9GqyQdK0",""]}
'~m~52~m~{"m":"quote_create_session","p":["qs_dl0OygXkO4uu"]}'
~m~98~m~{"m":"quote_add_symbols","p":["qs_dl0OygXkO4uu","BINANCE:BTCUSDT",{"flags":["force_permission"]}]}
~m~68~m~{"m":"quote_fast_symbols","p":["qs_dl0OygXkO4uu","BINANCE:BTCUSDT"]}
~m~6~m~~h~157
~m~411~m~{"m":"quote_fast_symbols","p":["qs_x72fChUYomPp","MCX:GOLDGUINEAN2020","NSE:NIFTY","MCX:GOLDPETALN2020","NSE:BAJFINANCE","MCX:SILVERMQ2020","NSE:SBIN","NSE:BANKNIFTY","NSE:RBLBANK","NSE:INDIAVIX","NSE:INDUSINDBK","NSE:CIPLA","NSE:SUNTV","MCX:NATURALGAS1!","MCX:SILVERMIC1!","MCX:CRUDEOIL1!","MCX:GOLDM1!","NSE:BANKNIFTY1!","SGX:IN1!","OANDA:USDINR","NSE:DABUR","NSE:BERGEPAINT","NASDAQ:TSLA","BINANCE:BTCUSDT"]}
~m~68~m~{"m":"quote_fast_symbols","p":["qs_dl0OygXkO4uu","BINANCE:BTCUSDT"]}
~m~98~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","BINANCE:BTCUSDT",{"flags":["force_permission"]}]}

"""



def on_open(ws):
    print('opened connection')
    # def run(*args):
    #     for i in range(30):
    #         time.sleep(1)
    #         ws.send("Hello %d" % i)
    #     time.sleep(1)
    #     ws.close()
    #     print("thread terminating...")
    # threading.start_new_thread(run, ())
    time.sleep(2)
    # ws.send('~m~524~m~{"m":"set_auth_token","p":["eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJ1c2VyX2lkIjo5OTIxMjA1LCJleHAiOjE2MDM2NzgyMDcsImlhdCI6MTYwMzY2MzgwNywicGxhbiI6IiIsImV4dF9ob3VycyI6MSwicGVybSI6IiIsInN0dWR5X3Blcm0iOiJQVUI7eXNueXc5aUVOY0dTeEhJQk9pNGJUUDFIczJreVg2Y1EsUFVCO0ZQRlJnWU5FOTZiZEI3MXBBZ1RSUGdIa3dLWGswZnJXIiwibWF4X3N0dWRpZXMiOjMsIm1heF9mdW5kYW1lbnRhbHMiOjB9.LTCdVfkkquhStte9UU_xWiVJE-ZBIoShUrPQP6vywh1ep3S894qEpk3h509utD5vmz8vgAzcJRZKy3eKPMY-bh81gg76WRjwdjJ2RM2YnoQ7tAhKF0wK78-JFg_3BfcTmude1ypJu_7I5NJgeF8RqM78ymJ6OTiKzgu84ZrMRr4"]}')
    ws.send('~m~54~m~{"m":"set_auth_token","p":["unauthorized_user_token"]}')
    ws.send('~m~55~m~{"m":"chart_create_session","p":["cs_zEcm9GqyQdK0",""]}')
    ws.send('~m~52~m~{"m":"quote_create_session","p":["qs_x72fChUYomPp"]}')
    ws.send('~m~344~m~{"m":"quote_set_fields","p":["qs_x72fChUYomPp","ch","chp","current_session","description","local_description","language","exchange","fractional","is_tradable","lp","lp_time","minmov","minmove2","original_name","pricescale","pro_name","short_name","type","update_mode","volume","currency_code","logoid","currency-logoid","base-currency-logoid"]}')

    ws.send('~m~98~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","BINANCE:BTCUSDT",{"flags":["force_permission"]}]}')
    ws.send('~m~98~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","BINANCE:BNBUSDT",{"flags":["force_permission"]}]}')
    ws.send('~m~91~m~{"m":"quote_add_symbols","p":["qs_x72fChUYomPp","NSE:SBIN",{"flags":["force_permission"]}]}')
    ws.send('~m~98~m~{"m":"quote_fast_symbols","p":["qs_x72fChUYomPp","BINANCE:BTCUSDT","BINANCE:BNBUSDT", "NSE:SBIN"]}')


def on_close(ws):
    print('closed connection')


def on_message(ws, message):
    # p = message.split('~', -1)[4]
    # data = json.loads(p)
    # print(data)
    # print(f'received message :: {message}')
    if 'lp' in message:
        p = message.split('~', -1)[4]
        data = json.loads(p)
        # print(data)
        timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
        symbol = data['p'][1]['n']
        ltp = data['p'][1]['v']['lp']
        volume = data['p'][1]['v']['volume']
        if symbol.upper() == "NSE:SBIN":
            print(f'tick :: {timestamp} :: {symbol} :: {ltp} :: {volume}')


# ws = websocket.WebSocketApp(SOCKET, on_open=on_open, on_data=on_data,
#                             on_close=on_close, on_message=on_message, header=headers)
# ws.run_forever()


if __name__ == "__main__":
    websocket.enableTrace(False)
    ws = websocket.WebSocketApp(
        SOCKET, on_message=on_message, on_open=on_open, on_close=on_close)
    wst = threading.Thread(target=ws.run_forever)
    wst.daemon = True
    wst.start()

    conn_timeout = 60
    while not ws.sock.connected and conn_timeout:
        time.sleep(1)
        conn_timeout -= 1

    while ws.sock is not None:
        time.sleep(10)

Output as below:

opened connection
tick :: 2020-10-26 15:16:44 :: NSE:SBIN :: 196.65 :: 43263601
tick :: 2020-10-26 15:16:47 :: NSE:SBIN :: 196.55 :: 43281572
tick :: 2020-10-26 15:16:48 :: NSE:SBIN :: 196.5 :: 43284530
tick :: 2020-10-26 15:16:49 :: NSE:SBIN :: 196.65 :: 43284705
tick :: 2020-10-26 15:16:50 :: NSE:SBIN :: 196.55 :: 43289608
tick :: 2020-10-26 15:16:53 :: NSE:SBIN :: 196.65 :: 43302304
tick :: 2020-10-26 15:16:58 :: NSE:SBIN :: 196.6 :: 43306025
tick :: 2020-10-26 15:16:59 :: NSE:SBIN :: 196.55 :: 43310465
tick :: 2020-10-26 15:17:00 :: NSE:SBIN :: 196.65 :: 43313272
tick :: 2020-10-26 15:17:04 :: NSE:SBIN :: 196.6 :: 43324023
tick :: 2020-10-26 15:17:05 :: NSE:SBIN :: 196.7 :: 43327660
tick :: 2020-10-26 15:17:06 :: NSE:SBIN :: 196.65 :: 43327834
tick :: 2020-10-26 15:17:07 :: NSE:SBIN :: 196.6 :: 43329298
tick :: 2020-10-26 15:17:09 :: NSE:SBIN :: 196.65 :: 43329746
tick :: 2020-10-26 15:17:10 :: NSE:SBIN :: 196.6 :: 43332710
tick :: 2020-10-26 15:17:12 :: NSE:SBIN :: 196.65 :: 43334585
tick :: 2020-10-26 15:17:15 :: NSE:SBIN :: 196.55 :: 43336631
tick :: 2020-10-26 15:17:16 :: NSE:SBIN :: 196.6 :: 43337236
tick :: 2020-10-26 15:17:18 :: NSE:SBIN :: 196.7 :: 43352825
tick :: 2020-10-26 15:17:20 :: NSE:SBIN :: 196.55 :: 43359141
tick :: 2020-10-26 15:17:22 :: NSE:SBIN :: 196.65 :: 43362175
tick :: 2020-10-26 15:17:23 :: NSE:SBIN :: 196.55 :: 43364062
tick :: 2020-10-26 15:17:25 :: NSE:SBIN :: 196.6 :: 43364601
tick :: 2020-10-26 15:17:27 :: NSE:SBIN :: 196.55 :: 43371410
tick :: 2020-10-26 15:17:28 :: NSE:SBIN :: 196.7 :: 43384268
tick :: 2020-10-26 15:17:30 :: NSE:SBIN :: 196.6 :: 43385580
tick :: 2020-10-26 15:17:32 :: NSE:SBIN :: 196.7 :: 43388415
tick :: 2020-10-26 15:17:33 :: NSE:SBIN :: 196.6 :: 43390152
tick :: 2020-10-26 15:17:35 :: NSE:SBIN :: 196.65 :: 43392443
tick :: 2020-10-26 15:17:36 :: NSE:SBIN :: 196.7 :: 43392859
tick :: 2020-10-26 15:17:37 :: NSE:SBIN :: 196.65 :: 43395097
tick :: 2020-10-26 15:17:39 :: NSE:SBIN :: 196.6 :: 43395708
tick :: 2020-10-26 15:17:40 :: NSE:SBIN :: 196.65 :: 43395846
tick :: 2020-10-26 15:17:43 :: NSE:SBIN :: 196.5 :: 43419135
tick :: 2020-10-26 15:17:46 :: NSE:SBIN :: 196.65 :: 43424576
tick :: 2020-10-26 15:17:47 :: NSE:SBIN :: 196.6 :: 43426038
tick :: 2020-10-26 15:17:52 :: NSE:SBIN :: 196.5 :: 43436492
tick :: 2020-10-26 15:17:53 :: NSE:SBIN :: 196.6 :: 43437217
tick :: 2020-10-26 15:17:55 :: NSE:SBIN :: 196.5 :: 43439284
tick :: 2020-10-26 15:17:56 :: NSE:SBIN :: 196.6 :: 43442305
tick :: 2020-10-26 15:17:57 :: NSE:SBIN :: 196.65 :: 43444488
tick :: 2020-10-26 15:17:58 :: NSE:SBIN :: 196.5 :: 43454282
tick :: 2020-10-26 15:17:59 :: NSE:SBIN :: 196.65 :: 43458267
tick :: 2020-10-26 15:18:01 :: NSE:SBIN :: 196.5 :: 43461217
closed connection

I did add this https://github.com/rushic24/tradingview-scraper/blob/master/livestreamtest.py but the data is getting repeated sometimes, not sure why.

No issues it is bound to happen, it is not perfect. Those errors are expected. scraping is never perfect.

from tradingview-scraper.

na81cho avatar na81cho commented on May 31, 2024

hola con este código se puede sacar el histórico del RSI ?

from tradingview-scraper.

0xrushi avatar 0xrushi commented on May 31, 2024

I'm closing this, I've added the details of discussion here

from tradingview-scraper.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.