Spaces:
Build error
Build error
| import gradio as gr | |
| import selenium | |
| from selenium import webdriver | |
| from selenium.webdriver.common.keys import Keys | |
| from selenium.common.exceptions import NoSuchElementException | |
| from selenium.webdriver import Chrome, ChromeOptions | |
| import time | |
| import pandas as pd | |
| from selenium.webdriver.support import expected_conditions as EC | |
| from selenium.webdriver.common.by import By | |
| from selenium.webdriver.support.ui import WebDriverWait | |
| from time import sleep | |
| from webdriver_manager.chrome import ChromeDriverManager | |
| global name | |
| global password | |
| global topic | |
| def login_and_work(username_text, password_text, topic_text): | |
| options = ChromeOptions() | |
| options.use_chromium = True | |
| driver = webdriver.Chrome() | |
| #driver= webdriver.Chrome(ChromeDriverManager().install()) | |
| driver.get('https://twitter.com/i/flow/login') | |
| time.sleep(5) | |
| username = driver.find_element("xpath",'//input[@name="text"]') | |
| username.send_keys(username_text) | |
| driver.find_element("xpath",'(//*[@role="button"])[3]').click() # in prevoius block | |
| try: | |
| time.sleep(10) | |
| y = driver.find_element("xpath",'//h1//span') | |
| if(y.text =='Enter your phone number or username'): | |
| username2 = driver.find_element("xpath",'//input[@name="text"]') | |
| username2.send_keys(username_text) | |
| driver.find_element("xpath",'(//*[@role="button"])[2]').click() | |
| except: | |
| x = 10 | |
| password = driver.find_element("xpath",'//input[@name="password"]') | |
| password.send_keys(password_text) | |
| driver.find_element("xpath",'(//*[@role = "button"])[4]').click() | |
| try: | |
| driver.maximize_window() | |
| time.sleep(5) | |
| driver.maximize_window() | |
| search = driver.find_element("xpath",'//input[@placeholder="Search"]') | |
| search.send_keys(Keys.CONTROL + "a") | |
| search.send_keys(Keys.DELETE) | |
| search.send_keys(topic_text) | |
| search.send_keys(Keys.RETURN) | |
| df = pd.DataFrame() | |
| df['Name']='' | |
| df['Tweet'] = '' | |
| #df['Sentiment'] = '' | |
| tweet_count = 6 | |
| i = 1 | |
| element = driver.find_element("xpath","//body") | |
| time.sleep(5) | |
| while True and i <= tweet_count: | |
| try: | |
| tweet_name = driver.find_element("xpath",f'(//*[@data-testid="User-Name"])[{i}]') | |
| df.loc[i, 'Name'] = tweet_name.text | |
| tweet_div = driver.find_element("xpath",f'(//*[@data-testid="tweetText"])[{i}]') | |
| if(tweet_div): | |
| #print(driver.find_element("xpath",'(//*[@data-testid="tweetText"])[1]').getText()) | |
| df.loc[i, 'Tweet'] = tweet_div.text | |
| i += 1 | |
| element.send_keys(Keys.PAGE_DOWN) | |
| time.sleep(5) | |
| except: | |
| time.sleep(5) | |
| tweet_name = driver.find_element("xpath",f'(//*[@data-testid="User-Name"])[{i}]') | |
| df.loc[i, 'Name'] = tweet_name.text | |
| tweet_div = driver.find_element("xpath",f'(//*[@data-testid="tweetText"])[{i}]') | |
| if(tweet_div): | |
| #print(driver.find_element("xpath",'(//*[@data-testid="tweetText"])[1]').getText()) | |
| df.loc[i, 'Tweet'] = tweet_div.text | |
| i += 1 | |
| element.send_keys(Keys.PAGE_DOWN) | |
| time.sleep(5) | |
| #model = tweetnlp.load_model('sentiment', multilingual=True) # Or `model = tweetnlp.Sentiment()` | |
| # for i in range(1,len(df)+1): | |
| # print("text is...", df.loc[i,'Tweet']) | |
| # #y = sentiment_pipeline(df.loc[i, 'Tweet']) | |
| # #print('label is..', y[0]['label']) | |
| # print('model sentiment is..', model.sentiment(df.loc[i, 'Tweet'])) | |
| # df.loc[i, 'Sentiment'] = str(model.sentiment(df.loc[i, 'Tweet'])) | |
| return df | |
| except Exception as e: | |
| x = 10 | |
| with gr.Blocks() as demo: | |
| name = gr.Textbox(label="Username") | |
| password = gr.Textbox(label="Password", type = 'password') | |
| topic= gr.Textbox(label="Topic") | |
| btn = gr.Button(value="Submit") | |
| btn.click(login_and_work, inputs=[name, password, topic], outputs= gr.Dataframe(headers=['Name', 'Tweet'])) | |
| demo.launch(share=True) |