From df869dba6b3e657c0e75827d77ae3f11235f7929 Mon Sep 17 00:00:00 2001 From: James Cacapit Date: Tue, 29 Apr 2025 21:45:48 -0700 Subject: [PATCH 1/7] no secrets --- .gitignore | 1 + .vscode/settings.json | 14 +++++ webscraper/ABC/Ebay_API.py | 15 +++++ .../__pycache__/base_scraper.cpython-39.pyc | Bin 0 -> 1946 bytes webscraper/api/EbayAPI.py | 55 ++++++++++++++++++ .../api/__pycache__/EbayAPI.cpython-39.pyc | Bin 0 -> 1652 bytes .../api/__pycache__/interface.cpython-39.pyc | Bin 0 -> 620 bytes .../api/__pycache__/routes.cpython-39.pyc | Bin 0 -> 1259 bytes .../__pycache__/test_ebay_api.cpython-39.pyc | Bin 0 -> 1631 bytes .../__pycache__/test_routes.cpython-39.pyc | Bin 0 -> 1381 bytes webscraper/api/tests/test_ebay_api.py | 35 +++++++++++ webscraper/{src => }/main.py | 18 +++--- webscraper/output.json | 24 ++++++++ .../Cheaper_Scraper.cpython-39.pyc | Bin 1939 -> 3160 bytes .../src/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 140 bytes .../__pycache__/robot_check.cpython-39.pyc | Bin 760 -> 760 bytes .../tests/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 146 bytes .../test_cheaper_scraper.cpython-39.pyc | Bin 0 -> 1597 bytes 18 files changed, 155 insertions(+), 7 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 webscraper/ABC/Ebay_API.py create mode 100644 webscraper/ABC/__pycache__/base_scraper.cpython-39.pyc create mode 100644 webscraper/api/EbayAPI.py create mode 100644 webscraper/api/__pycache__/EbayAPI.cpython-39.pyc create mode 100644 webscraper/api/__pycache__/interface.cpython-39.pyc create mode 100644 webscraper/api/__pycache__/routes.cpython-39.pyc create mode 100644 webscraper/api/tests/__pycache__/test_ebay_api.cpython-39.pyc create mode 100644 webscraper/api/tests/__pycache__/test_routes.cpython-39.pyc create mode 100644 webscraper/api/tests/test_ebay_api.py rename webscraper/{src => }/main.py (58%) create mode 100644 webscraper/output.json create mode 100644 webscraper/src/__pycache__/__init__.cpython-39.pyc create mode 100644 webscraper/src/tests/__pycache__/__init__.cpython-39.pyc create mode 100644 webscraper/src/tests/__pycache__/test_cheaper_scraper.cpython-39.pyc diff --git a/.gitignore b/.gitignore index e69de29..03bd412 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +*.env diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b2d293c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + "python.analysis.extraPaths": [ + "./webscraper/ABC" + ], + "python.testing.unittestArgs": [ + "-v", + "-s", + "./webscraper", + "-p", + "*test*.py" + ], + "python.testing.pytestEnabled": false, + "python.testing.unittestEnabled": true +} \ No newline at end of file diff --git a/webscraper/ABC/Ebay_API.py b/webscraper/ABC/Ebay_API.py new file mode 100644 index 0000000..2be5a07 --- /dev/null +++ b/webscraper/ABC/Ebay_API.py @@ -0,0 +1,15 @@ +from abc import ABC,abstractmethod + +class EbayApi(ABC): + + @abstractmethod + def retrieve_access_token() -> str: + """ retrieves the user access token for sandbox environment it's a long line + of text, numbers, symbols + """ + pass + + @abstractmethod + def retrieve_ebay_response(httprequest:str,query:str) -> dict: + """ retrieves a json of large data with category ids, names, parentcategorynodes """ + pass \ No newline at end of file diff --git a/webscraper/ABC/__pycache__/base_scraper.cpython-39.pyc b/webscraper/ABC/__pycache__/base_scraper.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b0bf5ddbc2e0ed41e9859a9a566eaf3e053a5c70 GIT binary patch literal 1946 zcma)7&59g15bpo&o!Qy7olU?8gRTQ+Z-FovWABhtqbXhCyv#fi>1QJoL65;`O3gw#}0K#favG9sJNFP_RvHS0M% z-Ck@)UV=Ge;njUHPuEr8KeJWpi^aL9cmSeWu)OTPU4Y_>SdID)=V zn$uio7ee#JiZ3@fEugp-Cgjb=Nxg2vI2M3v9Aot;2Z*(Qb$oiA!IP~3l&4oyoyjrC zBt{aYVc`08tDA=V4vx6LBmZI?D1Y(tUko3^Y zLttCq+~+PVI}}G(cZVpNQ-mUwzhoghOm9b`jQgbkj^Ag=GjhOLKG zX{W~slvJU*RN@mv>)!zB-fbWm?+?BOk~syCe9W=h9i@+5w;@H7YfvA_Mta-Ty1Z5RIh|qEDpGGjp-8853Y1q1SnMmvro!>yO5t+`3v2Prs Wt=pWm;iE2!$Jk=b@8FJo?EDW_amjT6 literal 0 HcmV?d00001 diff --git a/webscraper/api/EbayAPI.py b/webscraper/api/EbayAPI.py new file mode 100644 index 0000000..15f78e3 --- /dev/null +++ b/webscraper/api/EbayAPI.py @@ -0,0 +1,55 @@ +import requests +from requests.auth import HTTPBasicAuth +from dotenv import load_dotenv +import os + + +load_dotenv() #initialize + +class EbayAPI: + + client_secret_key = os.getenv("clientsecret") + client_id_key = os.getenv("clientid") + + get_user_key = HTTPBasicAuth(client_id_key, client_secret_key) + + + def retrieve_access_token(): + try: + response = requests.post("https://api.sandbox.ebay.com/identity/v1/oauth2/token", + headers = {"Content-Type":"application/x-www-form-urlencoded"}, + data = { + "grant_type": "client_credentials", + "scope": "https://api.ebay.com/oauth/api_scope" + }, + auth=EbayAPI.get_user_key + ) + access_token = response.json().get("access_token") + status_code = response.status_code + if(status_code == 404): + raise Exception("404 error here") + return access_token + except Exception as e: + raise e + + def retrieve_ebay_response(httprequest:str,query:str): + auth = EbayAPI.retrieve_access_token() + try: + response = requests.get(httprequest, + headers={ + "Authorization": f"Bearer {auth}", + "Content-Type": "application/json" + }, + params= { + "q": query, + "category_tree_id": 0 + } + ) + status_code = response.status_code + if(status_code == 404): + raise Exception("not found 404 error") + + return response.json() + except Exception as e: + raise e + diff --git a/webscraper/api/__pycache__/EbayAPI.cpython-39.pyc b/webscraper/api/__pycache__/EbayAPI.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d50d9222694db4fe6f2d9bc0bd46adbd3a4dcbeb GIT binary patch literal 1652 zcmZuxPjA~c6elT4mSsCj(zWYhD?Dr$9};IncPWNpOQ~5sV(-b0mtv)$$M+tk_xJZGI-P*PdieXwAo2j3V!(&X9+^=4tANuHxr}lAnm=(!C(kJ!hdO=?>|6@4yP# z?$N6AVt4oDrZ7qTbYushXr;N3k<6{iPGbD(?pj2#30g%$DoMzcbHydSrr-}b2AroF z%2VjimyYBYBy6fc1=77_(vyt~9=46A{$p*Lj{CYwi0 zKeG)PoYOaSLVqDUgcI8s7nDpLO3LMl^9HoPLQ$vAYbOh4`v%zn4TRm=F25UCTbL*P zz9^D)BQm+4pRFs%Wj)S^{X{}4i5>S(zUk)z3j1x}=0_^KX>a8jRMxKTjtfz}Qio}R9~%Jpz}^4eh0=S*Dv{d3PGZ&GsoFQOuGNs^-W)dT#kjf;fYFIM zQPJHjR=}8f1cXpVJ?b$=*?Z3Ujpr|c?8D>HC0c%QYw4p_daP<;wdbiu8|V}^F; z%Y%IZ$}ArSrSi-)5Wplf1Y$~CZ?v~4Up@m(6OgcE?xlYO&aN31f z!89RoM32K|z@a+G^*FLxsVI>>rZKn5D})w9qcO?yUY6VLt9+En?gAjaMvVpi01dW~ ze1ZfUtFaAw2}sY=pCSJc3EXf*uOg{Gx`!Nge@5;DS3Owt0}&qGV&*G2GhHAA8VHSL zK;Lt>Ztg!`P&bwZ*w{z^YwQPxwtMZ$kD^QrRTNc06b*AZN|A3z(eX&6^Anbv$^$^d zbr`P9hjDgEA>zZ%T$M-^H3CC-kYF(?2gXEyj^cmW)f}c+7Y#?iU}b%XI$(k0uhx2~ vDONJ<+z#D34r*;5?(q6{)_5E1E)pEYkGZJ)?`LWKfPJ3%p>244$7BBj!?UX( literal 0 HcmV?d00001 diff --git a/webscraper/api/__pycache__/interface.cpython-39.pyc b/webscraper/api/__pycache__/interface.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..652a24468547c6e33aa169c90a0d8aeac8b206ce GIT binary patch literal 620 zcmZuu%}N6?5YEr`$6~eM$=e=!DM$|wW9WQ3`C8 zl2vz*-NP*8VV)@+&ZnV=I0;LLPW*GqUx9*rDk~O6);7!6>GfIMPr=EG zl?I;cbew63A7E0V$e1s(INRv$E*?$m7Bu_eV1jGzFqPL$SM425cK<&Zb?TWP2IQDBHzclmGuAs literal 0 HcmV?d00001 diff --git a/webscraper/api/__pycache__/routes.cpython-39.pyc b/webscraper/api/__pycache__/routes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..95068bcae6b751c4b885af9051157fe64216a706 GIT binary patch literal 1259 zcmZWoOK%%D5aw`qwX3%jJ4q1~g?j5ADh0VUD2gOb`nVVcRKVy$z+xrR(#rcPNwt+= z=TP?;1GyIk>|=jKfgbuRcK{Vj~>mf5)0@nPQ;MpDCUk_P}wU@v;SCn;G&-xFn zzyH=hU_% zR+b#$lpQn*aWI;~r9tByYd_~wCQH7%f5J0N#z(3g?cW|f{ram9Ll7pxZ$t#RSo3D` z{PAobGn0xZnOaR##b-b8c@0a1!Y)YzP-0&~74@Qu|A;vQ#QdU;BGv(E#0XyR5&FUz)pAJ_2T!w_loLMVj+ z^g!Gyl+Ku7vp@v2-RFYCelQJZk%%bymME^m3!*|zCY@CvV%=5I88ahI z*1bytx9BlRJAZ*)GD=w!)|t!44gaCa&#q|GIeMO*KmGCh9M88$0E;Iu?Ewf)1XV;Z zMHRasB2aTi!Zm6x&6}O;d``(hzwo>5)6%gHAmovb!A=d5kk{2 zkPaA{$KhvC99fY+fDlV2ffOnzK$|cbEZLHRBx~-%OZw(M;xviY9YpLGK!?M#0y397 zUlaS?SFnrEuP_n0l#hzHz=|f+##Cm}Ei3o=i)vn~G&UH6=v$Y$xs`dPwBQq4l_CLT z=BAXdv*}znNek?=tgzZP-J{=gUAv+xeKpJgY@~tdqN(l-dO%{TV&GMyZC#a67G&BM z{$JbeqU0&+zWx*0*^?h0PKxyfS zeTrmkDSAo&1veNilCg8OeYC%i(KH-7XO?mgjkx!YV7_DCf$=ezHJ^Y;S&Lij!Gci! zi_?SaDPA+P0Sbd`3CljBi~ZXPd*kg<8aJ_&Wj51NHa#h4m6}gcPo%_FYEKMS!tA0z zgv?zOpQ3nQS+8MxnFs_j&d yZ<WG5* zpMl@#cL%241YyXG&dHQ8@H{0$i`jyJ2dlf^aunVS>)^w%D2Zii3a?s2A2;K)54k&9 zChw1k^5F8x*7L32&Oq{9s-8BICuXo08`=9L-|0w|+dPkZXst`hRGDNu|6I6Qnm0MR z(a12NH9A?}Kf}>3kN-l0`QgrpcP82%67c?H+jwBNTRDnxf9Nmdd>NIOa)F*M^(1W>F?&5mYC; zY2gTN_>rYtvCBxIfID-oJKMXp!#g6Gc0c$nG4C-TqNUwC$RuN%-{xiTx8?UC2X8qbX$HAFqU#? z4p!6{8)agg;CF*DY`yA41(@)46c|I@L~-6`1TfxN-hk+wfZ3)e|lM21S7B?{Mg7bgOQGC>->0QRpIgROS8z|2tKD+OV!| G1oSu4!A*|< literal 0 HcmV?d00001 diff --git a/webscraper/api/tests/test_ebay_api.py b/webscraper/api/tests/test_ebay_api.py new file mode 100644 index 0000000..7651c13 --- /dev/null +++ b/webscraper/api/tests/test_ebay_api.py @@ -0,0 +1,35 @@ +import unittest +from unittest.mock import patch,Mock +import requests +from webscraper.api.EbayAPI import EbayAPI + +class EbayTestApi(unittest.TestCase): + + def setUp(self): + self.EbayAPI = EbayAPI + + + def test_retrieve_access_token(self): + self.EbayAPI.retrieve_access_token() + self.assertEqual(type(self.EbayAPI.retrieve_access_token()),str) + + @patch("webscraper.api.EbayAPI.requests.post") + def test_retrieve_access_token_invalid(self,mock_post): + mock_response = Mock() + mock_response.status_code = 404 + mock_response.json.return_value ={"error": "not found"} + mock_post.return_value = mock_response + + with self.assertRaises(Exception): + self.EbayAPI.retrieve_access_token() + + + + @patch("webscraper.api.EbayAPI.requests.get") + def test_retrieve_ebay_response_invalid(self,mock_get): + self.EbayAPI.retrieve_ebay_response("https://test","item") + self.assertRaises(Exception) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/webscraper/src/main.py b/webscraper/main.py similarity index 58% rename from webscraper/src/main.py rename to webscraper/main.py index 700835b..494774d 100644 --- a/webscraper/src/main.py +++ b/webscraper/main.py @@ -1,18 +1,22 @@ - -from Cheaper_Scraper import CheaperScraper +from api.EbayAPI import EbayAPI +from src.Cheaper_Scraper import CheaperScraper import json def main(): - # Set up the scraper for a simple legal-to-scrape website - scraper = CheaperScraper("https://books.toscrape.com", - user_agent="CheaperBot/0.1", - delay=2.0) + + + EbayAPI.retrieve_ebay_response("https://api.sandbox.ebay.com/commerce/taxonomy/v1/category_tree/0",'batteries') + + # Set up the scraper for a simple legal-to-scrape website + # scraper = CheaperScraper("https://books.toscrape.com", + # user_agent="CheaperBot/0.1", + # delay=2.0) # Define which pages you want to scrape (you can use "/" for homepage) pages = ["/"] # Use the scraper to fetch and parse the pages - results = scraper.scrape(pages) + results = CheaperScraper.scraper.scrape(pages) # Show the output in the terminal for path, items in results.items(): diff --git a/webscraper/output.json b/webscraper/output.json new file mode 100644 index 0000000..e64146a --- /dev/null +++ b/webscraper/output.json @@ -0,0 +1,24 @@ +{ + "/": [ + "A Light in the Attic", + "Tipping the Velvet", + "Soumission", + "Sharp Objects", + "Sapiens: A Brief History of Humankind", + "The Requiem Red", + "The Dirty Little Secrets of Getting Your Dream Job", + "The Coming Woman: A Novel Based on the Life of the Infamous Feminist, Victoria Woodhull", + "The Boys in the Boat: Nine Americans and Their Epic Quest for Gold at the 1936 Berlin Olympics", + "The Black Maria", + "Starving Hearts (Triangular Trade Trilogy, #1)", + "Shakespeare's Sonnets", + "Set Me Free", + "Scott Pilgrim's Precious Little Life (Scott Pilgrim #1)", + "Rip it Up and Start Again", + "Our Band Could Be Your Life: Scenes from the American Indie Underground, 1981-1991", + "Olio", + "Mesaerion: The Best Science Fiction Stories 1800-1849", + "Libertarianism for Beginners", + "It's Only the Himalayas" + ] +} \ No newline at end of file diff --git a/webscraper/src/__pycache__/Cheaper_Scraper.cpython-39.pyc b/webscraper/src/__pycache__/Cheaper_Scraper.cpython-39.pyc index ac8006a8cb604891a54e4c1b0a883ee5d364f6d7..4cd99a74e74b2840525efed4c4fbd8da588ad162 100644 GIT binary patch literal 3160 zcma)8OOG4J5$>KBhg|MM)_P^h0X(pM2oZ-`+c|B7KrcHHpsWq84I={uliBI!a@Io* z)!oEuiP>DFOMv8-Q|th%TLR=qf&e=Cs~(b~Rtc;jrrF(9T~%H6Rn?^H z>m7#YZ-2Nn-0d>fbl`^DO*8+YwIDAq?C@djtVWTGX)r%Z&hBR8IS@uuJhtk?bydf9%D z*Xy@sIyL!VS{#(qNzbjlyLo16?|!aL9ey@3c{xrCFs|KBwLHjFI*|&?_Ji`Uyfc*9 z*H~Ph@8A0T-o3GrYLI3!BMqxhfW=L``i~eSqkG1V*p@DSp74bKttSG}dg{l%coTbp zbgwee{?-v4v4-6i_CmYY#ooHucYMh_YPkDDTa!lBk0d~#S&h*7@f+&=o;_bf5tEiDs~(kx6VU>{bM%=FK4D* z@ydBZoE_o9aBueCd*j^XX_3!lWQH=*O@N}4+zcZ!Gn%9-9Z3X5_dC)2Sx#=LBfYm= z5p{93z32;wvl701a6dBTT=YxKFK)jVeF;xQ))SF7Djy%wnOwj#`QUWbwwEMWpFvkX zl2Ja6w9Lw}&~)@9%}sPD&54xbNXbW2sf}Kqea^4XI;8Tax5)YXy)`(V^iI?|{Hr!; z*uYSSi?ea-Kxz#**Dc*l;ufMV;F&s@PDBbHwdh2k0BxfYXiv*x&P01)C|=Y7MVk5=MPm6sxKB!f58M0VduO8NZ>l>+!dIA!~W_JXoPb>bg$x9*qJl? z0CWF1s2t%6?@!K|Te;`0XAIy9&)cAN=uG7vuYJW1fLYT$UO)XaXJ;N~v-cr;L->{R z4HH4-L4!x!U$Ngn%bE9kk90M&UAAjA_gb@meJV{hj1X9ZNJRrxj-oWu6Pe|MJOe(> z@U@Uhj14LYkhCJ03`qDA765RxTs*LecmdzP`r_C3m$syOfz^Bv>1mb$7pR0EMEm7f zMkNwTo#a|BCC;wh&2?H7<%ty0;c3(WrEeaay=ebC3JHo~%K*&f)XX+NQL0ppg_I97 zXD{k)svWS^?JON9*7mwplt)LP*R7LOjWKBew@qyBku>p^N?}AYC{?0OYNopONJZ`I zLduB+C3fUvqb}o2y!D_-mQNmM(w6Vqmt;uKS64t+Z(G5rUNKTbPs*{DHJ29D&2W_% zd~4jhm}-JM>vZ`R_neO7;6LPDyjy&S&$cf>*d8P34$Y`|6}r>}mX+`Z76!FY@F&ih zbHo5f=a`E*H1D$CUOV$D@7OtZg@2Wu`GBfd`2@K~KdPwy1+#yAo+=c%)u_G}n8>;Y zOshu;P^gzH5&vO8QKO8?L32(-xsfB?fSl?vNq+&KHB#HR8dTg$mC3V0#%mK*ifLw& zNhyGzAS+U>liD}ADI}sssUL@fd@K@RFLs6>*F3F*bTW}+(F>ZW_K3;T=;3t>VVxF6 z$KGLCeyx52$}7>eHvAlvc~R;hwr?P+UFVgET2@5Vrjx%NFa`yOgt5KEVRP%+(^ua|bU)_Z;r2Ui@ZHokxsQn1GP3Nw0&!x+TIu+9Z6Dml4JyM z7c}oC$)jmn%qcFqHL6Terbb;O5rm`0jf5uaOGUS{w@@F^?1lMuMukeXF;L6bWK76+ zws)>>Z%3Exes9Z`MD;F6v3sb0W^+lsgJm6F3PU={`}yLNScN!m4f|g=slywMtA4@3rm5?P^Gdr- InaR8U_hu*z+W-In literal 1939 zcmZuy&2Jk;6rZpCuwy4q2`xeb`A}3Afg2D9R7F+k2i$U~K^3c1tIf{DUT5ufX2wcl zt+^!E9*{WEA~{F?rM+@MJ#&kM#Cy9=)dt3zxAXDly*I!2o9DRQZW3tuKi=@rCFD<> zyxllV9zZt_K}aHLM#B0_Lke@2u`v%ht=B{-V2x+a*bQAuz9&*h=bT9AjD?=0eG<5@ z!4BCCXxVI<**X^xL0hh$lhBtN5Xp^l9h}8erTdA-&*jzpVQ%kk z_rClKd|`VK@Y3Ipjf!SEE1NT;bQBNN#Fma!S$vv^TCb8g#{LL;6>UM6fZ7EuNJI+` zk`)Xjw_@pB5E!`y8Mz~G=}TB2@f36^v5kTj>Y0NJe0_3d;L@A8Q z4r+sFtFrnB(VH;7{O0k!y%l16#;Q28!+vVj-m%&@HG+FaCs!)b3f129wDhAWouoF3 z(57jDAhbnY>hdPt;`3YY=An0`t&y5Q3^9%EFkyIX)sPRkS)u$J3;;Q@qy=DSx|S`u zgz-!AJ3}lHKiC%qy+sym{yB`Dky|jyB!9scyx>dkf&k|JvH^QdJX7$|+A}yOh;5D9 zr@vCN5R}YsgY9)G3ic8>T?p_XQ2QDA3A`-C&%plvYP3zZE6;(uJOA);YT_)*kCp81 zpLT1sd-lZM>%Ok<7@h2HLVg0E9%5*%tzRHT9f9< zNus6}IpZh{Bye;G_VpGjad-eB(92BoiBTn06)|dY13f!caHwlO06|!bcBo)Y#^CEi z&VBgar1Pz78Ly6EriXT%y_0F==bQKRF-$BesHA6XQRVNP6l_T)WZ^M6!}{Xv&ezaL zZyIZOD+$FgRt*`1%;`g~;u`=jo_7|&l@a7h(iij>b|kur|;SUHRxk|8MAI{^_-QRzdZ4vOI}1a~}p*M?yCIDqtET4E=+2 zA|v2Sz-#RB+MzH|C9gYmDubWEzCn-(ZT=VAO646)5ra3F_F$62yC?v`=UsRWWC`rQ zpbJq5?Zb=~fG*T5zC(`uf&n^o7ef6A>7ARtza27CSVh2lSX_)>Mqq82a^~-MU(Q z23vJ4U;=p2qyo4xfBza{wJtius5SgWf&aQNG_bBr;<1XNvKd9=T+T8ax1#817H6v+ z4p{_VW_fJ&duZZK;2QJvR&ZG4G}2fjI9OB-)+?WGwK|*YPPH2N)pOCv?vU@Bud9^l ln>by=|1TTC1(L(6u2v`h&q3+$)Y0BYdKxSN{_1(O*uU;l!%P4G diff --git a/webscraper/src/__pycache__/__init__.cpython-39.pyc b/webscraper/src/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15bd8faada647383e48003ed286415bcf2e8ddf2 GIT binary patch literal 140 zcmYe~<>g`kf>#IlGpvF1V-N=!FakLaKwQiMBvKfH88jLFRx%WUgb~CqLl>(U=Zw_E zg4Cjz;*!+FoRW;-%#zfY^3W7^35mI(koFa^^9 diff --git a/webscraper/src/tests/__pycache__/__init__.cpython-39.pyc b/webscraper/src/tests/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..88582aa4c4d311a4b308bed2d01ba07046287cc8 GIT binary patch literal 146 zcmYe~<>g`kf>#IlGgN`}V-N=!FakLaKwQiMBvKfH88jLFRx%WUgb~Cqa~G=^=Zw_E zg4Cjz;*!+FoRW;-%#zfY^3+%OniK1US>&ryk0@&Ee@O9{FKt1 MR6CG?pMjVG0QpEGcK`qY literal 0 HcmV?d00001 diff --git a/webscraper/src/tests/__pycache__/test_cheaper_scraper.cpython-39.pyc b/webscraper/src/tests/__pycache__/test_cheaper_scraper.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e24870d9bcc0ad6d0a043831980843244f40a943 GIT binary patch literal 1597 zcma)+%}yIJ5P)s(PnHm%rJ@85J(E@nQdRYUP=!RLic2og%PNw!tW5)Kc2nC?)hJvF z4-$^NMW4ghp4vy?)EV!Fp8!?8+VS{jJo9;MCkqR80_D%orQQ#ZkYCuiTYPBjz^}JJ z2qI`kVysz4`z&UZd?LaV{sj@fBq!dv7yB|0!6{SkC7Fbmgo4dJX@$SRo^)E&F7EbZ zGLULNRam9if44Ab?7*+zfsiDog2YTv!7fPbmA+zM1R{iXAZj9lIuvuF4s}h;gRh2N zK9JhX_@S`ew4jcDcH!5HAPhu#PRE3UH&}snM(aIe26}6A^ROsRb=wr$#oJDcev2tI zwzaZLT~X_6nH^mbRfGQP-H%({%6V5CnPjH7e{5v;n>?&6x>}`O12JkRd0K7>uZG)$ z?>5lVd>(`tAUY#-)O-llc9YUsv;gKiv?eHHGJ*eup0J50=p}rR5`es7ool+;@@+lQ zS}Jp(hEid=<4_fch0*a`n&kXQnzW~IMF&@k2%5Hu0Q_bSS4Cm?AThl;7@Y?F=8>SE zvb)ED&=`&5*Z>6>$b=%n86;}L#?*M1Z~#H~1+-9i$@4mD9_EjN?Vjmpt-wLqz=7Cj zCG4Kw%e6`JR9a6PWuvM)huq?xTOVy_iC10ZZXvFu8LC`!oYw#gjb?;4;2XVu3i_ex zJ!TJ9_y;raBPTs$!0e5g@u$oRFL6bx@I2dKkSNIN66$_-tWC>vU}_nALM8PuGmrB* z%NstleGWGN#rM$kX}-6xsGwh5HZij|WN_KXtja7<3c5xfCym4EzF>R~Rjq(lk>VDZ zo>nh$5bx!kqr2h~Sz2?*|1gDQN}Q?jXcHQiiQIT9k+Y_qR%9d2^Q131w{_0@g&1b2 zH#q+~OtNxB;nh$JC|;mgMX`qBHbAFg6l!`LG-fwqkq2K81+E{x^^@bA^Hwd6hWW8U zr1;hC8`Fk2rd>Tle7}5b%XcesR0$jp^q|&3SRWUAED9TKmn(FR*?M)WVV C+Jt)m literal 0 HcmV?d00001 From b25bd606a860f3a4693a492634f70111d5d3d3cd Mon Sep 17 00:00:00 2001 From: James Cacapit Date: Tue, 29 Apr 2025 22:01:45 -0700 Subject: [PATCH 2/7] removed cached files and ignore compilation removed testing method --- accounts/__pycache__/__init__.cpython-312.pyc | Bin 142 -> 0 bytes accounts/__pycache__/admin.cpython-312.pyc | Bin 186 -> 0 bytes accounts/__pycache__/apps.cpython-312.pyc | Bin 452 -> 0 bytes accounts/__pycache__/models.cpython-312.pyc | Bin 1951 -> 0 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 1348 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 153 -> 0 bytes cheaper/__pycache__/__init__.cpython-312.pyc | Bin 141 -> 0 bytes cheaper/__pycache__/settings.cpython-312.pyc | Bin 2484 -> 0 bytes cheaper/__pycache__/urls.cpython-312.pyc | Bin 1008 -> 0 bytes .../ABC/__pycache__/base_scraper.cpython-311.pyc | Bin 2390 -> 0 bytes .../ABC/__pycache__/base_scraper.cpython-39.pyc | Bin 1946 -> 0 bytes .../api/__pycache__/EbayAPI.cpython-39.pyc | Bin 1652 -> 0 bytes .../api/__pycache__/interface.cpython-311.pyc | Bin 819 -> 0 bytes .../api/__pycache__/interface.cpython-39.pyc | Bin 620 -> 0 bytes .../api/__pycache__/routes.cpython-311.pyc | Bin 1855 -> 0 bytes webscraper/api/__pycache__/routes.cpython-39.pyc | Bin 1259 -> 0 bytes .../__pycache__/test_ebay_api.cpython-39.pyc | Bin 1631 -> 0 bytes .../__pycache__/test_routes.cpython-311.pyc | Bin 2319 -> 0 bytes .../tests/__pycache__/test_routes.cpython-39.pyc | Bin 1381 -> 0 bytes .../__pycache__/CheaperScraper.cpython-39.pyc | Bin 1925 -> 0 bytes .../__pycache__/Cheaper_Scraper.cpython-311.pyc | Bin 4816 -> 0 bytes .../__pycache__/Cheaper_Scraper.cpython-39.pyc | Bin 3160 -> 0 bytes .../src/__pycache__/__init__.cpython-311.pyc | Bin 171 -> 0 bytes .../src/__pycache__/__init__.cpython-39.pyc | Bin 140 -> 0 bytes .../src/__pycache__/robot_check.cpython-311.pyc | Bin 1144 -> 0 bytes .../src/__pycache__/robot_check.cpython-39.pyc | Bin 760 -> 0 bytes .../test_cheaper_scraper.cpython-311.pyc | Bin 2581 -> 0 bytes .../tests/__pycache__/__init__.cpython-39.pyc | Bin 146 -> 0 bytes .../test_cheaper_scraper.cpython-39.pyc | Bin 1597 -> 0 bytes 29 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 accounts/__pycache__/__init__.cpython-312.pyc delete mode 100644 accounts/__pycache__/admin.cpython-312.pyc delete mode 100644 accounts/__pycache__/apps.cpython-312.pyc delete mode 100644 accounts/__pycache__/models.cpython-312.pyc delete mode 100644 accounts/migrations/__pycache__/0001_initial.cpython-312.pyc delete mode 100644 accounts/migrations/__pycache__/__init__.cpython-312.pyc delete mode 100644 cheaper/__pycache__/__init__.cpython-312.pyc delete mode 100644 cheaper/__pycache__/settings.cpython-312.pyc delete mode 100644 cheaper/__pycache__/urls.cpython-312.pyc delete mode 100644 webscraper/ABC/__pycache__/base_scraper.cpython-311.pyc delete mode 100644 webscraper/ABC/__pycache__/base_scraper.cpython-39.pyc delete mode 100644 webscraper/api/__pycache__/EbayAPI.cpython-39.pyc delete mode 100644 webscraper/api/__pycache__/interface.cpython-311.pyc delete mode 100644 webscraper/api/__pycache__/interface.cpython-39.pyc delete mode 100644 webscraper/api/__pycache__/routes.cpython-311.pyc delete mode 100644 webscraper/api/__pycache__/routes.cpython-39.pyc delete mode 100644 webscraper/api/tests/__pycache__/test_ebay_api.cpython-39.pyc delete mode 100644 webscraper/api/tests/__pycache__/test_routes.cpython-311.pyc delete mode 100644 webscraper/api/tests/__pycache__/test_routes.cpython-39.pyc delete mode 100644 webscraper/src/__pycache__/CheaperScraper.cpython-39.pyc delete mode 100644 webscraper/src/__pycache__/Cheaper_Scraper.cpython-311.pyc delete mode 100644 webscraper/src/__pycache__/Cheaper_Scraper.cpython-39.pyc delete mode 100644 webscraper/src/__pycache__/__init__.cpython-311.pyc delete mode 100644 webscraper/src/__pycache__/__init__.cpython-39.pyc delete mode 100644 webscraper/src/__pycache__/robot_check.cpython-311.pyc delete mode 100644 webscraper/src/__pycache__/robot_check.cpython-39.pyc delete mode 100644 webscraper/src/__pycache__/test_cheaper_scraper.cpython-311.pyc delete mode 100644 webscraper/src/tests/__pycache__/__init__.cpython-39.pyc delete mode 100644 webscraper/src/tests/__pycache__/test_cheaper_scraper.cpython-39.pyc diff --git a/accounts/__pycache__/__init__.cpython-312.pyc b/accounts/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 228acde35414ce7e530eaf86e48073795d3b96e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmX@j%ge<81jcpT86f&Gh(HIQS%4zb87dhx8U0o=6fpsLpFwJV={j4*gche36~`23 zWR@l7WyU0Dq$U=m7R4kcC+C;ul@!Os$7kkcmc+;F6;$5hu*uC&Da}c>D`ExeW(4A5 P5aS~=BO_xGGmr%UAG9F1 diff --git a/accounts/__pycache__/admin.cpython-312.pyc b/accounts/__pycache__/admin.cpython-312.pyc deleted file mode 100644 index 5a69a0d7bc8ce137a4c30b04b5eaa208c248ff17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 186 zcmX@j%ge<81jcpT8BRd@F^B^LOi;#W0U%>KLkdF*V-7mQTYM>5iFxVyddc~DB}JJ@Ma)12D;Yk6)cw+Owu%WYPAw{qDbC0&OU%oR zNzO=3EJ!ViNlZ@8FU>0{jscsaS5SG2!zMRBr8Fniu80Gul@W-GL5vT~jEs!;7!-=w GfE)m|7A=PW diff --git a/accounts/__pycache__/apps.cpython-312.pyc b/accounts/__pycache__/apps.cpython-312.pyc deleted file mode 100644 index 33636a426078c6fb547d2b21dd215d8398646f2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmXv~ze~eF6n-yBrS=yhT5xc15wc`)5fPzQbnE6|2pnhb+D6hO<{F_6g3v#}t>Awk z{wXew<-p0wO^7Z|-X-Y`?|tvS@4b8Xy|vp7Q0L&GIeu38Qx~gKt3bZ5zycUB3}J#U zA{cN1%$Nf+Ilh{u&NXJ1UHj67jdH!0B>gxV1|z?u%ZOExZz-?<4lXiq4Ti4C4A+{O zwk10~-;c9sD$4%*U3NpGQS7j5XA(0W3g)S-c57_%zGqC$~^$RK$UH=x%a(Dm$ diff --git a/accounts/__pycache__/models.cpython-312.pyc b/accounts/__pycache__/models.cpython-312.pyc deleted file mode 100644 index 8e8be97b3da4ee2df348a2e38fa0660d4741e389..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1951 zcmbtV&rcgi6rS;V?e!0^D3k^;vD-A2T)?G7L7`2eMueoT3aZ+s2iNIpyF0{2>$Nkx zrm;&Zx8eXN;8I_61i>MHMx|araRu5EDN;|qMKQhf)c3|V7=+YHebRpO=FOWoZ{GWM z_qVRDAOW$x;Y>jy=SgBa8#Ihvvrb&u)ENhwL_lIcx(4ev5Z$sTf- z81gbPe2gxH+o4XzZ8!xbtcdmL* zR!bxy&y~l&{YD!r-x^Dek4+`j%Ohj=M?UJXz%-p~&F}v(G5YxJ^6Q^ii+Ghd%V}9N zKA-0~%}Kg6UXIQPi>_H#-ihmZ%h9q{+%9N3vy%zQ^>F6O;H+mj-Z$ZKWr$Q{ZkGt9 z7Bt6U+_Ldn@%Y~((;uYo*^Jw1JCj}1tZZ7(Fs;CNTGRD>(Q@o`v%1Mb$?X<7X%16G zERMazqS#Xa74o9*Ze{i`)U|eP_1gOEldH8*;;?&o_u|!O-IKe@z+I+7{(K zFr4BSa!c?l2}+fmaBGR2$F6oNl$0RcT*4#j>B^$ETh#U1%$&E8XmK6_bY;%ylJI`8B`ALb27Upc zGYh|}+74IMa&KoIEhBEUvGf&k5b0ejuar41u|K}VEsXO&wVF&L6 zsN?6m{tLkW=)LR3ew=N-sCGHhIx^X6`b9XZqv@s9(ynr$-E=+-s~lZ;3;}D%-$Zy9 zz?BO;t20-*_r+(;_6F^Ik?Tw?a#NhfFQG3ox!K;!s38o%V}A$$?F|jBOzww<_CiBX z>{@7~a{C}0#fC@s!qH7nEj$A4?uoDWS7RHo&FNatc;(XuG`q=65e?q|fU%%i5AsRl zyCwK1 wD5cLy^f{UMg9KiA{q*KhpF#)M->Hsnj2;nCkNSLcU}b*ITs8k9po%K|1B_Lbf&c&j diff --git a/accounts/migrations/__pycache__/0001_initial.cpython-312.pyc b/accounts/migrations/__pycache__/0001_initial.cpython-312.pyc deleted file mode 100644 index 2a79d5d02dca8f67e948d8c49ec06d254c7a7005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1348 zcmb7EF>KpL6uqM;ilS(TQf#YID`$w&hB6$u*%G8KQnztiBtelh9S8vg&AUi+DN;F# zZq>ypkfF$wsa2=Wg*|xm*fBsC3J@UUrU0F^33Y-1nR-WxkPS2l@(J9%yL=c}AFz_2d06`bDp#j^1AwVF2Er5i_0A(=Tky58wzt8sL zW@LJzo*i?j3sh-4O=5K&-wUYJ_7Qdin=hqSn1Yihkc(nqKm-f{K_k-yhA04>-BDBW ztVaUMu(jNdHk(Tkg6tDf_CVSfleq^1%Ejzb%9-^@KFIGgZElRGypdNp!&774LgIJ2 zMRTWlP4QrUUr5%O$N%SY?j3W{V(q2VstHC#1P@B79?RzZ8?#wB6J=%=Wm7QJ-lD!l z^S9HR`Oy&5*d`UpZAE^L$=< z;9wU8v~Ztof5W!@(CgAHZd;B!zLM~GHBc$^oQEN%a>ojSAAEwwh)v(o=csJPVVEXW zOp_I3=wgOd(|j0OE)R{3a*pS8S@2XvxPv`}J=?(n;l)i0n{l?cc^MO4TU7nbY2IMx zaFd5d^P4S;Bv8J8_f~?GFL;Dg?04|=HT(%q*aqPB_04Myo>0&TTF$QJISspoEk+2tz(+DqjdW65jxZxo9mo<;U^ZC-Ft%(R1q(`?VGRR-}MH$J<19|zl zSbbhxjLP+=yQ6Y_P_7?|&sHMCj65^|jkIgW#rL9W zz5n5;S|3#FhugzyGF$8K^>_c+`+e`|;_$*oqpBew!>4Smgq% zgX-!b`DHYPcdtK^uN_~ zmU*;ec}@Q^+K%rmzNX}uKH{{Pt20F9>q!M{kX1J1e}Lcv)=V-G!dDW2`U|N7rKieB OTN!98F993G-v0pu2Td6O diff --git a/accounts/migrations/__pycache__/__init__.cpython-312.pyc b/accounts/migrations/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index f9a196d9eac3cda52e8cb30d23253d0034500671..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmX@j%ge<81jcpT86f&Gh(HIQS%4zb87dhx8U0o=6fpsLpFwJVSvXt8gche36~`23 zWR@l7WyU0Dq$U=m7R4kcC+C;ul@!P1W~LV36q~FM2Qrlkw>L9kLaN(4~0G0`-UD`ZH33Mlkv@Hx;5}| zB6nwJ$;1Hiib3QPLoG@SwdnaARlsdk=L|Bqv$JNix%T3CMHlE zC2#=E*ini?$yXkQ7H7~bN`ciZIyZQx2hZ~g-SUY^bU~a&b7Bhoor7N*WyJI7qIhBN zQueaE0NaWbwq(6!Fa%qcqPGaMX_!p2jpYtDnT}~};ikn#BCA-(rfgxvZ0s@fXn
  • WYxVa&{)yB+bS5+BRAr@n7o@__f5jet%$?V8# z7nA?v%fy=#j{a~@G)p_as%*9G!g4c$LoIrhb#wJvy`EpBczJ#V=zg;n94OcpD{gVk? zY}9US*Hnp}8?jhe>!{Fi>;}NGj>bK~76#2%AE}9x8Wh6!mIU3>grE$QWWDynG|g!% z*2LS;5te;pWP4nMZl2Dtck^f8o-#hp%^85PF6(oG%Uu2`UoJSlLa`<|A+B1L2D4zL zS}#`0f}I(sVVATNR_=5lcY}j*f(UQQUDZ0SS+sGI6|$`=7QSsqKscIbJx+ixuNKR^ z<12G(ya|^+Wj~n;d{7M?nUGz>L=xN%3L3a$8w8u2<+fwj!h)hHs_Yi|v!R7y+K)b# zX-&};t*e!=-m=;!_^&?}KP>+0D8>_l#~({j?rPXnnx`53SYPZC$J?mq?I7IX&;&XA z(-AFXQZo=%3A?Pcph=7s1*@o>opXYc1lO}9Il&HGf~vA%dLgw=NRr%(!sZlHCE9Dg@T<6!SC9cj3PI6sXExPulVxDs=$q5&@I_J6- zoDA2fKar}OAgotv1?d@ADuS{C1sE@J<<$na%1il5fd|6k8ZU_zD49?L0xmAyFFOHu zRu>`iIxy#5?@p?~uW*f0T>|Ecv{K|tgGb>;b}qL0V% zTZ`@NIiZJ;U3&!{x}mP!JvKXH&^50aUmAMPjT zkNn;w*!TxFm#FZ}+oag{dH@$1EUJ@>ZzdPD;o^M!6VF>J)4xv5W_t0%*laI+7@g^b Z4k743KSm|yAkYYP;qE?_GOs}{{sovnIFtYY diff --git a/cheaper/__pycache__/urls.cpython-312.pyc b/cheaper/__pycache__/urls.cpython-312.pyc deleted file mode 100644 index 8e8320550521d24a26370766e04eefe743023dcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1008 zcmb7Dzi-qq6n1jCw&Z9F8v}z8LoU)a5tX_`g$h+vR6-1hE~k^OzQlL&DYhfqDI7y3 zHby$#-+=g27}+8*F|oC(SeUT$106_6U@7r?PtV``-uLWJo0~4s>(+TMz1;!et8v=p zG{*Hv8%vOYAxNym&MayVZOho5tV5llV*wjrCvmVnuh3e6dY|9?-8bGxyN=DQ;rgQM zuc31ta8F)5gE41QGAjg9gflqh0>&vuITkP%e2!xkxbDjo!_z`!IZ_G>CQo5Tq=JGM z3QMR_Bvc%p5&TL9@JK^YE-)laqtO~S&oGi0N{k~H>Xj;$%P0&J9?Kw^BR1o0xtP-s zvv4oi4HeHxEJKqV>hdylpS(s?W68)pDp*`muF6)R4+8i&Ng!g7(3}euK{yqhLb@2E zJa2+E%_@Jl$u}LC239)MM|HDl-}44dUn!?}02!kAp=WH*cMmfp<<3MmmaL%ujRjXJ z7KTVrF>dKR)mZ<-#^eV`jtxlP|AWyni?bpjY^Fu1>Y3Kegj;=%D`B9fqQ_%$ao>m2 zM#`v`s~$&S1aC<;xr0iSe`Y($_$<@{wv{{+sBk^scfXk%>04zNC6q92I7aa|Yn2;5 z_czM*@mSxF@wnV-DCtg=AQPb<4k&voJcW5Wr6Y;LrDKSfy_I2p0N1A0kN#maI+0k& zkxa=MVr0}@^}~sPPnc);6ZKUs6#xJL diff --git a/webscraper/ABC/__pycache__/base_scraper.cpython-311.pyc b/webscraper/ABC/__pycache__/base_scraper.cpython-311.pyc deleted file mode 100644 index 2dc46e32476c327c6e1d9afa561b42332605f8cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2390 zcma)7J!~9B6rTM%pU*xZwiW(_G?Ihh5cmo@3q^{t0+x(H`Dw0THQt@|P1v8y%pBIa zKq*{M(uIP;MHGxek%A%;4JD#Vfl#y+5;SyY83`#>-kZH!-};Am?)J^RnfKnl_q{i7 zzi&1h1jgS#H@YhxA%7t=9>AM%con9*BqX5~lf>#+iQTa+V=g9WSYMY8J7{ zMnCLEAUkbjfmUQ2CuAESJHsn-@QxYoR`(*iVrTY*omqoYGoM*u zieC>T>v5UaH-Yi{GR_-)#ih@-c&c+Rz zRA(d872zY-m+4IigPJfX6o5##P)CFimWT$EzEv!kfZ<&t;Z&ql@gPe>g{s?3Xu8Su zHs>jo{C1x!txDaEA4tp1UB%-_V!6v1B(p#if`*YiU1_6Fs(mZ#vh+)Fiw#)XUghcw zo%Py5mt!K@+kA6`SsTi?ZNeXIEcFI?-S-6`?E5!3>^XbnKoNM;FTRP}fuA`w9DboX3YL%||rm@MQF!U&C* zkRc`|bInxPvD|-r zlUx9zFn&tq1(KLRQlWXGid5o_MC)gO^a{jT1}pA zoL`E5Lz8~2MK8u~0E*|r$4D;Iad6|hGIz7MAZ1j~hX|WL_I){^3G4N+I~e;2H-IGM z7(B@pxH@sqD^>OSalmSYCp&YKWmW98Dv-6Bc$HJ=gub6Qd_T#;evIo`-@n~wad9HC zcjONAFR0fzV_MFkl_?|_k>K}JzJ>&EzBFmUvNvflg)Xs_4MAJ#0LY#4_op{MwCi4T zZ+=K%dbnt&N8C)mx@I~e2M(z%?0#-Eh6}JB+S6Y1TTp^&@9q8f@4aW1N2JsMf#JpD z8khFez1ESiS)HM=x;Ovbni1H)w67knKAQh&ZU3v^-?{vM>gbj^FVH|BHd^)EVVi-( zFIRzXO%E{t1(XIw1FwOt3gy%K2Su7L%QrzCJE+Ql3?0j|o{+`Ir~RLhw;rGUAG&P| Sd^}0MSvhtqbXhCyv#fi>1QJoL65;`O3gw#}0K#favG9sJNFP_RvHS0M% z-Ck@)UV=Ge;njUHPuEr8KeJWpi^aL9cmSeWu)OTPU4Y_>SdID)=V zn$uio7ee#JiZ3@fEugp-Cgjb=Nxg2vI2M3v9Aot;2Z*(Qb$oiA!IP~3l&4oyoyjrC zBt{aYVc`08tDA=V4vx6LBmZI?D1Y(tUko3^Y zLttCq+~+PVI}}G(cZVpNQ-mUwzhoghOm9b`jQgbkj^Ag=GjhOLKG zX{W~slvJU*RN@mv>)!zB-fbWm?+?BOk~syCe9W=h9i@+5w;@H7YfvA_Mta-Ty1Z5RIh|qEDpGGjp-8853Y1q1SnMmvro!>yO5t+`3v2Prs Wt=pWm;iE2!$Jk=b@8FJo?EDW_amjT6 diff --git a/webscraper/api/__pycache__/EbayAPI.cpython-39.pyc b/webscraper/api/__pycache__/EbayAPI.cpython-39.pyc deleted file mode 100644 index d50d9222694db4fe6f2d9bc0bd46adbd3a4dcbeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1652 zcmZuxPjA~c6elT4mSsCj(zWYhD?Dr$9};IncPWNpOQ~5sV(-b0mtv)$$M+tk_xJZGI-P*PdieXwAo2j3V!(&X9+^=4tANuHxr}lAnm=(!C(kJ!hdO=?>|6@4yP# z?$N6AVt4oDrZ7qTbYushXr;N3k<6{iPGbD(?pj2#30g%$DoMzcbHydSrr-}b2AroF z%2VjimyYBYBy6fc1=77_(vyt~9=46A{$p*Lj{CYwi0 zKeG)PoYOaSLVqDUgcI8s7nDpLO3LMl^9HoPLQ$vAYbOh4`v%zn4TRm=F25UCTbL*P zz9^D)BQm+4pRFs%Wj)S^{X{}4i5>S(zUk)z3j1x}=0_^KX>a8jRMxKTjtfz}Qio}R9~%Jpz}^4eh0=S*Dv{d3PGZ&GsoFQOuGNs^-W)dT#kjf;fYFIM zQPJHjR=}8f1cXpVJ?b$=*?Z3Ujpr|c?8D>HC0c%QYw4p_daP<;wdbiu8|V}^F; z%Y%IZ$}ArSrSi-)5Wplf1Y$~CZ?v~4Up@m(6OgcE?xlYO&aN31f z!89RoM32K|z@a+G^*FLxsVI>>rZKn5D})w9qcO?yUY6VLt9+En?gAjaMvVpi01dW~ ze1ZfUtFaAw2}sY=pCSJc3EXf*uOg{Gx`!Nge@5;DS3Owt0}&qGV&*G2GhHAA8VHSL zK;Lt>Ztg!`P&bwZ*w{z^YwQPxwtMZ$kD^QrRTNc06b*AZN|A3z(eX&6^Anbv$^$^d zbr`P9hjDgEA>zZ%T$M-^H3CC-kYF(?2gXEyj^cmW)f}c+7Y#?iU}b%XI$(k0uhx2~ vDONJ<+z#D34r*;5?(q6{)_5E1E)pEYkGZJ)?`LWKfPJ3%p>244$7BBj!?UX( diff --git a/webscraper/api/__pycache__/interface.cpython-311.pyc b/webscraper/api/__pycache__/interface.cpython-311.pyc deleted file mode 100644 index 1b9240df3ae7246cb2a435a5ae08e7c777ab75f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 zcmZuvF>ll`6n=J`>-E%BNJU6&kqW~}=pw;}5U6lc)#U`LSTYd#VjoG#C0E;5)J`34 z;2)Hc0ToaeegVIM5qUsJOl+x+sS|c`O$D5je17lw<$d3?{lW7(V8-n)o#eZje_H2q zxC>)`*BB?jfT0Y=C`4l%Vgwkrf#Df2hoe&m;LLpW2pvXtq3iy#ZWn83>+uu4PKQzn z8mlo^Nx|YpZZ$Pb_l*>x;uDBS{m}_@JRU&mua5WWqjGNy8kg=`qdCP$55gFb1sJERS@Z6_>6yPa~?z%i69SoPkJxp837 zZR>Uv<#f!WNOz)WT(D_o?X@V{pVF*e5ya$bVq4daIWkRH8Y|(MsIZqstXo*KU^lG- zyM?lE;JA5yxEm$LuJ?|8y!SpW!I+=>)pP~t4z#Y%UQ~Hk(VD>49(0Lz=r9(xex<9X v{9DFF`$65wLvh38*&~(D43rK+=o@T)UG|p5MP3R2!`sbs8~wdxsS@@FYDdQS diff --git a/webscraper/api/__pycache__/interface.cpython-39.pyc b/webscraper/api/__pycache__/interface.cpython-39.pyc deleted file mode 100644 index 652a24468547c6e33aa169c90a0d8aeac8b206ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 620 zcmZuu%}N6?5YEr`$6~eM$=e=!DM$|wW9WQ3`C8 zl2vz*-NP*8VV)@+&ZnV=I0;LLPW*GqUx9*rDk~O6);7!6>GfIMPr=EG zl?I;cbew63A7E0V$e1s(INRv$E*?$m7Bu_eV1jGzFqPL$SM425cK<&Zb?TWP2IQDBHzclmGuAs diff --git a/webscraper/api/__pycache__/routes.cpython-311.pyc b/webscraper/api/__pycache__/routes.cpython-311.pyc deleted file mode 100644 index 5e18603640a055ecbe54704be8c8611da39954eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1855 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 HAPDL&=E3_p diff --git a/webscraper/api/tests/__pycache__/test_routes.cpython-39.pyc b/webscraper/api/tests/__pycache__/test_routes.cpython-39.pyc deleted file mode 100644 index 30bd6efa19e23d94d94af5f98347aeabc74e9c11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1381 zcmb_c%We}f6t(9~l0JB}AXY)FB0(ZHEGiyF1)**tM2nC{kt{Pd$%M(wU^_)bVMRZH zPe_*i3zmGtY+030=!$!1N*kh<6_$KG*YWG5* zpMl@#cL%241YyXG&dHQ8@H{0$i`jyJ2dlf^aunVS>)^w%D2Zii3a?s2A2;K)54k&9 zChw1k^5F8x*7L32&Oq{9s-8BICuXo08`=9L-|0w|+dPkZXst`hRGDNu|6I6Qnm0MR z(a12NH9A?}Kf}>3kN-l0`QgrpcP82%67c?H+jwBNTRDnxf9Nmdd>NIOa)F*M^(1W>F?&5mYC; zY2gTN_>rYtvCBxIfID-oJKMXp!#g6Gc0c$nG4C-TqNUwC$RuN%-{xiTx8?UC2X8qbX$HAFqU#? z4p!6{8)agg;CF*DY`yA41(@)46c|I@L~-6`1TfxN-hk+wfZ3)e|lM21S7B?{Mg7bgOQGC>->0QRpIgROS8z|2tKD+OV!| G1oSu4!A*|< diff --git a/webscraper/src/__pycache__/CheaperScraper.cpython-39.pyc b/webscraper/src/__pycache__/CheaperScraper.cpython-39.pyc deleted file mode 100644 index f60b0919a273978eff6938c1420d30507c94d373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1925 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 InaR8U_hu*z+W-In diff --git a/webscraper/src/__pycache__/__init__.cpython-311.pyc b/webscraper/src/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index c420941df3fb20175a9987d71633081ae7b7d1fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmZ3^%ge<81W$HzWmp60#~=<2FhUuh*?^4c3@Hr344RC7D;bKIfc(!O$zOK*p~b01 z#rj$K8HssinOTXIiFx`ism0kP`33sP8L5c{sYUwbsY%7jMPO!eQL=t~d}dx|NqoFs nLFF$Fo80`A(wtPgB37VrAPbB6fy4)9Mn=XD3^1aI87Kw-N4P2+ diff --git a/webscraper/src/__pycache__/__init__.cpython-39.pyc b/webscraper/src/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 15bd8faada647383e48003ed286415bcf2e8ddf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140 zcmYe~<>g`kf>#IlGpvF1V-N=!FakLaKwQiMBvKfH88jLFRx%WUgb~CqLl>(U=Zw_E zg4Cjz;*!+FoRW;-%#zfY^3sStyIfQkRaK`wzzVq&6=-I=qZ^35){K%&m>{N9`QHSfK7AI8UXfa}MXT;)9h z_%08_rJXW^Ib=HEgHHljB_%>Yfk)sgTi~m^3cx<@bd?leTLxSIDUUW0=F>*G5kIU3 z?1{@G#=TR!gs7*7!F6Ohz@S8YzzAduN~%BNt4v$Lcw2f&_jQaqD#m2E2NmYky`i&= zArqD7L5$FW7z-J$HhGI_zf*Qmwx7w{K+o~DjNi!$8Tw1Qi+ev45NIptpWW{Rrlu@y zTynUqH7dkwv8{2b7x_d)n@R0L39|9HW_zbvvTC|gpIhDCP7i@)eFsaVNhBP zt1+b;6It&HLz(PbbO&J*zE0oTTkFm(r2oP6VsCnJTk9EDkBvOykuh^<%p4e2&#=0N zbv$)rTYF<}<2OKeI3bQ0;Vf?P&^zD4>|y57r~_@NN$X_oWKADRBt?tNzfCUA7Pgrz z*(x7JJ2B?DAzfjyS4moCD_qX8(3);siDU@N;&~)|0%2qFtoF<=>GU;gH*%E z(Nt*VMk7dW{|HHtG#wpvT!MV#=rO`(_VpE2zuAWja*94r`XF)VSxWzp={+(!_DM|O zJO$NqA(_E+1e2*uuIE?K>MXAl<8E5aJwAmB`8LrqLSH3>97Cad@$YK}k*WP1e2t=Fi?vv z6p7AEs?+bNd%C~v6+L}G*n==&(2L5HA4?{+GmhCW$RnJG4Spk{Kg2a|K$3sJ8*vK= z8$tU-1Hp;O`tZy$OE>mke4biC=ffzb)#QB^)2g|VG7P1hFZ8P6 zcqHYgm1?>__K-?LI$JE7h`!g68`;=)cdL#GXPEUYXGlSDN>gv@**H$IyQp|~vEYAL QA$!pgc}efP(=if%0cQQG)c^nh diff --git a/webscraper/src/__pycache__/test_cheaper_scraper.cpython-311.pyc b/webscraper/src/__pycache__/test_cheaper_scraper.cpython-311.pyc deleted file mode 100644 index ef900b29243dac5929afcc899b75d04ae9a130da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2581 zcmbVO%}*Og6rWk|nhAxt+mv8XNeK{&P$K0+Dv?UK__A8OOAHv>omsbv zNh-%Fq*@3Nd7A>>c2bcz-zM+HzeiA5}$CmDPzdAhD-6iO8GkXVroVyQM+h5mlo z0c|g=WmH?Uv^527TvrHqMgvE(1Ik{fLMV)|AfH6^FKnGpQ19wo&NfRnU&wNNWkYXJ zXiz!21Ii{u&QObF6pL<Ultf-^!Q17QP^ChSBp8b@ZHL)`NAxuAJ}5eDVEY%AB^<(_EOM0EqFHVz*>yJ zW(0;*>4m2W+gU7C;@xXaNedDou7jwNKL&3#C%$9j+s=kZia%sNkNE zsH}prNvfm)@9t71t6{HI$vpZruxD2}kLFoyVNU>}yUP4AO(#^Z*AxJb^Ng2m-UFe$ zC@(G*9pPQcngwIocCtCnpxwukh+TVKJ&4`hkKJsHw_=lSY_hHbLkDbRpN(u;Z|7QU%4JhcHif+Pzv_SU ze9LLE371VYJNG+i`WZ&~zcihqHY5VVg#~~I%1=HdFBKr^!X&9G4sPq9TtpYY3dVpW zJ^;F>l}rxFg6Zw4`4!J`uM&+-gwZ`6Rw`9M^6Y_ervT@(q+kJ=Y9t{zriqYGSTN0v*Hxo7iQ9ha9>D_ zMXSnrkT0jkqKK$p{tHcBH274&}!4&v46vHS!MllXz zm&h>kbHVY%kwOJUEP<$nS6ijp1KK91WRz;N*bs&$@!at^EVazM;HtKPl|uOGs%YuDJa)4f#FmP#yg`kf>#IlGgN`}V-N=!FakLaKwQiMBvKfH88jLFRx%WUgb~Cqa~G=^=Zw_E zg4Cjz;*!+FoRW;-%#zfY^3+%OniK1US>&ryk0@&Ee@O9{FKt1 MR6CG?pMjVG0QpEGcK`qY diff --git a/webscraper/src/tests/__pycache__/test_cheaper_scraper.cpython-39.pyc b/webscraper/src/tests/__pycache__/test_cheaper_scraper.cpython-39.pyc deleted file mode 100644 index e24870d9bcc0ad6d0a043831980843244f40a943..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1597 zcma)+%}yIJ5P)s(PnHm%rJ@85J(E@nQdRYUP=!RLic2og%PNw!tW5)Kc2nC?)hJvF z4-$^NMW4ghp4vy?)EV!Fp8!?8+VS{jJo9;MCkqR80_D%orQQ#ZkYCuiTYPBjz^}JJ z2qI`kVysz4`z&UZd?LaV{sj@fBq!dv7yB|0!6{SkC7Fbmgo4dJX@$SRo^)E&F7EbZ zGLULNRam9if44Ab?7*+zfsiDog2YTv!7fPbmA+zM1R{iXAZj9lIuvuF4s}h;gRh2N zK9JhX_@S`ew4jcDcH!5HAPhu#PRE3UH&}snM(aIe26}6A^ROsRb=wr$#oJDcev2tI zwzaZLT~X_6nH^mbRfGQP-H%({%6V5CnPjH7e{5v;n>?&6x>}`O12JkRd0K7>uZG)$ z?>5lVd>(`tAUY#-)O-llc9YUsv;gKiv?eHHGJ*eup0J50=p}rR5`es7ool+;@@+lQ zS}Jp(hEid=<4_fch0*a`n&kXQnzW~IMF&@k2%5Hu0Q_bSS4Cm?AThl;7@Y?F=8>SE zvb)ED&=`&5*Z>6>$b=%n86;}L#?*M1Z~#H~1+-9i$@4mD9_EjN?Vjmpt-wLqz=7Cj zCG4Kw%e6`JR9a6PWuvM)huq?xTOVy_iC10ZZXvFu8LC`!oYw#gjb?;4;2XVu3i_ex zJ!TJ9_y;raBPTs$!0e5g@u$oRFL6bx@I2dKkSNIN66$_-tWC>vU}_nALM8PuGmrB* z%NstleGWGN#rM$kX}-6xsGwh5HZij|WN_KXtja7<3c5xfCym4EzF>R~Rjq(lk>VDZ zo>nh$5bx!kqr2h~Sz2?*|1gDQN}Q?jXcHQiiQIT9k+Y_qR%9d2^Q131w{_0@g&1b2 zH#q+~OtNxB;nh$JC|;mgMX`qBHbAFg6l!`LG-fwqkq2K81+E{x^^@bA^Hwd6hWW8U zr1;hC8`Fk2rd>Tle7}5b%XcesR0$jp^q|&3SRWUAED9TKmn(FR*?M)WVV C+Jt)m From 59249db265a3098796de4607de367c80869ca2bf Mon Sep 17 00:00:00 2001 From: James Cacapit Date: Tue, 29 Apr 2025 22:02:02 -0700 Subject: [PATCH 3/7] removing testing method in main --- .gitignore | 2 ++ webscraper/main.py | 7 +++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 03bd412..5aeb0f4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ *.env +*.pyc +__pycache__/ \ No newline at end of file diff --git a/webscraper/main.py b/webscraper/main.py index 494774d..1534774 100644 --- a/webscraper/main.py +++ b/webscraper/main.py @@ -6,12 +6,11 @@ def main(): - EbayAPI.retrieve_ebay_response("https://api.sandbox.ebay.com/commerce/taxonomy/v1/category_tree/0",'batteries') # Set up the scraper for a simple legal-to-scrape website - # scraper = CheaperScraper("https://books.toscrape.com", - # user_agent="CheaperBot/0.1", - # delay=2.0) + scraper = CheaperScraper("https://books.toscrape.com", + user_agent="CheaperBot/0.1", + delay=2.0) # Define which pages you want to scrape (you can use "/" for homepage) pages = ["/"] From 50414e43fca892b561a19c9140354f261089b8a2 Mon Sep 17 00:00:00 2001 From: James Cacapit Date: Tue, 29 Apr 2025 22:09:53 -0700 Subject: [PATCH 4/7] reset pyc and pycache files --- .env | 0 .github/workflows/python-package-conda.yml | 37 ------ .gitignore | 3 - .vscode/settings.json | 14 -- CheaperUMLDiagram.png | Bin 72985 -> 0 bytes README.md | 27 ---- accounts/__init__.py | 0 accounts/admin.py | 3 - accounts/apps.py | 6 - accounts/migrations/0001_initial.py | 31 ----- accounts/migrations/__init__.py | 0 accounts/models.py | 31 ----- accounts/tests.py | 3 - accounts/views.py | 3 - cheaper/__init__.py | 0 cheaper/asgi.py | 16 --- cheaper/settings.py | 123 ------------------ cheaper/urls.py | 22 ---- cheaper/wsgi.py | 16 --- cloud_analysis/Right_Database.md | 16 --- cloud_analysis/SQL vs NoSQL/RvNonR.puml | 32 ----- cloud_analysis/SQL vs NoSQL/RvnonR.png | Bin 104189 -> 0 bytes .../all_comparison.png | Bin 135490 -> 0 bytes .../all_comparison.puml | 44 ------- db.sqlite3 | Bin 143360 -> 0 bytes environment.yml | 14 -- manage.py | 22 ---- output.json | 24 ---- webscraper/ABC/Ebay_API.py | 15 --- webscraper/ABC/base_scraper.py | 51 -------- webscraper/api/EbayAPI.py | 55 -------- webscraper/api/interface.py | 8 -- webscraper/api/routes.py | 26 ---- webscraper/api/tests/test_ebay_api.py | 35 ----- webscraper/api/tests/test_routes.py | 26 ---- webscraper/main.py | 31 ----- webscraper/output.json | 24 ---- webscraper/package.json | 0 webscraper/src/Cheaper_Scraper.py | 97 -------------- webscraper/src/__init__.py | 1 - webscraper/src/robot_check.py | 11 -- webscraper/src/tests/__init__.py | 1 - webscraper/src/tests/test_cheaper_scraper.py | 29 ----- 43 files changed, 897 deletions(-) delete mode 100644 .env delete mode 100644 .github/workflows/python-package-conda.yml delete mode 100644 .gitignore delete mode 100644 .vscode/settings.json delete mode 100644 CheaperUMLDiagram.png delete mode 100644 README.md delete mode 100644 accounts/__init__.py delete mode 100644 accounts/admin.py delete mode 100644 accounts/apps.py delete mode 100644 accounts/migrations/0001_initial.py delete mode 100644 accounts/migrations/__init__.py delete mode 100644 accounts/models.py delete mode 100644 accounts/tests.py delete mode 100644 accounts/views.py delete mode 100644 cheaper/__init__.py delete mode 100644 cheaper/asgi.py delete mode 100644 cheaper/settings.py delete mode 100644 cheaper/urls.py delete mode 100644 cheaper/wsgi.py delete mode 100644 cloud_analysis/Right_Database.md delete mode 100644 cloud_analysis/SQL vs NoSQL/RvNonR.puml delete mode 100644 cloud_analysis/SQL vs NoSQL/RvnonR.png delete mode 100644 cloud_analysis/database host comparison/all_comparison.png delete mode 100644 cloud_analysis/database host comparison/all_comparison.puml delete mode 100644 db.sqlite3 delete mode 100644 environment.yml delete mode 100644 manage.py delete mode 100644 output.json delete mode 100644 webscraper/ABC/Ebay_API.py delete mode 100644 webscraper/ABC/base_scraper.py delete mode 100644 webscraper/api/EbayAPI.py delete mode 100644 webscraper/api/interface.py delete mode 100644 webscraper/api/routes.py delete mode 100644 webscraper/api/tests/test_ebay_api.py delete mode 100644 webscraper/api/tests/test_routes.py delete mode 100644 webscraper/main.py delete mode 100644 webscraper/output.json delete mode 100644 webscraper/package.json delete mode 100644 webscraper/src/Cheaper_Scraper.py delete mode 100644 webscraper/src/__init__.py delete mode 100644 webscraper/src/robot_check.py delete mode 100644 webscraper/src/tests/__init__.py delete mode 100644 webscraper/src/tests/test_cheaper_scraper.py diff --git a/.env b/.env deleted file mode 100644 index e69de29..0000000 diff --git a/.github/workflows/python-package-conda.yml b/.github/workflows/python-package-conda.yml deleted file mode 100644 index cb0cdb9..0000000 --- a/.github/workflows/python-package-conda.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Python Package using Conda - -on: [push] - -jobs: - build-linux: - runs-on: ubuntu-latest - strategy: - max-parallel: 5 - - steps: - - uses: actions/checkout@v4 - - name: Set up Python 3.10 - uses: actions/setup-python@v3 - with: - python-version: '3.10' - - name: Add conda to system path - run: | - # $CONDA is an environment variable pointing to the root of the miniconda directory - echo $CONDA/bin >> $GITHUB_PATH - - name: Install dependencies - run: | - conda env update --file environment.yml --name base - - name: Lint with flake8 - run: | - conda install flake8 - # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: Run unittest files by path - run: | - shopt -s nullglob - for i in src/tests/test_*.py; do - echo " RUNNING $i " - python "$i" || exit 1 - done diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 5aeb0f4..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.env -*.pyc -__pycache__/ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index b2d293c..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "python.analysis.extraPaths": [ - "./webscraper/ABC" - ], - "python.testing.unittestArgs": [ - "-v", - "-s", - "./webscraper", - "-p", - "*test*.py" - ], - "python.testing.pytestEnabled": false, - "python.testing.unittestEnabled": true -} \ No newline at end of file diff --git a/CheaperUMLDiagram.png b/CheaperUMLDiagram.png deleted file mode 100644 index 41939541261387eca00b13e99bfbafc06f2cee50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72985 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 D)V(Fz diff --git a/README.md b/README.md deleted file mode 100644 index 3362b30..0000000 --- a/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Cheaper.com -Initial Landing page![Initial Landing page](https://github.com/user-attachments/assets/7d2a1c73-0d16-4965-a2f8-4402ef267ff4) - - - - - -##Technical Documentation of how to run the application - -#How to run - --To run the scraper, execute the main.py script by running the command - -python main.py - --Make sure you are in the src directory when you run the command (the directory that contains main.py). - -##Where is the entry point? - --The entry point is the main() in main.py, specifically, this block of code, -if __name__ == "__main__": - main() - - -##what file needs to be located and what variables would need to be changed if you wanted to scrape another website? - --If you wanted to scrape another website, you need to locate the file main.py and change the variables “scraper” and “pages” to whatever website you wanted and the new URl paths. As well ensure the website allows scraping. diff --git a/accounts/__init__.py b/accounts/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/accounts/admin.py b/accounts/admin.py deleted file mode 100644 index 8c38f3f..0000000 --- a/accounts/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/accounts/apps.py b/accounts/apps.py deleted file mode 100644 index 3e3c765..0000000 --- a/accounts/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class AccountsConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'accounts' diff --git a/accounts/migrations/0001_initial.py b/accounts/migrations/0001_initial.py deleted file mode 100644 index 0b3e675..0000000 --- a/accounts/migrations/0001_initial.py +++ /dev/null @@ -1,31 +0,0 @@ -# Generated by Django 5.2 on 2025-04-25 21:54 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Product', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=200)), - ('price', models.CharField(max_length=10)), - ('source_url', models.URLField(max_length=150)), - ], - ), - migrations.CreateModel( - name='UserAccount', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('email', models.EmailField(max_length=50, unique=True)), - ('password', models.CharField(max_length=100)), - ], - ), - ] diff --git a/accounts/migrations/__init__.py b/accounts/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/accounts/models.py b/accounts/models.py deleted file mode 100644 index 3ff6537..0000000 --- a/accounts/models.py +++ /dev/null @@ -1,31 +0,0 @@ -from django.db import models -from django.core.exceptions import ValidationError -import re - -def validate_email(value): - - email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' - if not re.match(email_pattern, value): - raise ValidationError('Invalid email format.') - - if ' ' in value: - raise ValidationError('Email cannot contain spaces.') - - -class UserAccount(models.Model): - email = models.EmailField(max_length=50, unique=True) - password = models.CharField(max_length=100) - - def clean(self): - validate_email(self.email) - - def __str__(self): - return self.email - -class Product(models.Model): - name = models.CharField(max_length=200) - price = models.CharField(max_length=10) - source_url = models.URLField(max_length=150) - - def __str__(self): - return self.name \ No newline at end of file diff --git a/accounts/tests.py b/accounts/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/accounts/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/accounts/views.py b/accounts/views.py deleted file mode 100644 index 91ea44a..0000000 --- a/accounts/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/cheaper/__init__.py b/cheaper/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/cheaper/asgi.py b/cheaper/asgi.py deleted file mode 100644 index 2133002..0000000 --- a/cheaper/asgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -ASGI config for cheaper project. - -It exposes the ASGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/5.2/howto/deployment/asgi/ -""" - -import os - -from django.core.asgi import get_asgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cheaper.settings') - -application = get_asgi_application() diff --git a/cheaper/settings.py b/cheaper/settings.py deleted file mode 100644 index b7a0c09..0000000 --- a/cheaper/settings.py +++ /dev/null @@ -1,123 +0,0 @@ -""" -Django settings for cheaper project. - -Generated by 'django-admin startproject' using Django 5.2. - -For more information on this file, see -https://docs.djangoproject.com/en/5.2/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/5.2/ref/settings/ -""" - -from pathlib import Path - -# Build paths inside the project like this: BASE_DIR / 'subdir'. -BASE_DIR = Path(__file__).resolve().parent.parent - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure-qdsb1wl#sv2+8$7g+es&rzrovy02*m@^3!me**&z%gzstf^q4(' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - - -# Application definition - -INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'accounts', #custom user app -] - -MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'cheaper.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'cheaper.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/5.2/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': BASE_DIR / 'db.sqlite3', - } -} - - -# Password validation -# https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/5.2/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - -USE_I18N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/5.2/howto/static-files/ - -STATIC_URL = 'static/' - -# Default primary key field type -# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field - -DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/cheaper/urls.py b/cheaper/urls.py deleted file mode 100644 index 49e4fb1..0000000 --- a/cheaper/urls.py +++ /dev/null @@ -1,22 +0,0 @@ -""" -URL configuration for cheaper project. - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/5.2/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.contrib import admin -from django.urls import path - -urlpatterns = [ - path('admin/', admin.site.urls), -] diff --git a/cheaper/wsgi.py b/cheaper/wsgi.py deleted file mode 100644 index bf0a643..0000000 --- a/cheaper/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for cheaper project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/5.2/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cheaper.settings') - -application = get_wsgi_application() diff --git a/cloud_analysis/Right_Database.md b/cloud_analysis/Right_Database.md deleted file mode 100644 index 5b15ae8..0000000 --- a/cloud_analysis/Right_Database.md +++ /dev/null @@ -1,16 +0,0 @@ -**Review:** - -After going through the cloud database comparisons and the SQL vs NoSQL diagram, I feel like there’s no one-size-fits-all answer when it comes to picking a database. It really depends on what the project needs. - -From what I saw: - -* SQL options like PostgreSQL or AWS RDS are great when you want strong structure and need to run complex queries, especially when data integrity is super important. -* NoSQL ones like Firebase and MongoDB are better when you want to move fast, need flexibility, pluspoint Firebase can use GoogleAuth and you’re handling a lot of user data or something that doesn’t fit neatly into tables. -* Supabase kind of feels like a good middle ground – gives you SQL power with some of the ease of Firebase. - -What stood out to me is how important scalability, learning curve, and pricing are in real-life use. It’s not just about performance, but also how much time you’ll spend maintaining and tuning stuff. - -For me personally, I think using both SQL and NoSQL together can be a smart move. Like maybe SQL for structured things like accounts and payments, and NoSQL for stuff like chat or logs. Depends on the use case. - -This comparison really helped me understand what trade-offs exist between the systems and made me think more practically about tech choices. - diff --git a/cloud_analysis/SQL vs NoSQL/RvNonR.puml b/cloud_analysis/SQL vs NoSQL/RvNonR.puml deleted file mode 100644 index a507a6b..0000000 --- a/cloud_analysis/SQL vs NoSQL/RvNonR.puml +++ /dev/null @@ -1,32 +0,0 @@ -@startuml -skinparam padding 20 -skinparam backgroundColor #000000 -skinparam shadowing false -skinparam rectangle { - BackgroundColor Black - BorderColor White - FontColor White - RoundCorner 25 - FontSize 13 - MinWidth 250 - MinHeight 250 -} - -title "SQL vs NoSQL Databases: Pros & Cons" - -' Legend -rectangle "Legend\n\n+ = Advantage (Pro)\n- = Limitation (Con)" as Legend - -' SQL Databases -rectangle "SQL Databases\n\n+ Strong consistency (ACID compliance)\n+ Well-defined schemas\n+ Complex joins and transactions\n+ Proven reliability and stability\n+ Mature ecosystem and tools\n+ Better for structured data\n+ Standardized query language\n\n\n- Less flexible schema\n- Vertical scaling can be expensive\n- Performance challenges at huge scale\n- Schema changes can be disruptive\n- Harder to manage large volumes of unstructured data" as SQL - -' NoSQL Databases -rectangle "NoSQL Databases\n\n+ Flexible schema (schema-less)\n+ Horizontal scaling (sharding, clusters)\n+ High performance for large data volumes\n+ Easier to store unstructured/semi-structured data\n+ Typically faster read/write operations\n+ Strong integration with modern development practices\n\n\n- Eventual consistency (BASE model)\n- Limited support for complex queries/transactions\n- Varied querying methods (no standard query language)\n- Less mature ecosystem\n- Can lead to data duplication\n- May require more application-side logic" as NoSQL - -' Layout -left to right direction - -Legend -[hidden]-> SQL -SQL -[hidden]-> NoSQL - -@enduml diff --git a/cloud_analysis/SQL vs NoSQL/RvnonR.png b/cloud_analysis/SQL vs NoSQL/RvnonR.png deleted file mode 100644 index bc9968d10218dada6fa389a4c8c8581bf056ede1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104189 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

    G1Len6`)dKT0*A#A~FH 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%0Auo=<%&dyS!C1c2(uoe9UcRL3qK`%B9}Gh3xRDp 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

    28yaG5>UYgrY=TSJGA)5zTdB2 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 diff --git a/cloud_analysis/database host comparison/all_comparison.png b/cloud_analysis/database host comparison/all_comparison.png deleted file mode 100644 index f87ca638f5899dfe95f13bebdc5d6c518a8c5a6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135490 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 VMkb-v5s5tTWnyS%z|=o=;SVC0LC*jH diff --git a/cloud_analysis/database host comparison/all_comparison.puml b/cloud_analysis/database host comparison/all_comparison.puml deleted file mode 100644 index 2562b7f..0000000 --- a/cloud_analysis/database host comparison/all_comparison.puml +++ /dev/null @@ -1,44 +0,0 @@ -@startuml -skinparam padding 20 -skinparam backgroundColor #000000 -skinparam shadowing false -skinparam rectangle { - BackgroundColor Black - BorderColor White - FontColor White - RoundCorner 25 - FontSize 13 - MinWidth 220 - MinHeight 200 -} - -title "Cloud Database Host Comparison" - -' Legend -rectangle "Legend\n\n+ = Advantage (Pro)\n- = Limitation (Con)" as Legend - -' MongoDB Atlas -rectangle "MongoDB Atlas\n\n+ Scales well\n+ Flexible schema\n+ Global clusters\n\n+ Strong documentation\n- Complex query tuning\n- Index management needed\n- Learning curve for new users" as Mongo - -' AWS RDS -rectangle "AWS RDS\n\n+ Stable, high availability\n+ Fully managed SQL\n+ Supports PostgreSQL, MySQL, etc.\n+ Excellent for legacy systems\n\n- More complex to configure\n- Higher cost\n- Vendor lock-in" as RDS - -' Firebase -rectangle "Firebase\n\n+ Realtime data sync across clients\n+ Integrated with Google Cloud\n+ Great for mobile and web apps\n+ Built-in auth and analytics\n+ Offline support\n\n- Limited querying\n- No SQL support (uses NoSQL)\n- Complex pricing\n- Vendor lock-in\n- Less control over schema" as Firebase - -' Supabase -rectangle "Supabase\n\n+ Open-source Firebase alternative\n+ Full SQL (PostgreSQL)\n+ Real-time subscriptions\n+ Built-in auth & storage\n+ Self-host or managed\n\n- Smaller community\n- Can be slower at scale\n- Limited cloud regions\n- Fewer enterprise tools\n- Some hosted bugs" as Supabase - -' PostgreSQL -rectangle "PostgreSQL\n\n+ Advanced SQL capabilities\n+ Strong data integrity\n+ JSON support\n+ Highly extensible\n+ Open-source\n\n- Manual tuning often required\n- Heavier setup for scaling\n- Slower queries at high volume" as Postgres - -' Layout -left to right direction - -Legend -[hidden]-> Mongo -Mongo -[hidden]-> RDS -RDS -[hidden]-> Firebase -Firebase -[hidden]-> Supabase -Supabase -[hidden]-> Postgres - -@enduml diff --git a/db.sqlite3 b/db.sqlite3 deleted file mode 100644 index 9a49d22ab3f896c38adf97e853d85697d0dfef76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143360 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 diff --git a/environment.yml b/environment.yml deleted file mode 100644 index 1a6ff6f..0000000 --- a/environment.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: myenv -channels: - - defaults - - conda-forge -dependencies: - - python=3.10 - - pip - - numpy - - pandas - - requests - - flask - - pip: - - beautifulsoup4 - - lxml diff --git a/manage.py b/manage.py deleted file mode 100644 index 1c2fd0d..0000000 --- a/manage.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python -"""Django's command-line utility for administrative tasks.""" -import os -import sys - - -def main(): - """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cheaper.settings') - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) - - -if __name__ == '__main__': - main() diff --git a/output.json b/output.json deleted file mode 100644 index e64146a..0000000 --- a/output.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "/": [ - "A Light in the Attic", - "Tipping the Velvet", - "Soumission", - "Sharp Objects", - "Sapiens: A Brief History of Humankind", - "The Requiem Red", - "The Dirty Little Secrets of Getting Your Dream Job", - "The Coming Woman: A Novel Based on the Life of the Infamous Feminist, Victoria Woodhull", - "The Boys in the Boat: Nine Americans and Their Epic Quest for Gold at the 1936 Berlin Olympics", - "The Black Maria", - "Starving Hearts (Triangular Trade Trilogy, #1)", - "Shakespeare's Sonnets", - "Set Me Free", - "Scott Pilgrim's Precious Little Life (Scott Pilgrim #1)", - "Rip it Up and Start Again", - "Our Band Could Be Your Life: Scenes from the American Indie Underground, 1981-1991", - "Olio", - "Mesaerion: The Best Science Fiction Stories 1800-1849", - "Libertarianism for Beginners", - "It's Only the Himalayas" - ] -} \ No newline at end of file diff --git a/webscraper/ABC/Ebay_API.py b/webscraper/ABC/Ebay_API.py deleted file mode 100644 index 2be5a07..0000000 --- a/webscraper/ABC/Ebay_API.py +++ /dev/null @@ -1,15 +0,0 @@ -from abc import ABC,abstractmethod - -class EbayApi(ABC): - - @abstractmethod - def retrieve_access_token() -> str: - """ retrieves the user access token for sandbox environment it's a long line - of text, numbers, symbols - """ - pass - - @abstractmethod - def retrieve_ebay_response(httprequest:str,query:str) -> dict: - """ retrieves a json of large data with category ids, names, parentcategorynodes """ - pass \ No newline at end of file diff --git a/webscraper/ABC/base_scraper.py b/webscraper/ABC/base_scraper.py deleted file mode 100644 index 6b460a9..0000000 --- a/webscraper/ABC/base_scraper.py +++ /dev/null @@ -1,51 +0,0 @@ -from abc import ABC, abstractmethod -from typing import List, Dict, Optional - -class BaseScraper(ABC): - - @abstractmethod - def __init__(self, base_url: str, user_agent: str, delay: float) -> None: - """Initialize the scraper with base parameters. - - Args: - base_url: The base URL to scrape - user_agent: User agent string to identify the scraper - delay: Time in seconds to wait between requests - """ - pass - - @abstractmethod - def fetch(self, path: str) -> Optional[str]: - """Fetch content from a specific path. - - Args: - path: The URL path to fetch - - Returns: - HTML content as string if successful, None otherwise - """ - pass - - @abstractmethod - def parse(self, html: str) -> List[str]: - """Parse HTML content. - - Args: - html: The HTML content to parse - - Returns: - List of parsed items from the HTML - """ - pass - - @abstractmethod - def scrape(self, paths: List[str]) -> Dict[str, List[str]]: - """Scrape multiple paths. - - Args: - paths: List of URL paths to scrape - - Returns: - Dictionary mapping paths to their parsed results - """ - pass diff --git a/webscraper/api/EbayAPI.py b/webscraper/api/EbayAPI.py deleted file mode 100644 index 15f78e3..0000000 --- a/webscraper/api/EbayAPI.py +++ /dev/null @@ -1,55 +0,0 @@ -import requests -from requests.auth import HTTPBasicAuth -from dotenv import load_dotenv -import os - - -load_dotenv() #initialize - -class EbayAPI: - - client_secret_key = os.getenv("clientsecret") - client_id_key = os.getenv("clientid") - - get_user_key = HTTPBasicAuth(client_id_key, client_secret_key) - - - def retrieve_access_token(): - try: - response = requests.post("https://api.sandbox.ebay.com/identity/v1/oauth2/token", - headers = {"Content-Type":"application/x-www-form-urlencoded"}, - data = { - "grant_type": "client_credentials", - "scope": "https://api.ebay.com/oauth/api_scope" - }, - auth=EbayAPI.get_user_key - ) - access_token = response.json().get("access_token") - status_code = response.status_code - if(status_code == 404): - raise Exception("404 error here") - return access_token - except Exception as e: - raise e - - def retrieve_ebay_response(httprequest:str,query:str): - auth = EbayAPI.retrieve_access_token() - try: - response = requests.get(httprequest, - headers={ - "Authorization": f"Bearer {auth}", - "Content-Type": "application/json" - }, - params= { - "q": query, - "category_tree_id": 0 - } - ) - status_code = response.status_code - if(status_code == 404): - raise Exception("not found 404 error") - - return response.json() - except Exception as e: - raise e - diff --git a/webscraper/api/interface.py b/webscraper/api/interface.py deleted file mode 100644 index af2ef9d..0000000 --- a/webscraper/api/interface.py +++ /dev/null @@ -1,8 +0,0 @@ -from abc import ABC, abstractmethod - -class ScraperAPIInterface(ABC): - - @abstractmethod - def get_scraped_data(self, paths: list[str]) -> dict: - """Given a list of paths, return scraped results.""" - pass diff --git a/webscraper/api/routes.py b/webscraper/api/routes.py deleted file mode 100644 index 919633c..0000000 --- a/webscraper/api/routes.py +++ /dev/null @@ -1,26 +0,0 @@ -import sys -import os -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))) - -from flask import Flask, jsonify, request -from webscraper.src.Cheaper_Scraper import CheaperScraper - -app = Flask(__name__) -scraper = CheaperScraper(base_url="https://books.toscrape.com") - -@app.route('/') -def home(): - return jsonify({"message": "Welcome to Cheaper API!"}) - -@app.route('/scrape', methods=['GET']) -def scrape_books(): - paths = request.args.getlist('path') - if not paths: - return jsonify({"error": "No paths provided"}), 400 - - results = scraper.get_scraped_data(paths) - return jsonify(results) - -if __name__ == '__main__': - app.run(debug=True) - diff --git a/webscraper/api/tests/test_ebay_api.py b/webscraper/api/tests/test_ebay_api.py deleted file mode 100644 index 7651c13..0000000 --- a/webscraper/api/tests/test_ebay_api.py +++ /dev/null @@ -1,35 +0,0 @@ -import unittest -from unittest.mock import patch,Mock -import requests -from webscraper.api.EbayAPI import EbayAPI - -class EbayTestApi(unittest.TestCase): - - def setUp(self): - self.EbayAPI = EbayAPI - - - def test_retrieve_access_token(self): - self.EbayAPI.retrieve_access_token() - self.assertEqual(type(self.EbayAPI.retrieve_access_token()),str) - - @patch("webscraper.api.EbayAPI.requests.post") - def test_retrieve_access_token_invalid(self,mock_post): - mock_response = Mock() - mock_response.status_code = 404 - mock_response.json.return_value ={"error": "not found"} - mock_post.return_value = mock_response - - with self.assertRaises(Exception): - self.EbayAPI.retrieve_access_token() - - - - @patch("webscraper.api.EbayAPI.requests.get") - def test_retrieve_ebay_response_invalid(self,mock_get): - self.EbayAPI.retrieve_ebay_response("https://test","item") - self.assertRaises(Exception) - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/webscraper/api/tests/test_routes.py b/webscraper/api/tests/test_routes.py deleted file mode 100644 index 4edd3f9..0000000 --- a/webscraper/api/tests/test_routes.py +++ /dev/null @@ -1,26 +0,0 @@ -import unittest -from webscraper.api.routes import app - -class TestRoutes(unittest.TestCase): - - def setUp(self): - self.client = app.test_client() - self.client.testing = True - - def test_home_route(self): - response = self.client.get('/') - self.assertEqual(response.status_code, 200) - self.assertIn(b"Welcome to Cheaper API", response.data) - - def test_scrape_no_params(self): - response = self.client.get('/scrape') - self.assertEqual(response.status_code, 400) - self.assertIn(b"No paths provided", response.data) - - def test_scrape_valid_path(self): - response = self.client.get('/scrape?path=/catalogue/page-1.html') - self.assertEqual(response.status_code, 200) - self.assertIsInstance(response.get_json(), dict) - -if __name__ == '__main__': - unittest.main() diff --git a/webscraper/main.py b/webscraper/main.py deleted file mode 100644 index 1534774..0000000 --- a/webscraper/main.py +++ /dev/null @@ -1,31 +0,0 @@ -from api.EbayAPI import EbayAPI -from src.Cheaper_Scraper import CheaperScraper -import json - -def main(): - - - - - # Set up the scraper for a simple legal-to-scrape website - scraper = CheaperScraper("https://books.toscrape.com", - user_agent="CheaperBot/0.1", - delay=2.0) - # Define which pages you want to scrape (you can use "/" for homepage) - pages = ["/"] - - # Use the scraper to fetch and parse the pages - results = CheaperScraper.scraper.scrape(pages) - - # Show the output in the terminal - for path, items in results.items(): - print(f"\nScraped from {path}:") - for item in items: - print("-", item) - - # Save the output to a JSON file - with open("output.json", "w") as f: - json.dump(results, f, indent=2) - -if __name__ == "__main__": - main() diff --git a/webscraper/output.json b/webscraper/output.json deleted file mode 100644 index e64146a..0000000 --- a/webscraper/output.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "/": [ - "A Light in the Attic", - "Tipping the Velvet", - "Soumission", - "Sharp Objects", - "Sapiens: A Brief History of Humankind", - "The Requiem Red", - "The Dirty Little Secrets of Getting Your Dream Job", - "The Coming Woman: A Novel Based on the Life of the Infamous Feminist, Victoria Woodhull", - "The Boys in the Boat: Nine Americans and Their Epic Quest for Gold at the 1936 Berlin Olympics", - "The Black Maria", - "Starving Hearts (Triangular Trade Trilogy, #1)", - "Shakespeare's Sonnets", - "Set Me Free", - "Scott Pilgrim's Precious Little Life (Scott Pilgrim #1)", - "Rip it Up and Start Again", - "Our Band Could Be Your Life: Scenes from the American Indie Underground, 1981-1991", - "Olio", - "Mesaerion: The Best Science Fiction Stories 1800-1849", - "Libertarianism for Beginners", - "It's Only the Himalayas" - ] -} \ No newline at end of file diff --git a/webscraper/package.json b/webscraper/package.json deleted file mode 100644 index e69de29..0000000 diff --git a/webscraper/src/Cheaper_Scraper.py b/webscraper/src/Cheaper_Scraper.py deleted file mode 100644 index 27fffc0..0000000 --- a/webscraper/src/Cheaper_Scraper.py +++ /dev/null @@ -1,97 +0,0 @@ -import requests -import time -from bs4 import BeautifulSoup -import logging -from typing import Dict, List, Optional -from webscraper.ABC.base_scraper import BaseScraper -from webscraper.src.robot_check import RoboCheck -from webscraper.api.interface import ScraperAPIInterface - - - - -class CheaperScraper(BaseScraper, ScraperAPIInterface): - def __init__(self, base_url: str = "", user_agent: str = "CheaperBot/0.1", delay: float = 2.0) -> None: - """Initialize the scraper with base parameters. - - Args: - base_url: The base URL to scrape - user_agent: User agent string to identify the scraper - delay: Time in seconds to wait between requests - """ - - self.base_url = base_url.rstrip('/') - self.delay = delay - self.user_agent = user_agent - - #initialize session - self.session = requests.Session() - self.session.headers.update({"User-Agent": self.user_agent}) - - # robot logic checks if there are instances not able to be - self.robots = RoboCheck(base_url, user_agent) - - def fetch(self, path: str = "/") -> Optional[str]: - """Fetch content from a specific path. - - Args: - path: The URL path to fetch - - Returns: - HTML content as string if successful, None otherwise - """ - #Fetch a URL path if allowed - if not self.robots.can_fetch(path): - logging.warning(f"Disallowed by robots.txt: {path}") - return None - - url = self.base_url + path - - try: - response = self.session.get(url, timeout=10) - response.raise_for_status() - time.sleep(self.delay) # delay to simulate a user - return response.text - except requests.RequestException as e: - logging.error(f"Error fetching {url}: {e}") - return None - - def parse(self, html: str) -> List[str]: - """Parse HTML content. - - Args: - html: The HTML content to parse - - Returns: - List of parsed items from the HTML - """ - soup = BeautifulSoup(html, "html.parser") - results = [] - - for book in soup.find_all("article", class_="product_pod"): - title = book.h3.a["title"] - results.append(title) - - return results - - - - def scrape(self, paths: List[str]) -> Dict[str, List[str]]: - """Scrape multiple paths. - - Args: - paths: List of URL paths to scrape - - Returns: - Dictionary mapping paths to their parsed results - """ - #Fetch and parse a list of URLs - results: Dict[str, List[str]] = {} - for path in paths: - html = self.fetch(path) - if html: - results[path] = self.parse(html) - return results - - def get_scraped_data(self, paths: List[str]) -> Dict[str, List[str]]: - return self.scrape(paths) diff --git a/webscraper/src/__init__.py b/webscraper/src/__init__.py deleted file mode 100644 index 1eaf160..0000000 --- a/webscraper/src/__init__.py +++ /dev/null @@ -1 +0,0 @@ -#placeholder for build yaml file in github actions workflow \ No newline at end of file diff --git a/webscraper/src/robot_check.py b/webscraper/src/robot_check.py deleted file mode 100644 index e47d7c7..0000000 --- a/webscraper/src/robot_check.py +++ /dev/null @@ -1,11 +0,0 @@ -from urllib.robotparser import RobotFileParser - -class RoboCheck: - def __init__(self,base_url,user_agent): - self.robot_parser = RobotFileParser(f"{base_url}/robots.txt") - self.robot_parser.read() - self.user_agent = user_agent - - def can_fetch(self, path="/") -> bool: - #check if all clear to parse a specific url path - return self.robot_parser.can_fetch(self.user_agent, path) \ No newline at end of file diff --git a/webscraper/src/tests/__init__.py b/webscraper/src/tests/__init__.py deleted file mode 100644 index c043883..0000000 --- a/webscraper/src/tests/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# github workflow requires an init.py \ No newline at end of file diff --git a/webscraper/src/tests/test_cheaper_scraper.py b/webscraper/src/tests/test_cheaper_scraper.py deleted file mode 100644 index 8792bb9..0000000 --- a/webscraper/src/tests/test_cheaper_scraper.py +++ /dev/null @@ -1,29 +0,0 @@ -import unittest -from webscraper.src.Cheaper_Scraper import CheaperScraper - -class TestCheaperScraper(unittest.TestCase): - - def setUp(self): - self.scraper = CheaperScraper("https://books.toscrape.com") - - def test_can_fetch_root_path(self): - self.assertTrue(self.scraper.robots.can_fetch("/")) - - def test_fetch_returns_html(self): - html = self.scraper.fetch("/") - self.assertIsInstance(html, str) - self.assertIn(" Date: Tue, 29 Apr 2025 22:10:07 -0700 Subject: [PATCH 5/7] place files back in --- .github/workflows/python-package-conda.yml | 37 ++++++ .gitignore | 3 + .vscode/settings.json | 14 ++ CheaperUMLDiagram.png | Bin 0 -> 72985 bytes README.md | 27 ++++ accounts/__init__.py | 0 accounts/admin.py | 3 + accounts/apps.py | 6 + accounts/migrations/0001_initial.py | 31 +++++ accounts/migrations/__init__.py | 0 accounts/models.py | 31 +++++ accounts/tests.py | 3 + accounts/views.py | 3 + cheaper/__init__.py | 0 cheaper/asgi.py | 16 +++ cheaper/settings.py | 123 ++++++++++++++++++ cheaper/urls.py | 22 ++++ cheaper/wsgi.py | 16 +++ cloud_analysis/Right_Database.md | 16 +++ cloud_analysis/SQL vs NoSQL/RvNonR.puml | 32 +++++ cloud_analysis/SQL vs NoSQL/RvnonR.png | Bin 0 -> 104189 bytes .../all_comparison.png | Bin 0 -> 135490 bytes .../all_comparison.puml | 44 +++++++ db.sqlite3 | Bin 0 -> 143360 bytes environment.yml | 14 ++ manage.py | 22 ++++ output.json | 24 ++++ webscraper/ABC/Ebay_API.py | 15 +++ webscraper/ABC/base_scraper.py | 51 ++++++++ webscraper/api/EbayAPI.py | 55 ++++++++ webscraper/api/interface.py | 8 ++ webscraper/api/routes.py | 26 ++++ webscraper/api/tests/test_ebay_api.py | 35 +++++ webscraper/api/tests/test_routes.py | 26 ++++ webscraper/main.py | 31 +++++ webscraper/output.json | 24 ++++ webscraper/package.json | 0 webscraper/src/Cheaper_Scraper.py | 97 ++++++++++++++ webscraper/src/__init__.py | 1 + webscraper/src/robot_check.py | 11 ++ webscraper/src/tests/__init__.py | 1 + webscraper/src/tests/test_cheaper_scraper.py | 29 +++++ 42 files changed, 897 insertions(+) create mode 100644 .github/workflows/python-package-conda.yml create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 CheaperUMLDiagram.png create mode 100644 README.md create mode 100644 accounts/__init__.py create mode 100644 accounts/admin.py create mode 100644 accounts/apps.py create mode 100644 accounts/migrations/0001_initial.py create mode 100644 accounts/migrations/__init__.py create mode 100644 accounts/models.py create mode 100644 accounts/tests.py create mode 100644 accounts/views.py create mode 100644 cheaper/__init__.py create mode 100644 cheaper/asgi.py create mode 100644 cheaper/settings.py create mode 100644 cheaper/urls.py create mode 100644 cheaper/wsgi.py create mode 100644 cloud_analysis/Right_Database.md create mode 100644 cloud_analysis/SQL vs NoSQL/RvNonR.puml create mode 100644 cloud_analysis/SQL vs NoSQL/RvnonR.png create mode 100644 cloud_analysis/database host comparison/all_comparison.png create mode 100644 cloud_analysis/database host comparison/all_comparison.puml create mode 100644 db.sqlite3 create mode 100644 environment.yml create mode 100644 manage.py create mode 100644 output.json create mode 100644 webscraper/ABC/Ebay_API.py create mode 100644 webscraper/ABC/base_scraper.py create mode 100644 webscraper/api/EbayAPI.py create mode 100644 webscraper/api/interface.py create mode 100644 webscraper/api/routes.py create mode 100644 webscraper/api/tests/test_ebay_api.py create mode 100644 webscraper/api/tests/test_routes.py create mode 100644 webscraper/main.py create mode 100644 webscraper/output.json create mode 100644 webscraper/package.json create mode 100644 webscraper/src/Cheaper_Scraper.py create mode 100644 webscraper/src/__init__.py create mode 100644 webscraper/src/robot_check.py create mode 100644 webscraper/src/tests/__init__.py create mode 100644 webscraper/src/tests/test_cheaper_scraper.py diff --git a/.github/workflows/python-package-conda.yml b/.github/workflows/python-package-conda.yml new file mode 100644 index 0000000..cb0cdb9 --- /dev/null +++ b/.github/workflows/python-package-conda.yml @@ -0,0 +1,37 @@ +name: Python Package using Conda + +on: [push] + +jobs: + build-linux: + runs-on: ubuntu-latest + strategy: + max-parallel: 5 + + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.10 + uses: actions/setup-python@v3 + with: + python-version: '3.10' + - name: Add conda to system path + run: | + # $CONDA is an environment variable pointing to the root of the miniconda directory + echo $CONDA/bin >> $GITHUB_PATH + - name: Install dependencies + run: | + conda env update --file environment.yml --name base + - name: Lint with flake8 + run: | + conda install flake8 + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Run unittest files by path + run: | + shopt -s nullglob + for i in src/tests/test_*.py; do + echo " RUNNING $i " + python "$i" || exit 1 + done diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5aeb0f4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.env +*.pyc +__pycache__/ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b2d293c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + "python.analysis.extraPaths": [ + "./webscraper/ABC" + ], + "python.testing.unittestArgs": [ + "-v", + "-s", + "./webscraper", + "-p", + "*test*.py" + ], + "python.testing.pytestEnabled": false, + "python.testing.unittestEnabled": true +} \ No newline at end of file diff --git a/CheaperUMLDiagram.png b/CheaperUMLDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..41939541261387eca00b13e99bfbafc06f2cee50 GIT binary patch literal 72985 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 D)V(Fz literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..3362b30 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# Cheaper.com +Initial Landing page![Initial Landing page](https://github.com/user-attachments/assets/7d2a1c73-0d16-4965-a2f8-4402ef267ff4) + + + + + +##Technical Documentation of how to run the application + +#How to run + +-To run the scraper, execute the main.py script by running the command + +python main.py + +-Make sure you are in the src directory when you run the command (the directory that contains main.py). + +##Where is the entry point? + +-The entry point is the main() in main.py, specifically, this block of code, +if __name__ == "__main__": + main() + + +##what file needs to be located and what variables would need to be changed if you wanted to scrape another website? + +-If you wanted to scrape another website, you need to locate the file main.py and change the variables “scraper” and “pages” to whatever website you wanted and the new URl paths. As well ensure the website allows scraping. diff --git a/accounts/__init__.py b/accounts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/accounts/admin.py b/accounts/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/accounts/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/accounts/apps.py b/accounts/apps.py new file mode 100644 index 0000000..3e3c765 --- /dev/null +++ b/accounts/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class AccountsConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'accounts' diff --git a/accounts/migrations/0001_initial.py b/accounts/migrations/0001_initial.py new file mode 100644 index 0000000..0b3e675 --- /dev/null +++ b/accounts/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# Generated by Django 5.2 on 2025-04-25 21:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Product', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=200)), + ('price', models.CharField(max_length=10)), + ('source_url', models.URLField(max_length=150)), + ], + ), + migrations.CreateModel( + name='UserAccount', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('email', models.EmailField(max_length=50, unique=True)), + ('password', models.CharField(max_length=100)), + ], + ), + ] diff --git a/accounts/migrations/__init__.py b/accounts/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/accounts/models.py b/accounts/models.py new file mode 100644 index 0000000..3ff6537 --- /dev/null +++ b/accounts/models.py @@ -0,0 +1,31 @@ +from django.db import models +from django.core.exceptions import ValidationError +import re + +def validate_email(value): + + email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' + if not re.match(email_pattern, value): + raise ValidationError('Invalid email format.') + + if ' ' in value: + raise ValidationError('Email cannot contain spaces.') + + +class UserAccount(models.Model): + email = models.EmailField(max_length=50, unique=True) + password = models.CharField(max_length=100) + + def clean(self): + validate_email(self.email) + + def __str__(self): + return self.email + +class Product(models.Model): + name = models.CharField(max_length=200) + price = models.CharField(max_length=10) + source_url = models.URLField(max_length=150) + + def __str__(self): + return self.name \ No newline at end of file diff --git a/accounts/tests.py b/accounts/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/accounts/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/accounts/views.py b/accounts/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/accounts/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/cheaper/__init__.py b/cheaper/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/cheaper/asgi.py b/cheaper/asgi.py new file mode 100644 index 0000000..2133002 --- /dev/null +++ b/cheaper/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for cheaper project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.2/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cheaper.settings') + +application = get_asgi_application() diff --git a/cheaper/settings.py b/cheaper/settings.py new file mode 100644 index 0000000..b7a0c09 --- /dev/null +++ b/cheaper/settings.py @@ -0,0 +1,123 @@ +""" +Django settings for cheaper project. + +Generated by 'django-admin startproject' using Django 5.2. + +For more information on this file, see +https://docs.djangoproject.com/en/5.2/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/5.2/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-qdsb1wl#sv2+8$7g+es&rzrovy02*m@^3!me**&z%gzstf^q4(' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'accounts', #custom user app +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'cheaper.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'cheaper.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/5.2/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/5.2/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.2/howto/static-files/ + +STATIC_URL = 'static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/cheaper/urls.py b/cheaper/urls.py new file mode 100644 index 0000000..49e4fb1 --- /dev/null +++ b/cheaper/urls.py @@ -0,0 +1,22 @@ +""" +URL configuration for cheaper project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/5.2/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path + +urlpatterns = [ + path('admin/', admin.site.urls), +] diff --git a/cheaper/wsgi.py b/cheaper/wsgi.py new file mode 100644 index 0000000..bf0a643 --- /dev/null +++ b/cheaper/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for cheaper project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.2/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cheaper.settings') + +application = get_wsgi_application() diff --git a/cloud_analysis/Right_Database.md b/cloud_analysis/Right_Database.md new file mode 100644 index 0000000..5b15ae8 --- /dev/null +++ b/cloud_analysis/Right_Database.md @@ -0,0 +1,16 @@ +**Review:** + +After going through the cloud database comparisons and the SQL vs NoSQL diagram, I feel like there’s no one-size-fits-all answer when it comes to picking a database. It really depends on what the project needs. + +From what I saw: + +* SQL options like PostgreSQL or AWS RDS are great when you want strong structure and need to run complex queries, especially when data integrity is super important. +* NoSQL ones like Firebase and MongoDB are better when you want to move fast, need flexibility, pluspoint Firebase can use GoogleAuth and you’re handling a lot of user data or something that doesn’t fit neatly into tables. +* Supabase kind of feels like a good middle ground – gives you SQL power with some of the ease of Firebase. + +What stood out to me is how important scalability, learning curve, and pricing are in real-life use. It’s not just about performance, but also how much time you’ll spend maintaining and tuning stuff. + +For me personally, I think using both SQL and NoSQL together can be a smart move. Like maybe SQL for structured things like accounts and payments, and NoSQL for stuff like chat or logs. Depends on the use case. + +This comparison really helped me understand what trade-offs exist between the systems and made me think more practically about tech choices. + diff --git a/cloud_analysis/SQL vs NoSQL/RvNonR.puml b/cloud_analysis/SQL vs NoSQL/RvNonR.puml new file mode 100644 index 0000000..a507a6b --- /dev/null +++ b/cloud_analysis/SQL vs NoSQL/RvNonR.puml @@ -0,0 +1,32 @@ +@startuml +skinparam padding 20 +skinparam backgroundColor #000000 +skinparam shadowing false +skinparam rectangle { + BackgroundColor Black + BorderColor White + FontColor White + RoundCorner 25 + FontSize 13 + MinWidth 250 + MinHeight 250 +} + +title "SQL vs NoSQL Databases: Pros & Cons" + +' Legend +rectangle "Legend\n\n+ = Advantage (Pro)\n- = Limitation (Con)" as Legend + +' SQL Databases +rectangle "SQL Databases\n\n+ Strong consistency (ACID compliance)\n+ Well-defined schemas\n+ Complex joins and transactions\n+ Proven reliability and stability\n+ Mature ecosystem and tools\n+ Better for structured data\n+ Standardized query language\n\n\n- Less flexible schema\n- Vertical scaling can be expensive\n- Performance challenges at huge scale\n- Schema changes can be disruptive\n- Harder to manage large volumes of unstructured data" as SQL + +' NoSQL Databases +rectangle "NoSQL Databases\n\n+ Flexible schema (schema-less)\n+ Horizontal scaling (sharding, clusters)\n+ High performance for large data volumes\n+ Easier to store unstructured/semi-structured data\n+ Typically faster read/write operations\n+ Strong integration with modern development practices\n\n\n- Eventual consistency (BASE model)\n- Limited support for complex queries/transactions\n- Varied querying methods (no standard query language)\n- Less mature ecosystem\n- Can lead to data duplication\n- May require more application-side logic" as NoSQL + +' Layout +left to right direction + +Legend -[hidden]-> SQL +SQL -[hidden]-> NoSQL + +@enduml diff --git a/cloud_analysis/SQL vs NoSQL/RvnonR.png b/cloud_analysis/SQL vs NoSQL/RvnonR.png new file mode 100644 index 0000000000000000000000000000000000000000..bc9968d10218dada6fa389a4c8c8581bf056ede1 GIT binary patch literal 104189 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

    G1Len6`)dKT0*A#A~FH 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%0Auo=<%&dyS!C1c2(uoe9UcRL3qK`%B9}Gh3xRDp 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

    28yaG5>UYgrY=TSJGA)5zTdB2 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 literal 0 HcmV?d00001 diff --git a/cloud_analysis/database host comparison/all_comparison.png b/cloud_analysis/database host comparison/all_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..f87ca638f5899dfe95f13bebdc5d6c518a8c5a6a GIT binary patch literal 135490 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 VMkb-v5s5tTWnyS%z|=o=;SVC0LC*jH literal 0 HcmV?d00001 diff --git a/cloud_analysis/database host comparison/all_comparison.puml b/cloud_analysis/database host comparison/all_comparison.puml new file mode 100644 index 0000000..2562b7f --- /dev/null +++ b/cloud_analysis/database host comparison/all_comparison.puml @@ -0,0 +1,44 @@ +@startuml +skinparam padding 20 +skinparam backgroundColor #000000 +skinparam shadowing false +skinparam rectangle { + BackgroundColor Black + BorderColor White + FontColor White + RoundCorner 25 + FontSize 13 + MinWidth 220 + MinHeight 200 +} + +title "Cloud Database Host Comparison" + +' Legend +rectangle "Legend\n\n+ = Advantage (Pro)\n- = Limitation (Con)" as Legend + +' MongoDB Atlas +rectangle "MongoDB Atlas\n\n+ Scales well\n+ Flexible schema\n+ Global clusters\n\n+ Strong documentation\n- Complex query tuning\n- Index management needed\n- Learning curve for new users" as Mongo + +' AWS RDS +rectangle "AWS RDS\n\n+ Stable, high availability\n+ Fully managed SQL\n+ Supports PostgreSQL, MySQL, etc.\n+ Excellent for legacy systems\n\n- More complex to configure\n- Higher cost\n- Vendor lock-in" as RDS + +' Firebase +rectangle "Firebase\n\n+ Realtime data sync across clients\n+ Integrated with Google Cloud\n+ Great for mobile and web apps\n+ Built-in auth and analytics\n+ Offline support\n\n- Limited querying\n- No SQL support (uses NoSQL)\n- Complex pricing\n- Vendor lock-in\n- Less control over schema" as Firebase + +' Supabase +rectangle "Supabase\n\n+ Open-source Firebase alternative\n+ Full SQL (PostgreSQL)\n+ Real-time subscriptions\n+ Built-in auth & storage\n+ Self-host or managed\n\n- Smaller community\n- Can be slower at scale\n- Limited cloud regions\n- Fewer enterprise tools\n- Some hosted bugs" as Supabase + +' PostgreSQL +rectangle "PostgreSQL\n\n+ Advanced SQL capabilities\n+ Strong data integrity\n+ JSON support\n+ Highly extensible\n+ Open-source\n\n- Manual tuning often required\n- Heavier setup for scaling\n- Slower queries at high volume" as Postgres + +' Layout +left to right direction + +Legend -[hidden]-> Mongo +Mongo -[hidden]-> RDS +RDS -[hidden]-> Firebase +Firebase -[hidden]-> Supabase +Supabase -[hidden]-> Postgres + +@enduml diff --git a/db.sqlite3 b/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..9a49d22ab3f896c38adf97e853d85697d0dfef76 GIT binary patch literal 143360 zcmeI5ZEPIJdB<;g$2(Hw-IAiHl`YX+9xYoJisZeMC+Eeqe34m8lqFHNg~r|P-7V>p z?}fTM$`S&!I9g7Er2Wto4bTFu+X4kzv>)1{K+vWEinN8>6itjG3DB1mC{iG3&?H5H zBn6THeP(v<_U(>5s7_%~e*#+V?mYACe||GNyYtK}dF{%@a?4P+>W!-2Qd7POpCtL7 zR#l(RH!uFtfBfhDv<--T_Mc?i@3%YeTl!dRm>J7IWHyTY!|=@5_s5h+EFE7$Yt`o^>Qm({4->Hw!v_40-{ zQ&c?@<-*FP=vg(&<&mCftbJ}Wq-^J;wr-WcOx-aW)pE00uGgBHwa*H%nl5IFxun6B zd5n*WQrP8tjQV)AiT7k-MR4dK@e30nO=B;&=xR<5`1$$@lxoE;>& zlY!LUlt+}dKPTy1=W(vXgt%iIuAL^J3F&S+n-z%0M!&g+t2S z1!+&Vs>I6Txj?aAGHQC&(BcWbkXp&;R&7|hBK@nuG8)kJz$Kv?=!lEP_Ff(jDQj!e zy{B4wp<>>r{O;!)OGMM^TihvOQHag8XD;UL{fXOY=*RF3~Uf&>>m+~8%B$Yeqnd@r)!}+WEjq~|ywu_2u#MEb5>Qydj zePexdeeL4K8{%aCSx+PMYVvruSPXWJ*j{`rq%1B<_oiHE`5k5hY95dG!)PYIr{I}= z#9+0;Z3jg5#`{J?%IvK4v3V!5ZsR-B2hx4f+0mQL*Xs>xk+=0m@m0NXCXrl?b(IG^!}Fr}rDSCth$8-QBUhjggR&%SrcEtok+El67~PH-_izXpfrr z7~NMhFulC%jhU!hg<>yIKZ!o3JrN8kb8}MrH5X9MoR=)r58Qpha<;)$Z+niVLP6!i z+`i4iByP3~zCS{5(d?gZ@A2V~vale%@$*)BEQ-8P)?u(m$*k0Op?Dcv@u)i8uLS#7 zXz8Y2+paqv-a^vB52x<)+3K0%HZ8ICbAgajPf6{M@|&&4r8IqKN2}-sqoP&mO{Ai& zWDBKKDOKRFAw4n-3z*IkMGwRMJ)3VKJ+iT~cQvtr1(!vyRoniMl1fQ?yS&DG!`7VkpsC+x^cu%*6tt#r%OJ302kP>?n48@!yNzib+}c8yxma2@&`<#Q#TVfWx! z${B0lkV4Axvb3k$*;UKi4ZXz%V}gryV#wh)>Pf#ZYQ)8Q?j$qL2amJAaHmq%O4;*t zp?+ZcWSF*7V<&y`+wy1Rk~|mrTI3fZ&xC&*{#^L=aC-ck<8O_>I6gV{<*_%%ULZ64 zfB*=900@8p2!H?xfWToTkeV9y&75A-i^ckGt<{Xj;|Z-?E4RveB^gg<7USu~WJXOU z&Slc)(yL3kbS|AurjGJVO~ah0>60muJeOKImsnYfQ;ux>xyfPQ^h;}O+)WorYI>zb zGgdq#YXz;es(weS7`5%ztG3GvPpPGBHnWmUKRrR7E_6I4wA~#ZUD|2X@7%S`@HD+1 zl1s^4Hj!98FO!E$9S?D##SA5|QO3S9;!BxiZZ(m<5Fsbmg_C&BULYRpJIGNyx0J}N z#&ekuhsn{kj-yq(qfXdwKSA;AQZAQT&1Rn;CqJ)r{HzE+xAjVy_|zK|oGX~kS<(rLW$PUE!#L_FepfTsktz3j?!!C~L&3u_|& z!!a_7#J5_%-NkFpP_Y)|#hX}4rEyOd0%Gnsf; z{#{>4{)kWh5BV$d=j7Y+r{rIwL;QdM2!H?xfB*=900@8p2!H?xfB*;#NZ`bnKO=R* zhdi7o4u+-z{sqak%tj55`sYUYNgiz*KjNP?4_P#aE;(f$bt5Z^-=C6ttjQRe8uBlW zhy)&VU@?nn$-msOwpJ=k9U;df@+&?X`M)B6NB%qcpXATWzbSuez#_s71V8`;KmY_l z00ck)1V8`;KmY_l;6z|%z8e5wqj)j?A2}A7IoVC1#W|(jVk^W?b`}na|AVIjr{^X6 ziU`~Oa5ykM&BF-HcOVj&R`?MQANZ#N({uc=8!)I1O$L;iQ63WLEQnz1|JAVxpZqWK zAIqPR3-UR6Jo2xRKZ$%M(uizCmLf;P{}ujH_z%NxhBw3Wab5*Tp77tHeR<+*`3#GDm$mL zS8Y|i$1l&4apI{F`taMJ-^yTn!)NB^S!agF%nbBfFlyVL4CYx!hS&^cSjdd9<>@Z> zbjo2GJw>Lc7eidR7*ljri{mFwl1(fT5`t}3LTtzGQPWQ7wAl%b;*9zT+08G6m^_;i zlO_(MC%CF0S0x5DT~*@v358!RC{)?3gsP6+annwyve^k$;*2`YRRx(Un-Nnb4i}D* z#p22^S7jSfb(M*8DqDoUOy7Y}Ee{KME^{H#k%7JeVHt!@R|cWgo*_oxe^4zCGr=xv zCfaU#iazj=W}ggj<*Y??CG&pHWD2F+aaLA7*wh&yS+?WdyZBzqo$aLI^Nz=+g&gBNTLPgam$kiau?i zQu>*Ot^pIl56;kM3(`Vrh^w$hw_PdLsk0%nTwWOxdaMLyD@0i*&(ik?%vvb35}37+ zXPtb4zA>PCX^3gG&N5Rb)H?GxeLyh!WP*$BjJms0>4eHZOgKZ|2#hXdgiyPkkZD=c zw*h1+MA|Kd#I9wOJ_;B;z03sK&6vEd4V(X0!?%3$cWLJTuPFxb>++j&RenjnAgARy zc|w*V-;I1d^7oO?Mt&pmW~3JRNaR8!8JUfQ!~YZhM);lZpM`%b{0VY^9}oZm5C8!X z009sH0T2KI5C8!uf#U&bQSyYB)Dr;qDy4n-e^zD^{bJCxtr^WI4{=*`qMi zyzri=%Q0TY9`ThaGeNkuMMjSD!n@-olX5_sm8{Un1Q%crhREg_;gHdcL;})`)D3oo zCj!!(WQ%W%a{`Wl#+Z3ZIN=eABmBx%xMGy+a|b9!lz_A>d4mxl^Sp3qMGk_Tsw==S zd^9lnq~wSu1datp7bI8cz|T(#pPk|V&_rPLG%WzI0s?IQpML2-en0>OKmY_l00ck) z1V8`;KmY_l00a&(0XF|H#{Z#1Tuc-V1V8`;KmY_l00ck)1V8`;KmY_DY66)5f2gY; zg$Dr;009sH0T2KI5C8!X009tqNC;s3|BzHPiU|TB00JNY0w4eaAOHd&00JQJP!q7N z|L408H4GFU1V8`;KmY_l00ck)1V8`;KmY^|DFMv?AJU3Nu|NO>KmY_l00ck)1V8`; zKmY_lz(xS$e;W+!f&d7B00@8p2!H?xfB*=900@A{YbpBlbH7~DvU(zElvWFFgJb8f=GQj!>iWjB`IptGJK2*zs$Smknnl$!QGV5ODH>~k z=x9iJjU+Yqm&6rnq%D_DW#YwnQQNJRZ@Cpr34zx))~{SYSZ8mi2dh4-Mmt%l1m`A0 z%63j_>sATO)E%QyEjOFxdabEh`>YVFZ~WZJkg~WaeSEp47b-^Sre52wYkH|#u4$F} zw)^-oQLfFkXD;T|s5_YvC75ct)-tw@hPrWiQ{A|J@uK>|)%8njS8u4#=WnQM*EcV( zZ;+!)`Hf8~LA`L(D7HvVRBah|T0Dbwx?$`zqUvqEQG8WzoJq#xv94D#(u*xBm9|yU zx1(yas#hv>X?3^OEN|D0QrA*F|6Kn3^CZq;|G^Ka@fbNF&$Vqss~XLwzHM|=2<=oac);HJJE?&GLPUfGb zt8`kT7oPnJ-G(->Us2>%xk^PV=`Dlpb;-oqKc$3}`kK_fWwjbEg>S6Z;%+&KtwJHQ zl`M7znKzv+!=wFf(g8iYo4-37BVb*QRm{VB6Q_%rVlHX$s_@+LM|)I*$H?6+2#>ZZ z@MP(Qe_wF4{WV~3|%JtSgIgoDCz0KJ{k~M2_dWB zn6#qWHPx-I^9Jq-jR;? zxIOsg`Z;jxHSL&6zQ_B|y^WEOlFLc=R;>CpQ!V-Cjo~>v+N0(@Mtz#W{_h7}dGBsx z_SDG$?kx(UBnLd!WAxs8T$!7b+OOGxwpWjblp;NIZ@4PIZ#&d;8AC56Y%juY(?|NX z2e)CjZFhXS8-_cBy&=cmi*N2XW$HxyIcaa+!s%&x)*WS4B6|qMi=|XDQ;1tVh$rhr z|K7u6JJ4lp#61oiH>9VH#`azw4=HPF(!Hmw2E{APU29f<;Z6znxKn$&xUajFd-@4H z(j2wcV}#*(u2~rdyjNcs3MvZ=(hUx_d8<-x8Cui0wQJOhhU?JpKE{C0*{R)+hk5q)RJHh{`x90Mq(wSOvQt&|NK zn0dzynE!XhG;jz4AOHd&00JNY0w4eaAOHd&00M`QK={ZveUrWyeMjCu`gaY={!04N(8r|}-;0rN$e$gg@WE7&o3(!?$>(JD>SlPWSgh~XS~U0A zsF!w&E!}lI=Zu%QlkY2B;);m4CY*N~<)STMl5kE(H|x8NqM_|JDppJ-k+Ipt+Q$+h z7Ca*}r%dtas4 z(VNZJ>kWz|c2;sElBK%^q!}1s2po%1y1gOYvOu@`ZZ6(p|qmsqC!t zrtL+E4EZJYu_P0ts+Vo|ZZea0h-5-q`qoxdb&H@Bw$S1>^$qSMemCEw7TGh9N*CQK zH>m9U2#d8JkJ7~Yf@5Ocif?Q7^(JgiBe|7c$r@>Mw#c%Jh#Ix8nzB;+da=z`Sk|l+ zxGqb*$hEnUa(6-6ldXvuD~sm>#d^tLrPksJy^vbT=++#Jl`AMj_n5l1j0SW)a7n0A zI^t-Zz-cwaCI;?F)-7*cn&0=<;c$<;#!9`fd&iA=|9MK$#o057s~#{{X)m*Nm%1K* z&PJNFPbS3L&&|?GqLkGBsQuAq7oyR8f>zNBMn$Vq-B+}gY@w7Yr3$>_dnga|to$B^ z`+Igg0_}nrnXV=_OV4FdLtcL@q@+^PUe5kFwCC)hVa8eYJuL34`YnBZYsFOEJDFx| zXY6Y&g{F8GN#SObj)+E)=}h0TLXRS9iC!g`$Nc{waShmj00@8p2!H?xfB*=900@8p2!OzYO#tKn2fO~D z9t1!D1V8`;KmY_l00ck)1V8`;1|fj){~(lL0|Fob0w4eaAOHd&00JNY0w4ea4>kde z{~zr7gL)7E0T2KI5C8!X009sH0T2KI5Ez62#{Yv*f(;0O00@8p2!H?xfB*=900@8p z2t3#X!X$r0{)kWhw)~Is7v(>f-;zHm@6rkUfB*=900@8p2!H?xfB*=900@8p2n<9( z8437i<~zT3-}a{krb3i(vXdbGDBe_%ofLmXtttLLIUMkvo)>@4q;+@4XxjG20|DRk zH2cd%%y-yNM+!UQe;MrP5FO63L+kGrO-ccuGQ;H%3uleM!$^ZFYE+Djl00@8p2!H?x jfB*=900@8p2!H?xxCu=AmnBayU}(y}IBGk~qX7R4yiL!L literal 0 HcmV?d00001 diff --git a/environment.yml b/environment.yml new file mode 100644 index 0000000..1a6ff6f --- /dev/null +++ b/environment.yml @@ -0,0 +1,14 @@ +name: myenv +channels: + - defaults + - conda-forge +dependencies: + - python=3.10 + - pip + - numpy + - pandas + - requests + - flask + - pip: + - beautifulsoup4 + - lxml diff --git a/manage.py b/manage.py new file mode 100644 index 0000000..1c2fd0d --- /dev/null +++ b/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cheaper.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/output.json b/output.json new file mode 100644 index 0000000..e64146a --- /dev/null +++ b/output.json @@ -0,0 +1,24 @@ +{ + "/": [ + "A Light in the Attic", + "Tipping the Velvet", + "Soumission", + "Sharp Objects", + "Sapiens: A Brief History of Humankind", + "The Requiem Red", + "The Dirty Little Secrets of Getting Your Dream Job", + "The Coming Woman: A Novel Based on the Life of the Infamous Feminist, Victoria Woodhull", + "The Boys in the Boat: Nine Americans and Their Epic Quest for Gold at the 1936 Berlin Olympics", + "The Black Maria", + "Starving Hearts (Triangular Trade Trilogy, #1)", + "Shakespeare's Sonnets", + "Set Me Free", + "Scott Pilgrim's Precious Little Life (Scott Pilgrim #1)", + "Rip it Up and Start Again", + "Our Band Could Be Your Life: Scenes from the American Indie Underground, 1981-1991", + "Olio", + "Mesaerion: The Best Science Fiction Stories 1800-1849", + "Libertarianism for Beginners", + "It's Only the Himalayas" + ] +} \ No newline at end of file diff --git a/webscraper/ABC/Ebay_API.py b/webscraper/ABC/Ebay_API.py new file mode 100644 index 0000000..2be5a07 --- /dev/null +++ b/webscraper/ABC/Ebay_API.py @@ -0,0 +1,15 @@ +from abc import ABC,abstractmethod + +class EbayApi(ABC): + + @abstractmethod + def retrieve_access_token() -> str: + """ retrieves the user access token for sandbox environment it's a long line + of text, numbers, symbols + """ + pass + + @abstractmethod + def retrieve_ebay_response(httprequest:str,query:str) -> dict: + """ retrieves a json of large data with category ids, names, parentcategorynodes """ + pass \ No newline at end of file diff --git a/webscraper/ABC/base_scraper.py b/webscraper/ABC/base_scraper.py new file mode 100644 index 0000000..6b460a9 --- /dev/null +++ b/webscraper/ABC/base_scraper.py @@ -0,0 +1,51 @@ +from abc import ABC, abstractmethod +from typing import List, Dict, Optional + +class BaseScraper(ABC): + + @abstractmethod + def __init__(self, base_url: str, user_agent: str, delay: float) -> None: + """Initialize the scraper with base parameters. + + Args: + base_url: The base URL to scrape + user_agent: User agent string to identify the scraper + delay: Time in seconds to wait between requests + """ + pass + + @abstractmethod + def fetch(self, path: str) -> Optional[str]: + """Fetch content from a specific path. + + Args: + path: The URL path to fetch + + Returns: + HTML content as string if successful, None otherwise + """ + pass + + @abstractmethod + def parse(self, html: str) -> List[str]: + """Parse HTML content. + + Args: + html: The HTML content to parse + + Returns: + List of parsed items from the HTML + """ + pass + + @abstractmethod + def scrape(self, paths: List[str]) -> Dict[str, List[str]]: + """Scrape multiple paths. + + Args: + paths: List of URL paths to scrape + + Returns: + Dictionary mapping paths to their parsed results + """ + pass diff --git a/webscraper/api/EbayAPI.py b/webscraper/api/EbayAPI.py new file mode 100644 index 0000000..15f78e3 --- /dev/null +++ b/webscraper/api/EbayAPI.py @@ -0,0 +1,55 @@ +import requests +from requests.auth import HTTPBasicAuth +from dotenv import load_dotenv +import os + + +load_dotenv() #initialize + +class EbayAPI: + + client_secret_key = os.getenv("clientsecret") + client_id_key = os.getenv("clientid") + + get_user_key = HTTPBasicAuth(client_id_key, client_secret_key) + + + def retrieve_access_token(): + try: + response = requests.post("https://api.sandbox.ebay.com/identity/v1/oauth2/token", + headers = {"Content-Type":"application/x-www-form-urlencoded"}, + data = { + "grant_type": "client_credentials", + "scope": "https://api.ebay.com/oauth/api_scope" + }, + auth=EbayAPI.get_user_key + ) + access_token = response.json().get("access_token") + status_code = response.status_code + if(status_code == 404): + raise Exception("404 error here") + return access_token + except Exception as e: + raise e + + def retrieve_ebay_response(httprequest:str,query:str): + auth = EbayAPI.retrieve_access_token() + try: + response = requests.get(httprequest, + headers={ + "Authorization": f"Bearer {auth}", + "Content-Type": "application/json" + }, + params= { + "q": query, + "category_tree_id": 0 + } + ) + status_code = response.status_code + if(status_code == 404): + raise Exception("not found 404 error") + + return response.json() + except Exception as e: + raise e + diff --git a/webscraper/api/interface.py b/webscraper/api/interface.py new file mode 100644 index 0000000..af2ef9d --- /dev/null +++ b/webscraper/api/interface.py @@ -0,0 +1,8 @@ +from abc import ABC, abstractmethod + +class ScraperAPIInterface(ABC): + + @abstractmethod + def get_scraped_data(self, paths: list[str]) -> dict: + """Given a list of paths, return scraped results.""" + pass diff --git a/webscraper/api/routes.py b/webscraper/api/routes.py new file mode 100644 index 0000000..919633c --- /dev/null +++ b/webscraper/api/routes.py @@ -0,0 +1,26 @@ +import sys +import os +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))) + +from flask import Flask, jsonify, request +from webscraper.src.Cheaper_Scraper import CheaperScraper + +app = Flask(__name__) +scraper = CheaperScraper(base_url="https://books.toscrape.com") + +@app.route('/') +def home(): + return jsonify({"message": "Welcome to Cheaper API!"}) + +@app.route('/scrape', methods=['GET']) +def scrape_books(): + paths = request.args.getlist('path') + if not paths: + return jsonify({"error": "No paths provided"}), 400 + + results = scraper.get_scraped_data(paths) + return jsonify(results) + +if __name__ == '__main__': + app.run(debug=True) + diff --git a/webscraper/api/tests/test_ebay_api.py b/webscraper/api/tests/test_ebay_api.py new file mode 100644 index 0000000..7651c13 --- /dev/null +++ b/webscraper/api/tests/test_ebay_api.py @@ -0,0 +1,35 @@ +import unittest +from unittest.mock import patch,Mock +import requests +from webscraper.api.EbayAPI import EbayAPI + +class EbayTestApi(unittest.TestCase): + + def setUp(self): + self.EbayAPI = EbayAPI + + + def test_retrieve_access_token(self): + self.EbayAPI.retrieve_access_token() + self.assertEqual(type(self.EbayAPI.retrieve_access_token()),str) + + @patch("webscraper.api.EbayAPI.requests.post") + def test_retrieve_access_token_invalid(self,mock_post): + mock_response = Mock() + mock_response.status_code = 404 + mock_response.json.return_value ={"error": "not found"} + mock_post.return_value = mock_response + + with self.assertRaises(Exception): + self.EbayAPI.retrieve_access_token() + + + + @patch("webscraper.api.EbayAPI.requests.get") + def test_retrieve_ebay_response_invalid(self,mock_get): + self.EbayAPI.retrieve_ebay_response("https://test","item") + self.assertRaises(Exception) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/webscraper/api/tests/test_routes.py b/webscraper/api/tests/test_routes.py new file mode 100644 index 0000000..4edd3f9 --- /dev/null +++ b/webscraper/api/tests/test_routes.py @@ -0,0 +1,26 @@ +import unittest +from webscraper.api.routes import app + +class TestRoutes(unittest.TestCase): + + def setUp(self): + self.client = app.test_client() + self.client.testing = True + + def test_home_route(self): + response = self.client.get('/') + self.assertEqual(response.status_code, 200) + self.assertIn(b"Welcome to Cheaper API", response.data) + + def test_scrape_no_params(self): + response = self.client.get('/scrape') + self.assertEqual(response.status_code, 400) + self.assertIn(b"No paths provided", response.data) + + def test_scrape_valid_path(self): + response = self.client.get('/scrape?path=/catalogue/page-1.html') + self.assertEqual(response.status_code, 200) + self.assertIsInstance(response.get_json(), dict) + +if __name__ == '__main__': + unittest.main() diff --git a/webscraper/main.py b/webscraper/main.py new file mode 100644 index 0000000..1534774 --- /dev/null +++ b/webscraper/main.py @@ -0,0 +1,31 @@ +from api.EbayAPI import EbayAPI +from src.Cheaper_Scraper import CheaperScraper +import json + +def main(): + + + + + # Set up the scraper for a simple legal-to-scrape website + scraper = CheaperScraper("https://books.toscrape.com", + user_agent="CheaperBot/0.1", + delay=2.0) + # Define which pages you want to scrape (you can use "/" for homepage) + pages = ["/"] + + # Use the scraper to fetch and parse the pages + results = CheaperScraper.scraper.scrape(pages) + + # Show the output in the terminal + for path, items in results.items(): + print(f"\nScraped from {path}:") + for item in items: + print("-", item) + + # Save the output to a JSON file + with open("output.json", "w") as f: + json.dump(results, f, indent=2) + +if __name__ == "__main__": + main() diff --git a/webscraper/output.json b/webscraper/output.json new file mode 100644 index 0000000..e64146a --- /dev/null +++ b/webscraper/output.json @@ -0,0 +1,24 @@ +{ + "/": [ + "A Light in the Attic", + "Tipping the Velvet", + "Soumission", + "Sharp Objects", + "Sapiens: A Brief History of Humankind", + "The Requiem Red", + "The Dirty Little Secrets of Getting Your Dream Job", + "The Coming Woman: A Novel Based on the Life of the Infamous Feminist, Victoria Woodhull", + "The Boys in the Boat: Nine Americans and Their Epic Quest for Gold at the 1936 Berlin Olympics", + "The Black Maria", + "Starving Hearts (Triangular Trade Trilogy, #1)", + "Shakespeare's Sonnets", + "Set Me Free", + "Scott Pilgrim's Precious Little Life (Scott Pilgrim #1)", + "Rip it Up and Start Again", + "Our Band Could Be Your Life: Scenes from the American Indie Underground, 1981-1991", + "Olio", + "Mesaerion: The Best Science Fiction Stories 1800-1849", + "Libertarianism for Beginners", + "It's Only the Himalayas" + ] +} \ No newline at end of file diff --git a/webscraper/package.json b/webscraper/package.json new file mode 100644 index 0000000..e69de29 diff --git a/webscraper/src/Cheaper_Scraper.py b/webscraper/src/Cheaper_Scraper.py new file mode 100644 index 0000000..27fffc0 --- /dev/null +++ b/webscraper/src/Cheaper_Scraper.py @@ -0,0 +1,97 @@ +import requests +import time +from bs4 import BeautifulSoup +import logging +from typing import Dict, List, Optional +from webscraper.ABC.base_scraper import BaseScraper +from webscraper.src.robot_check import RoboCheck +from webscraper.api.interface import ScraperAPIInterface + + + + +class CheaperScraper(BaseScraper, ScraperAPIInterface): + def __init__(self, base_url: str = "", user_agent: str = "CheaperBot/0.1", delay: float = 2.0) -> None: + """Initialize the scraper with base parameters. + + Args: + base_url: The base URL to scrape + user_agent: User agent string to identify the scraper + delay: Time in seconds to wait between requests + """ + + self.base_url = base_url.rstrip('/') + self.delay = delay + self.user_agent = user_agent + + #initialize session + self.session = requests.Session() + self.session.headers.update({"User-Agent": self.user_agent}) + + # robot logic checks if there are instances not able to be + self.robots = RoboCheck(base_url, user_agent) + + def fetch(self, path: str = "/") -> Optional[str]: + """Fetch content from a specific path. + + Args: + path: The URL path to fetch + + Returns: + HTML content as string if successful, None otherwise + """ + #Fetch a URL path if allowed + if not self.robots.can_fetch(path): + logging.warning(f"Disallowed by robots.txt: {path}") + return None + + url = self.base_url + path + + try: + response = self.session.get(url, timeout=10) + response.raise_for_status() + time.sleep(self.delay) # delay to simulate a user + return response.text + except requests.RequestException as e: + logging.error(f"Error fetching {url}: {e}") + return None + + def parse(self, html: str) -> List[str]: + """Parse HTML content. + + Args: + html: The HTML content to parse + + Returns: + List of parsed items from the HTML + """ + soup = BeautifulSoup(html, "html.parser") + results = [] + + for book in soup.find_all("article", class_="product_pod"): + title = book.h3.a["title"] + results.append(title) + + return results + + + + def scrape(self, paths: List[str]) -> Dict[str, List[str]]: + """Scrape multiple paths. + + Args: + paths: List of URL paths to scrape + + Returns: + Dictionary mapping paths to their parsed results + """ + #Fetch and parse a list of URLs + results: Dict[str, List[str]] = {} + for path in paths: + html = self.fetch(path) + if html: + results[path] = self.parse(html) + return results + + def get_scraped_data(self, paths: List[str]) -> Dict[str, List[str]]: + return self.scrape(paths) diff --git a/webscraper/src/__init__.py b/webscraper/src/__init__.py new file mode 100644 index 0000000..1eaf160 --- /dev/null +++ b/webscraper/src/__init__.py @@ -0,0 +1 @@ +#placeholder for build yaml file in github actions workflow \ No newline at end of file diff --git a/webscraper/src/robot_check.py b/webscraper/src/robot_check.py new file mode 100644 index 0000000..e47d7c7 --- /dev/null +++ b/webscraper/src/robot_check.py @@ -0,0 +1,11 @@ +from urllib.robotparser import RobotFileParser + +class RoboCheck: + def __init__(self,base_url,user_agent): + self.robot_parser = RobotFileParser(f"{base_url}/robots.txt") + self.robot_parser.read() + self.user_agent = user_agent + + def can_fetch(self, path="/") -> bool: + #check if all clear to parse a specific url path + return self.robot_parser.can_fetch(self.user_agent, path) \ No newline at end of file diff --git a/webscraper/src/tests/__init__.py b/webscraper/src/tests/__init__.py new file mode 100644 index 0000000..c043883 --- /dev/null +++ b/webscraper/src/tests/__init__.py @@ -0,0 +1 @@ +# github workflow requires an init.py \ No newline at end of file diff --git a/webscraper/src/tests/test_cheaper_scraper.py b/webscraper/src/tests/test_cheaper_scraper.py new file mode 100644 index 0000000..8792bb9 --- /dev/null +++ b/webscraper/src/tests/test_cheaper_scraper.py @@ -0,0 +1,29 @@ +import unittest +from webscraper.src.Cheaper_Scraper import CheaperScraper + +class TestCheaperScraper(unittest.TestCase): + + def setUp(self): + self.scraper = CheaperScraper("https://books.toscrape.com") + + def test_can_fetch_root_path(self): + self.assertTrue(self.scraper.robots.can_fetch("/")) + + def test_fetch_returns_html(self): + html = self.scraper.fetch("/") + self.assertIsInstance(html, str) + self.assertIn(" Date: Tue, 29 Apr 2025 22:27:29 -0700 Subject: [PATCH 6/7] direct commit --- .gitignore | 3 + .vscode/settings.json | 14 ++ accounts/__init__.py | 0 accounts/admin.py | 3 + accounts/apps.py | 6 + accounts/migrations/0001_initial.py | 31 +++++ accounts/migrations/__init__.py | 0 accounts/models.py | 31 +++++ accounts/tests.py | 3 + accounts/views.py | 3 + cheaper/__init__.py | 0 cheaper/asgi.py | 16 +++ cheaper/settings.py | 123 ++++++++++++++++++ cheaper/urls.py | 22 ++++ cheaper/wsgi.py | 16 +++ db.sqlite3 | Bin 0 -> 143360 bytes manage.py | 22 ++++ webscraper/ABC/Ebay_API.py | 15 +++ .../__pycache__/base_scraper.cpython-311.pyc | Bin 2390 -> 0 bytes webscraper/api/EbayAPI.py | 55 ++++++++ .../api/__pycache__/interface.cpython-311.pyc | Bin 819 -> 0 bytes .../api/__pycache__/routes.cpython-311.pyc | Bin 1855 -> 0 bytes .../__pycache__/test_routes.cpython-311.pyc | Bin 2319 -> 0 bytes webscraper/api/tests/test_ebay_api.py | 35 +++++ webscraper/{src => }/main.py | 13 +- webscraper/output.json | 24 ++++ .../__pycache__/CheaperScraper.cpython-39.pyc | Bin 1925 -> 0 bytes .../Cheaper_Scraper.cpython-311.pyc | Bin 4816 -> 0 bytes .../Cheaper_Scraper.cpython-39.pyc | Bin 1939 -> 0 bytes .../src/__pycache__/__init__.cpython-311.pyc | Bin 171 -> 0 bytes .../__pycache__/robot_check.cpython-311.pyc | Bin 1144 -> 0 bytes .../__pycache__/robot_check.cpython-39.pyc | Bin 760 -> 0 bytes .../test_cheaper_scraper.cpython-311.pyc | Bin 2581 -> 0 bytes 33 files changed, 430 insertions(+), 5 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 accounts/__init__.py create mode 100644 accounts/admin.py create mode 100644 accounts/apps.py create mode 100644 accounts/migrations/0001_initial.py create mode 100644 accounts/migrations/__init__.py create mode 100644 accounts/models.py create mode 100644 accounts/tests.py create mode 100644 accounts/views.py create mode 100644 cheaper/__init__.py create mode 100644 cheaper/asgi.py create mode 100644 cheaper/settings.py create mode 100644 cheaper/urls.py create mode 100644 cheaper/wsgi.py create mode 100644 db.sqlite3 create mode 100644 manage.py create mode 100644 webscraper/ABC/Ebay_API.py delete mode 100644 webscraper/ABC/__pycache__/base_scraper.cpython-311.pyc create mode 100644 webscraper/api/EbayAPI.py delete mode 100644 webscraper/api/__pycache__/interface.cpython-311.pyc delete mode 100644 webscraper/api/__pycache__/routes.cpython-311.pyc delete mode 100644 webscraper/api/tests/__pycache__/test_routes.cpython-311.pyc create mode 100644 webscraper/api/tests/test_ebay_api.py rename webscraper/{src => }/main.py (79%) create mode 100644 webscraper/output.json delete mode 100644 webscraper/src/__pycache__/CheaperScraper.cpython-39.pyc delete mode 100644 webscraper/src/__pycache__/Cheaper_Scraper.cpython-311.pyc delete mode 100644 webscraper/src/__pycache__/Cheaper_Scraper.cpython-39.pyc delete mode 100644 webscraper/src/__pycache__/__init__.cpython-311.pyc delete mode 100644 webscraper/src/__pycache__/robot_check.cpython-311.pyc delete mode 100644 webscraper/src/__pycache__/robot_check.cpython-39.pyc delete mode 100644 webscraper/src/__pycache__/test_cheaper_scraper.cpython-311.pyc diff --git a/.gitignore b/.gitignore index e69de29..385a536 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,3 @@ +*.env +__pycache__/ +*.pyc \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b2d293c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + "python.analysis.extraPaths": [ + "./webscraper/ABC" + ], + "python.testing.unittestArgs": [ + "-v", + "-s", + "./webscraper", + "-p", + "*test*.py" + ], + "python.testing.pytestEnabled": false, + "python.testing.unittestEnabled": true +} \ No newline at end of file diff --git a/accounts/__init__.py b/accounts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/accounts/admin.py b/accounts/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/accounts/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/accounts/apps.py b/accounts/apps.py new file mode 100644 index 0000000..3e3c765 --- /dev/null +++ b/accounts/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class AccountsConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'accounts' diff --git a/accounts/migrations/0001_initial.py b/accounts/migrations/0001_initial.py new file mode 100644 index 0000000..0b3e675 --- /dev/null +++ b/accounts/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# Generated by Django 5.2 on 2025-04-25 21:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Product', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=200)), + ('price', models.CharField(max_length=10)), + ('source_url', models.URLField(max_length=150)), + ], + ), + migrations.CreateModel( + name='UserAccount', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('email', models.EmailField(max_length=50, unique=True)), + ('password', models.CharField(max_length=100)), + ], + ), + ] diff --git a/accounts/migrations/__init__.py b/accounts/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/accounts/models.py b/accounts/models.py new file mode 100644 index 0000000..3ff6537 --- /dev/null +++ b/accounts/models.py @@ -0,0 +1,31 @@ +from django.db import models +from django.core.exceptions import ValidationError +import re + +def validate_email(value): + + email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' + if not re.match(email_pattern, value): + raise ValidationError('Invalid email format.') + + if ' ' in value: + raise ValidationError('Email cannot contain spaces.') + + +class UserAccount(models.Model): + email = models.EmailField(max_length=50, unique=True) + password = models.CharField(max_length=100) + + def clean(self): + validate_email(self.email) + + def __str__(self): + return self.email + +class Product(models.Model): + name = models.CharField(max_length=200) + price = models.CharField(max_length=10) + source_url = models.URLField(max_length=150) + + def __str__(self): + return self.name \ No newline at end of file diff --git a/accounts/tests.py b/accounts/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/accounts/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/accounts/views.py b/accounts/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/accounts/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/cheaper/__init__.py b/cheaper/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/cheaper/asgi.py b/cheaper/asgi.py new file mode 100644 index 0000000..2133002 --- /dev/null +++ b/cheaper/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for cheaper project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.2/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cheaper.settings') + +application = get_asgi_application() diff --git a/cheaper/settings.py b/cheaper/settings.py new file mode 100644 index 0000000..b7a0c09 --- /dev/null +++ b/cheaper/settings.py @@ -0,0 +1,123 @@ +""" +Django settings for cheaper project. + +Generated by 'django-admin startproject' using Django 5.2. + +For more information on this file, see +https://docs.djangoproject.com/en/5.2/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/5.2/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-qdsb1wl#sv2+8$7g+es&rzrovy02*m@^3!me**&z%gzstf^q4(' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'accounts', #custom user app +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'cheaper.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'cheaper.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/5.2/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/5.2/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.2/howto/static-files/ + +STATIC_URL = 'static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/cheaper/urls.py b/cheaper/urls.py new file mode 100644 index 0000000..49e4fb1 --- /dev/null +++ b/cheaper/urls.py @@ -0,0 +1,22 @@ +""" +URL configuration for cheaper project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/5.2/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path + +urlpatterns = [ + path('admin/', admin.site.urls), +] diff --git a/cheaper/wsgi.py b/cheaper/wsgi.py new file mode 100644 index 0000000..bf0a643 --- /dev/null +++ b/cheaper/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for cheaper project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.2/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cheaper.settings') + +application = get_wsgi_application() diff --git a/db.sqlite3 b/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..9a49d22ab3f896c38adf97e853d85697d0dfef76 GIT binary patch literal 143360 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 literal 0 HcmV?d00001 diff --git a/manage.py b/manage.py new file mode 100644 index 0000000..1c2fd0d --- /dev/null +++ b/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cheaper.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/webscraper/ABC/Ebay_API.py b/webscraper/ABC/Ebay_API.py new file mode 100644 index 0000000..2be5a07 --- /dev/null +++ b/webscraper/ABC/Ebay_API.py @@ -0,0 +1,15 @@ +from abc import ABC,abstractmethod + +class EbayApi(ABC): + + @abstractmethod + def retrieve_access_token() -> str: + """ retrieves the user access token for sandbox environment it's a long line + of text, numbers, symbols + """ + pass + + @abstractmethod + def retrieve_ebay_response(httprequest:str,query:str) -> dict: + """ retrieves a json of large data with category ids, names, parentcategorynodes """ + pass \ No newline at end of file diff --git a/webscraper/ABC/__pycache__/base_scraper.cpython-311.pyc b/webscraper/ABC/__pycache__/base_scraper.cpython-311.pyc deleted file mode 100644 index 2dc46e32476c327c6e1d9afa561b42332605f8cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2390 zcma)7J!~9B6rTM%pU*xZwiW(_G?Ihh5cmo@3q^{t0+x(H`Dw0THQt@|P1v8y%pBIa zKq*{M(uIP;MHGxek%A%;4JD#Vfl#y+5;SyY83`#>-kZH!-};Am?)J^RnfKnl_q{i7 zzi&1h1jgS#H@YhxA%7t=9>AM%con9*BqX5~lf>#+iQTa+V=g9WSYMY8J7{ zMnCLEAUkbjfmUQ2CuAESJHsn-@QxYoR`(*iVrTY*omqoYGoM*u zieC>T>v5UaH-Yi{GR_-)#ih@-c&c+Rz zRA(d872zY-m+4IigPJfX6o5##P)CFimWT$EzEv!kfZ<&t;Z&ql@gPe>g{s?3Xu8Su zHs>jo{C1x!txDaEA4tp1UB%-_V!6v1B(p#if`*YiU1_6Fs(mZ#vh+)Fiw#)XUghcw zo%Py5mt!K@+kA6`SsTi?ZNeXIEcFI?-S-6`?E5!3>^XbnKoNM;FTRP}fuA`w9DboX3YL%||rm@MQF!U&C* zkRc`|bInxPvD|-r zlUx9zFn&tq1(KLRQlWXGid5o_MC)gO^a{jT1}pA zoL`E5Lz8~2MK8u~0E*|r$4D;Iad6|hGIz7MAZ1j~hX|WL_I){^3G4N+I~e;2H-IGM z7(B@pxH@sqD^>OSalmSYCp&YKWmW98Dv-6Bc$HJ=gub6Qd_T#;evIo`-@n~wad9HC zcjONAFR0fzV_MFkl_?|_k>K}JzJ>&EzBFmUvNvflg)Xs_4MAJ#0LY#4_op{MwCi4T zZ+=K%dbnt&N8C)mx@I~e2M(z%?0#-Eh6}JB+S6Y1TTp^&@9q8f@4aW1N2JsMf#JpD z8khFez1ESiS)HM=x;Ovbni1H)w67knKAQh&ZU3v^-?{vM>gbj^FVH|BHd^)EVVi-( zFIRzXO%E{t1(XIw1FwOt3gy%K2Su7L%QrzCJE+Ql3?0j|o{+`Ir~RLhw;rGUAG&P| Sd^}0MSvll`6n=J`>-E%BNJU6&kqW~}=pw;}5U6lc)#U`LSTYd#VjoG#C0E;5)J`34 z;2)Hc0ToaeegVIM5qUsJOl+x+sS|c`O$D5je17lw<$d3?{lW7(V8-n)o#eZje_H2q zxC>)`*BB?jfT0Y=C`4l%Vgwkrf#Df2hoe&m;LLpW2pvXtq3iy#ZWn83>+uu4PKQzn z8mlo^Nx|YpZZ$Pb_l*>x;uDBS{m}_@JRU&mua5WWqjGNy8kg=`qdCP$55gFb1sJERS@Z6_>6yPa~?z%i69SoPkJxp837 zZR>Uv<#f!WNOz)WT(D_o?X@V{pVF*e5ya$bVq4daIWkRH8Y|(MsIZqstXo*KU^lG- zyM?lE;JA5yxEm$LuJ?|8y!SpW!I+=>)pP~t4z#Y%UQ~Hk(VD>49(0Lz=r9(xex<9X v{9DFF`$65wLvh38*&~(D43rK+=o@T)UG|p5MP3R2!`sbs8~wdxsS@@FYDdQS diff --git a/webscraper/api/__pycache__/routes.cpython-311.pyc b/webscraper/api/__pycache__/routes.cpython-311.pyc deleted file mode 100644 index 5e18603640a055ecbe54704be8c8611da39954eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1855 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 HAPDL&=E3_p diff --git a/webscraper/api/tests/test_ebay_api.py b/webscraper/api/tests/test_ebay_api.py new file mode 100644 index 0000000..7651c13 --- /dev/null +++ b/webscraper/api/tests/test_ebay_api.py @@ -0,0 +1,35 @@ +import unittest +from unittest.mock import patch,Mock +import requests +from webscraper.api.EbayAPI import EbayAPI + +class EbayTestApi(unittest.TestCase): + + def setUp(self): + self.EbayAPI = EbayAPI + + + def test_retrieve_access_token(self): + self.EbayAPI.retrieve_access_token() + self.assertEqual(type(self.EbayAPI.retrieve_access_token()),str) + + @patch("webscraper.api.EbayAPI.requests.post") + def test_retrieve_access_token_invalid(self,mock_post): + mock_response = Mock() + mock_response.status_code = 404 + mock_response.json.return_value ={"error": "not found"} + mock_post.return_value = mock_response + + with self.assertRaises(Exception): + self.EbayAPI.retrieve_access_token() + + + + @patch("webscraper.api.EbayAPI.requests.get") + def test_retrieve_ebay_response_invalid(self,mock_get): + self.EbayAPI.retrieve_ebay_response("https://test","item") + self.assertRaises(Exception) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/webscraper/src/main.py b/webscraper/main.py similarity index 79% rename from webscraper/src/main.py rename to webscraper/main.py index 700835b..dc706b0 100644 --- a/webscraper/src/main.py +++ b/webscraper/main.py @@ -1,18 +1,21 @@ - -from Cheaper_Scraper import CheaperScraper +from api.EbayAPI import EbayAPI +from src.Cheaper_Scraper import CheaperScraper import json def main(): + + + + # Set up the scraper for a simple legal-to-scrape website scraper = CheaperScraper("https://books.toscrape.com", user_agent="CheaperBot/0.1", - delay=2.0) - + delay=2.0) # Define which pages you want to scrape (you can use "/" for homepage) pages = ["/"] # Use the scraper to fetch and parse the pages - results = scraper.scrape(pages) + results = CheaperScraper.scraper.scrape(pages) # Show the output in the terminal for path, items in results.items(): diff --git a/webscraper/output.json b/webscraper/output.json new file mode 100644 index 0000000..e64146a --- /dev/null +++ b/webscraper/output.json @@ -0,0 +1,24 @@ +{ + "/": [ + "A Light in the Attic", + "Tipping the Velvet", + "Soumission", + "Sharp Objects", + "Sapiens: A Brief History of Humankind", + "The Requiem Red", + "The Dirty Little Secrets of Getting Your Dream Job", + "The Coming Woman: A Novel Based on the Life of the Infamous Feminist, Victoria Woodhull", + "The Boys in the Boat: Nine Americans and Their Epic Quest for Gold at the 1936 Berlin Olympics", + "The Black Maria", + "Starving Hearts (Triangular Trade Trilogy, #1)", + "Shakespeare's Sonnets", + "Set Me Free", + "Scott Pilgrim's Precious Little Life (Scott Pilgrim #1)", + "Rip it Up and Start Again", + "Our Band Could Be Your Life: Scenes from the American Indie Underground, 1981-1991", + "Olio", + "Mesaerion: The Best Science Fiction Stories 1800-1849", + "Libertarianism for Beginners", + "It's Only the Himalayas" + ] +} \ No newline at end of file diff --git a/webscraper/src/__pycache__/CheaperScraper.cpython-39.pyc b/webscraper/src/__pycache__/CheaperScraper.cpython-39.pyc deleted file mode 100644 index f60b0919a273978eff6938c1420d30507c94d373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1925 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 diff --git a/webscraper/src/__pycache__/__init__.cpython-311.pyc b/webscraper/src/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index c420941df3fb20175a9987d71633081ae7b7d1fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmZ3^%ge<81W$HzWmp60#~=<2FhUuh*?^4c3@Hr344RC7D;bKIfc(!O$zOK*p~b01 z#rj$K8HssinOTXIiFx`ism0kP`33sP8L5c{sYUwbsY%7jMPO!eQL=t~d}dx|NqoFs nLFF$Fo80`A(wtPgB37VrAPbB6fy4)9Mn=XD3^1aI87Kw-N4P2+ diff --git a/webscraper/src/__pycache__/robot_check.cpython-311.pyc b/webscraper/src/__pycache__/robot_check.cpython-311.pyc deleted file mode 100644 index e7f181b912b20a8a87aa86d31dda31a3707ab32f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1144 zcmaJsStyIfQkRaK`wzzVq&6=-I=qZ^35){K%&m>{N9`QHSfK7AI8UXfa}MXT;)9h z_%08_rJXW^Ib=HEgHHljB_%>Yfk)sgTi~m^3cx<@bd?leTLxSIDUUW0=F>*G5kIU3 z?1{@G#=TR!gs7*7!F6Ohz@S8YzzAduN~%BNt4v$Lcw2f&_jQaqD#m2E2NmYky`i&= zArqD7L5$FW7z-J$HhGI_zf*Qmwx7w{K+o~DjNi!$8Tw1Qi+ev45NIptpWW{Rrlu@y zTynUqH7dkwv8{2b7x_d)n@R0L39|9HW_zbvvTC|gpIhDCP7i@)eFsaVNhBP zt1+b;6It&HLz(PbbO&J*zE0oTTkFm(r2oP6VsCnJTk9EDkBvOykuh^<%p4e2&#=0N zbv$)rTYF<}<2OKeI3bQ0;Vf?P&^zD4>|y57r~_@NN$X_oWKADRBt?tNzfCUA7Pgrz z*(x7JJ2B?DAzfjyS4moCD_qX8(3);siDU@N;&~)|0%2qFtoF<=>GU;gH*%E z(Nt*VMk7dW{|HHtG#wpvT!MV#=rO`(_VpE2zuAWja*94r`XF)VSxWzp={+(!_DM|O zJO$NqA(_E+1e2*uuIE?K>MXAl<8E5aJwAmB`8LrqLSH3>97Cad@$YK}k*WP1e?OT$LI_nVf?I^>Z57G#u3fUQ$p+gIG|H{{3qWcw zNc|;WIq?BpdSb?_lpGjoyyMyNoA<_6M@K^-`}0%G?hxP?Z}u&r%^A6SN{a@K4a~7X zgtwrDPPU+vYf%WDUO?XaO*N2Xc>KOCTmPnR%sXYBu@&d{Ev3yFxqC*7fdVxU25PZ| zBGH*ib^0B3PxrUIqNfiCdk_W;dOkDNr;17KjAQn5@(AZ)gWrhg4{?nfkmMinM%)6z zM$kUdKyYHRK0LL|(vAIBpQl#P`7nwpxs0qsYK_uixFQ8oeJ~53Cn0sFxeQsUoRKTr z*ghS*13RG4{qxr^rbJLJjh#AgRO4qCwKvl*rgW9<(zcp*Jt|f*US5Sv%6d_IDS0T4 z@c@r;i0hLF!Q)-YJ)Y8d`_}lCT~thYXB;y?9K$gMBpYs6yx8EaAjvq%6U!xGP^pEy zG`^Ze`nj+NoKBa@&!UoU;fG-#(Zb?fY$n!E{*ih>ndE3kRFn5v%tFnLlwm04yw$6Q zP$K0+Dv?UK__A8OOAHv>omsbv zNh-%Fq*@3Nd7A>>c2bcz-zM+HzeiA5}$CmDPzdAhD-6iO8GkXVroVyQM+h5mlo z0c|g=WmH?Uv^527TvrHqMgvE(1Ik{fLMV)|AfH6^FKnGpQ19wo&NfRnU&wNNWkYXJ zXiz!21Ii{u&QObF6pL<Ultf-^!Q17QP^ChSBp8b@ZHL)`NAxuAJ}5eDVEY%AB^<(_EOM0EqFHVz*>yJ zW(0;*>4m2W+gU7C;@xXaNedDou7jwNKL&3#C%$9j+s=kZia%sNkNE zsH}prNvfm)@9t71t6{HI$vpZruxD2}kLFoyVNU>}yUP4AO(#^Z*AxJb^Ng2m-UFe$ zC@(G*9pPQcngwIocCtCnpxwukh+TVKJ&4`hkKJsHw_=lSY_hHbLkDbRpN(u;Z|7QU%4JhcHif+Pzv_SU ze9LLE371VYJNG+i`WZ&~zcihqHY5VVg#~~I%1=HdFBKr^!X&9G4sPq9TtpYY3dVpW zJ^;F>l}rxFg6Zw4`4!J`uM&+-gwZ`6Rw`9M^6Y_ervT@(q+kJ=Y9t{zriqYGSTN0v*Hxo7iQ9ha9>D_ zMXSnrkT0jkqKK$p{tHcBH274&}!4&v46vHS!MllXz zm&h>kbHVY%kwOJUEP<$nS6ijp1KK91WRz;N*bs&$@!at^EVazM;HtKPl|uOGs%YuDJa)4f#FmP#y Date: Tue, 6 May 2025 14:38:51 -0500 Subject: [PATCH 7/7] Update .gitignore to ignore environment, cache, and local files --- .gitignore | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 5aeb0f4..139ac7b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,54 @@ -*.env +# === Python build artifacts === *.pyc -__pycache__/ \ No newline at end of file +*.pyo +*.pyd +__pycache__/ +*.log + +# === SQLite & output files === +*.sqlite3 +*.db +output.json + +# === Environment variables === +.env +.env.* +*.env + +# === Virtual environments === +venv/ +.venv/ +.env/ + +# === VSCode project settings === +.vscode/ + +# === macOS system files === +.DS_Store + +# === Pytest and test cache === +htmlcov/ +.coverage +.cache/ +pytest_cache/ +.tox/ + +# === Jupyter Notebook === +.ipynb_checkpoints/ + +# === Django migration artifacts (optional to ignore) === +# Uncomment the lines below if you want to regenerate migrations often +# **/migrations/*.py +# **/migrations/*.pyc +# !**/migrations/__init__.py + +# === FastAPI-specific artifacts === +fastapi_email/email_db.sqlite3 + +# === IDE-specific === +.idea/ +*.sublime-project +*.sublime-workspace + +# === GitHub Codespaces or devcontainers === +.devcontainer/