Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/Neel317/ShopSync
Browse files Browse the repository at this point in the history
  • Loading branch information
Neel317 committed Nov 27, 2023
2 parents 3a896ba + 923b2b6 commit 9cf6ab4
Show file tree
Hide file tree
Showing 7 changed files with 112 additions and 21 deletions.
6 changes: 3 additions & 3 deletions Chrome Extension/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ async function fetchDataAndFillTable(url) {

record.forEach(item => {
tempStr = "<tr>";
tempStr += `<td>${item.title}</td>`;
tempStr += `<td class="title">${item.title}</td>`;
tempStr += `<td>${item.price}</td>`;
tempStr += `<td>${item.website}</td>`;
tempStr += `<td><a target="_blank" href='${item.link}'>Link to the Store</a></td>`;
tempStr += `<td class="website">${item.website}</td>`;
tempStr += `<td><a class="buy-now" target="_blank" href='${item.link}'>Buy Now</a></td>`;
tempStr += "</tr>";
tableStr += tempStr;
});
Expand Down
2 changes: 1 addition & 1 deletion Chrome Extension/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ <h1 class="text-center mb-4">ShopSync - Price Comparison</h1>
</div>

<!-- Category Dropdown -->
<div class="input-group col-md-6 justify-content-center">
<div class="input-group col-md-6 justify-content-center mt-3">
<div class="input-group-prepend">
<label class="input-group-text" for="categorySelect">Websites</label>
</div>
Expand Down
42 changes: 42 additions & 0 deletions Chrome Extension/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,46 @@
}
.fade-in {
animation: fadeIn 0.5s ease-in-out;
}

.custom-select{
width: 200px;
}

table{
margin-top: 12px;
vertical-align: middle;
}

thead{
background-color: #333;
color: white;
text-align: center;
}

td{
vertical-align: middle;
border: 1px solid #ddd;
padding: 8px;
text-align: center;
}

.buy-now{
border-radius: 6px !important;
background-color: #333 !important;
color: white !important;
display: inline-block;
padding: 6px 10px;
text-align: center;
text-decoration: none;
cursor: pointer;
border: none;
}

.title{
text-align: left;
}

.website{
text-transform: uppercase;
}
26 changes: 26 additions & 0 deletions logger.txt
Original file line number Diff line number Diff line change
Expand Up @@ -293,8 +293,34 @@ amazon query:Iphone
amazon query:Iphone
amazon query:Iphone
amazon query:Iphone
<<<<<<< HEAD
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
=======
amazon query:iphone
amazon query:iphone
amazon query:iphone
amazon query:iphone
amazon query:iphone
>>>>>>> 193d9b395c989284203bd4d60446536812830a5e
12 changes: 12 additions & 0 deletions src/logger.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
amazon query:iPad
5 changes: 4 additions & 1 deletion src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@

nest_asyncio.apply()
# response type define


class jsonScraps(BaseModel):
timestamp: str
title: str
Expand All @@ -36,7 +38,7 @@ class jsonScraps(BaseModel):

app = FastAPI()

## Handling cors policy
# Handling cors policy
origins = ["*"]

app.add_middleware(
Expand All @@ -47,6 +49,7 @@ class jsonScraps(BaseModel):
allow_headers=["*"],
)


@app.get("/")
async def read_root():
'''Get documentation of API
Expand Down
40 changes: 24 additions & 16 deletions src/scraper_mt.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,17 @@
sys.path.append(os.path.abspath("Slash"))

# local imports
import src.formattr as form
from src.configs_mt import AMAZON, WALMART, COSTCO, BESTBUY, scrape_ebay, scrape_target
import formattr as form
from configs_mt import AMAZON, WALMART, COSTCO, BESTBUY, scrape_ebay, scrape_target


class search(Thread):
def __init__(self, query, config):
self.result = {}
self.query = query
self.config = config
super(search,self).__init__()
super(search, self).__init__()

def run(self):
"""Scrape the given config for a specific item
Expand Down Expand Up @@ -54,7 +55,8 @@ def run(self):

# begin parsing page content
try:
results = page.find_all(self.config['item_component'], self.config['item_indicator'])
results = page.find_all(
self.config['item_component'], self.config['item_indicator'])
except AttributeError as e:
print(f"An AttributeError occurred: {e}")
results = None
Expand All @@ -63,7 +65,8 @@ def run(self):
title = res.select(self.config['title_indicator'])
price = res.select(self.config['price_indicator'])
link = res.select(self.config['link_indicator'])
product = form.formatResult(self.config['site'], title, price, link)
product = form.formatResult(
self.config['site'], title, price, link)
if product['title'] != '' and product['price'] != '' and product['link'] != '':
products.append(product)
self.result = products
Expand Down Expand Up @@ -149,7 +152,7 @@ def scrape(args, scrapers):
if i == len(scrapers):
break
if scrapers[i] == 'ebay':
t_eb = scrape_ebay(query)
t_eb = scrape_ebay(query)
t_eb.start()
i += 1
if i == len(scrapers):
Expand All @@ -172,52 +175,58 @@ def scrape(args, scrapers):
break

i = 0
while i < len(scrapers) :
while i < len(scrapers):
if scrapers[i] == 'amazon':
t_az.join()
i += 1
for sort_by in args['sort']:
local = form.sortList(t_az.result, sort_by, args['des'])[:args.get('num', len(t_az.result))]
local = form.sortList(t_az.result, sort_by, args['des'])[
:args.get('num', len(t_az.result))]
overall.extend(local)
if i == len(scrapers):
break
if scrapers[i] == 'bestbuy':
t_bb.join()
i += 1
for sort_by in args['sort']:
local = form.sortList(t_bb.result, sort_by, args['des'])[:args.get('num', len(t_bb.result))]
local = form.sortList(t_bb.result, sort_by, args['des'])[
:args.get('num', len(t_bb.result))]
overall.extend(local)
if i == len(scrapers):
break
if scrapers[i] == 'costco':
t_cc.join()
i += 1
for sort_by in args['sort']:
local = form.sortList(t_cc.result, sort_by, args['des'])[:args.get('num', len(t_cc.result))]
local = form.sortList(t_cc.result, sort_by, args['des'])[
:args.get('num', len(t_cc.result))]
overall.extend(local)
if i == len(scrapers):
break
if scrapers[i] == 'ebay':
t_eb.join()
i += 1
for sort_by in args['sort']:
local = form.sortList(t_eb.result, sort_by, args['des'])[:args.get('num', len(t_eb.result))]
local = form.sortList(t_eb.result, sort_by, args['des'])[
:args.get('num', len(t_eb.result))]
overall.extend(local)
if i == len(scrapers):
break
if scrapers[i] == '':
t_tg.join()
i += 1
for sort_by in args['sort']:
local = form.sortList(t_tg.result, sort_by, args['des'])[:args.get('num', len(t_tg.result))]
local = form.sortList(t_tg.result, sort_by, args['des'])[
:args.get('num', len(t_tg.result))]
overall.extend(local)
if i == len(scrapers):
break
if scrapers[i] == 'walmart':
t_wm.join()
i += 1
for sort_by in args['sort']:
local = form.sortList(t_wm.result, sort_by, args['des'])[:args.get('num', len(t_wm.result))]
local = form.sortList(t_wm.result, sort_by, args['des'])[
:args.get('num', len(t_wm.result))]
overall.extend(local)
if i == len(scrapers):
break
Expand All @@ -226,10 +235,9 @@ def scrape(args, scrapers):
if i == len(scrapers):
break


for sort_by in args['sort']:
overall = form.sortList(overall, sort_by, args['des'])

print('Before return time: ', datetime.now().strftime("%d/%m/%Y %H:%M:%S"))

return overall

0 comments on commit 9cf6ab4

Please sign in to comment.