Upload files to "/"

This commit is contained in:
2025-08-03 21:31:47 +00:00
commit cad0d7eef9
2 changed files with 237 additions and 0 deletions
+126
View File
@@ -0,0 +1,126 @@
import requests
import string
import re
from bs4 import BeautifulSoup
import openpyxl
from openpyxl import load_workbook
import argparse
import os
def dir_path(path):
if os.path.isdir(path):
return path
else:
raise argparse.ArgumentTypeError(f"readable_dir:{path} is not a valid path")
parser = argparse.ArgumentParser()
parser.add_argument("-f",type=str,default='redbook.xlsm')
parser.add_argument("-w",type=str,default='Sheet1')
parser.add_argument("-u")
parser.add_argument("-r",type=str,default='R961893')
args = parser.parse_args()
print(args)
# Making a GET request
uri = 'https://www.redweek.com/posting/' + str(args.r)
#uri = 'https://www.redweek.com/posting/' + str(args.r)
r = requests.get(uri)
# Parsing the HTML
soup = BeautifulSoup(r.content, 'html.parser')
w = soup.find(class_='total__price')
x = soup.find('h2', class_='price-value mb-1')
z = soup.find(class_='posting-main-price')
v = soup.find(class_='posting-feat-unit-view')
y = soup.find(class_='posting-main-title')
u = soup.find(class_='posting-feat-sleep-bedrooms')
u1 = soup.find(class_='posting-feat-sleep-guests')
u2 = soup.find(class_='posting-feat-sleep-beds')
all_links= soup.findAll('a')
#from lxml import etree
#dom = etree.HTML(str(soup))
#PropURL=(dom.xpath('//*[@id="main-content"]/div[2]/div/div[1]/div[1]/section/div[4]/header/h1/a')[0].text)# //*[@id="main-content"]/div[2]/div/div[1]/div[1]/section/div[4]/header/h1/a
#PropURLtext=PropURL
#PropURL = re.sub('<.*?>','',PropURL)
#PropURL = re.sub('(^.*? (?=<)<)','',PropURL)
#PropURL = all_links[65]
PropertyName = str(y.text).strip()
PricePerNight = str(x.text).strip()
ResortView = str(v.text).strip()
ResortView = ResortView.replace("View: ", "")
Bedrooms = str(u.text).strip()
Bedrooms = Bedrooms.replace("\n"," ")
SearchBedrooms = re.sub('\D', '', Bedrooms)
Sleeps = str(u1.text).strip()
Sleeps = Sleeps.replace("\n"," ")
SearchSleeps = re.sub('\D', '', Sleeps)
SearchView = re.sub(" ",'%20',ResortView)
LOS = ''
BedDetails = str(u2.text).strip()
BedDetails = BedDetails.replace("\n"," ")
CheckIn = ""
URL = str(y).strip()
URL = URL.replace("\n", "")
URL = URL.replace("<a href=\"", "<a href=\"https://www.redweek.com")
URL2 = URL.replace('<h1 class="posting-main-title"><a href="','')
URL2 = (URL2.split('#'))
URL3 = URL2[0]
URL3 = URL3 + '/timeshare-rentals?bedrooms='+ SearchBedrooms+ '&sleeps=' + SearchSleeps +'&available=1'
URL4 = URL3 + '&view='+SearchView
TotalPrice = str(w).strip()
TotalPrice = re.sub('<.*?>', '', TotalPrice)
Body1 = str(z.text).strip()
for line in Body1.splitlines():
# print (line)
if line == "\n" : next (line)
if line.startswith("Check-in:") :
CheckIn = line.replace("Check-in: ","")
if line.startswith("Check-out:") :
CheckOut = line.replace("Check-out: ","")
if re.findall('^\d-', line):
LOS = line.strip()
if line.startswith("Posted by") :
Owner= line.replace("Posted by ","")
print ('Property: ',PropertyName)
print ('Property URL: ',URL3)
print ('Bedrooms: ',Bedrooms)
print ('Sleeps : ',Sleeps)
print ('Nights: ',LOS)
print ('BedConfig: ',BedDetails)
print ('URL: ',URL)
print ('View: ',ResortView)
if CheckIn: print ('Check-in: ',CheckIn)
if CheckOut: print ('Check-out: ',CheckOut)
print ('Price Per Night: ',PricePerNight)
print ('TotalPrice: ', TotalPrice)
print ('Posted by: ', Owner)
location = str(args.f)
import xlwings as xw
#wb = xw.Book() # this will create a new workbook
#wb = xw.Book('FileName.xlsx') # connect to a file that is open or in the current working directory
#wb = xw.Book(r'C:\path\to\file.xlsx') # on Windows: use raw strings to escape backslashes
wb = xw.Book(location) # connect to a file that is open or in the current working directory
sheet = wb.sheets[args.w]
sheet.range('B7').value = PropertyName
sheet.range('B8').value = Bedrooms
sheet.range('B9').value = Sleeps
sheet.range('B10').value = LOS
sheet.range('B11').value = BedDetails
sheet.range('B12').value = URL
sheet.range('B13').value = ResortView
sheet.range('B14').value = CheckIn
sheet.range('B15').value = CheckOut
sheet.range('B16').value = PricePerNight
sheet.range('B17').value = TotalPrice
sheet.range('B18').value = Owner
sheet.range('B34').value = str(PropURL)
sheet.range('B35').value = URL4
sheet.range('B36').value = URL3
#wb.save
+111
View File
@@ -0,0 +1,111 @@
import requests
import string
import re
import time
import xlwings as xw
import argparse
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def dir_path(path):
if os.path.isdir(path):
return path
else:
raise argparse.ArgumentTypeError(f"readable_dir:{path} is not a valid path")
parser = argparse.ArgumentParser()
parser.add_argument("-f",type=str,default='redbook.xlsm')
parser.add_argument("-w",type=str,default='Sheet1')
parser.add_argument("-u")
parser.add_argument("-r",type=str,default='https://www.vrbo.com/rm/321.2072585.2637118/conversation/253dca60-0988-4191-ab23-91f635016e07')
parser.add_argument("-username",default='*******')
parser.add_argument("-password",default='*******')
args = parser.parse_args()
print(args)
gecko_path = 'C:/temp/geckodriver.exe'
options = webdriver.firefox.options.Options()
options.headless = False
driver = webdriver.Firefox(options = options, executable_path = gecko_path)
url = args.r
driver.get(url)
time.sleep(2)
username = driver.find_element_by_id("lex-emailAddress")
username.send_keys(args.username)
password = driver.find_element_by_id("password")
password.send_keys(args.password)
time.sleep(1)
driver.find_element_by_id("login").click()
time.sleep(4)
#alert = driver.switch_to.alert
#alert.dismiss();
#try:
# element = WebDriverWait(driver, 10).until(
# EC.presence_of_element_located((By.CLASS_NAME, "MessageItem MessageItem--payout"))
# )
#finally:
# driver.quit()
time.sleep(10)
pageSource = driver.page_source
fileToWrite = open("page_source.html", "w")
fileToWrite.write(pageSource)
fileToWrite.close()
BookingDetailsdates=driver.find_element_by_class_name("BookingDetails__dates")
Ledgeritemvalue=driver.find_elements_by_class_name("Ledger-item__value")
PaymentSchedule__amount=driver.find_element_by_class_name("PaymentSchedule__amount")
NumNightsandGuests=driver.find_element_by_css_selector('.MessageItem--nightAndGuests')
adNum=driver.find_element_by_css_selector('.ha-partner-property-selector-property-details')
guestName=driver.find_element_by_class_name('h4')
Property=driver.find_element_by_class_name('BookingDetails__info')
EstimatedPayout = Ledgeritemvalue[0].text
BookingAmount = Ledgeritemvalue[1].text
FullPayment = PaymentSchedule__amount.text
Ad = adNum.text
Guest = guestName.text
Prop = Property.text
BookingDetails = str(BookingDetailsdates.text).strip() #Body1 = str(soup.text).strip()
for index,line in enumerate(BookingDetails.splitlines()):
if line.startswith("Check in") :
Checkin=BookingDetails.splitlines()[index+1]
if line.startswith("Check out") :
Checkout=BookingDetails.splitlines()[index+1]
numnights = (NumNightsandGuests.text).strip().splitlines
NNights=(NumNightsandGuests.text).strip().splitlines(0)[0]
Guests=(NumNightsandGuests.text).strip().splitlines(0)[1]
driver.close()
print ("Estimated Payout: ",EstimatedPayout)
print ("Booking amount : ",BookingAmount)
print ("Full Payment: ",FullPayment)
print ("Ad # : ",Ad)
print ("Guest : ",Guest)
print ("Property : ",Prop)
print ("Check-in: ",Checkin)
print ("Check-out: ",Checkout)
print ("Num Nights: ",NNights)
print ("Guests: ",Guests)
location = str(args.f)
wb = xw.Book(location) # connect to a file that is open or in the current working directory
sheet = wb.sheets[args.w]
sheet.range('F2').value = Guest
sheet.range('D7').value = Prop
sheet.range('D8').value = Ad
sheet.range('D9').value = ''
sheet.range('D10').value = Guests
sheet.range('D11').value = Checkin
sheet.range('D12').value = ''
sheet.range('D13').value = Checkout
sheet.range('D14').value = EstimatedPayout
sheet.range('D15').value = BookingAmount
sheet.range('D16').value = FullPayment