Created
January 28, 2022 22:19
-
-
Save JeffreyKozik/7535e15d618ed5331a70c8e6508fa2b4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# selenium dependencies | |
from selenium import webdriver | |
from webdriver_manager.chrome import ChromeDriverManager | |
from selenium.webdriver.support.ui import WebDriverWait | |
from selenium.webdriver.support import expected_conditions as EC | |
from selenium.webdriver.common.by import By | |
from selenium.webdriver.common.keys import Keys | |
# excel dependencies | |
import openpyxl | |
from pathlib import Path | |
from os.path import exists | |
# gui dependencies | |
import tkinter as tk | |
# screenshot dependencies | |
from PIL import Image | |
from Screenshot import Screenshot_Clipping | |
# https://realpython.com/python-gui-tkinter/ | |
window = tk.Tk() | |
file_address_label = tk.Label(text="Excel File") | |
file_address_entry = tk.Entry() | |
file_address_label.pack() | |
file_address_entry.pack() | |
starting_row_label = tk.Label(text="Staring Row") | |
starting_row_entry = tk.Entry() | |
starting_row_label.pack() | |
starting_row_entry.pack() | |
ending_row_label = tk.Label(text="Ending Row") | |
ending_row_entry = tk.Entry() | |
ending_row_label.pack() | |
ending_row_entry.pack() | |
column_label = tk.Label(text="Column") | |
column_entry = tk.Entry() | |
column_label.pack() | |
column_entry.pack() | |
def handle_click(event): | |
xlsx_file = file_address_entry.get() | |
starting_row = starting_row_entry.get() | |
print(starting_row) | |
ending_row = ending_row_entry.get() | |
column = column_entry.get() | |
defaults = [] | |
if (exists("trading_view_automation_defaults.txt")): | |
with open('trading_view_automation_defaults.txt') as f: | |
defaults = f.readlines() | |
i = 0 | |
while (i < len(defaults)): | |
print('in while loop') | |
defaults[i] = defaults[i][:-1] | |
print(defaults[i]) | |
i+=1 | |
def set_to_default(variable, num): | |
print(str(variable)) | |
if (str(variable) == ""): | |
return defaults[num] | |
else: | |
return variable | |
xlsx_file = set_to_default(xlsx_file, 0) | |
starting_row = set_to_default(starting_row, 1) | |
print(starting_row) | |
ending_row = set_to_default(ending_row, 2) | |
column = set_to_default(column, 3) | |
print(starting_row) | |
starting_row = int(starting_row) | |
ending_row = int(ending_row) | |
f = open("trading_view_automation_defaults.txt", "w", encoding='utf-8') | |
f.write(xlsx_file + "\n") | |
f.write(str(starting_row) + "\n") | |
f.write(str(ending_row) + "\n") | |
f.write(column + "\n") | |
f.close() | |
# https://www.marsja.se/your-guide-to-reading-excel-xlsx-files-in-python/ | |
workbook_object = openpyxl.load_workbook(xlsx_file) | |
sheet = workbook_object.active | |
current_row = starting_row | |
stocks = [] | |
while current_row <= ending_row: | |
current_cell = column + str(current_row) | |
current_stock = sheet[current_cell].value | |
stocks.append(current_stock) | |
current_row += 1 | |
url = "https://in.tradingview.com/chart/" | |
driver = webdriver.Chrome(ChromeDriverManager().install()) | |
driver.get(url) | |
waiting_time = 1000 | |
def search_stock(stock): | |
search_button = WebDriverWait(driver, waiting_time).until( | |
EC.element_to_be_clickable((By.ID, "header-toolbar-symbol-search"))) | |
search_button.click() | |
search_input = WebDriverWait(driver, waiting_time).until( | |
EC.element_to_be_clickable((By.XPATH, '//input[@data-role="search"]'))) | |
search_input.send_keys(stock) | |
search_input.send_keys(Keys.ENTER) | |
# https://www.browserstack.com/guide/take-screenshot-with-selenium-python | |
driver.save_screenshot(stock + ".png") | |
for stock in stocks: | |
search_stock(stock) | |
driver.close() | |
quit() | |
button = tk.Button(text="Screenshot Stocks", bg="black", fg="white") | |
button.bind("<Button-1>", handle_click) | |
button.pack() | |
window.mainloop() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment