Ë
    @h•$  ã                   ó`  — d Z ddlZddlZddlmZ ddlmZmZmZm	Z	 ddl
Z
ddlmZ ddlZ ej                  ej                  ¬«        ej                  e«      Z G d„ d«      Z G d	„ d
e«      Z G d„ de«      Zddefd„Zdeeeef      fd„Zedk(  rd„ Z ej2                   e«       «       yy)z{
Market price scraper for FarmGenius
This module provides tools to scrape agricultural market prices from various sources.
é    N)ÚBeautifulSoup)ÚListÚDictÚAnyÚOptional)Údatetime)Úlevelc                   ó&   — e Zd ZdZdedee   fd„Zy)ÚMarketScraperz"Base scraper class for market dataÚurlÚreturnc              ƒ   ón  K  — 	 t        j                  d¬«      4 ƒd{  –—† }|j                  |«      ƒ d{  –—† }|j                  «        |j                  cddd«      ƒd{  –—†  S 7 ŒJ7 Œ37 Œ	# 1 ƒd{  –—†7  sw Y   yxY w# t
        $ r%}t        j                  d|› d|› �«       Y d}~yd}~ww xY w­w)zFetch HTML content from a URLg      >@)ÚtimeoutNzError fetching ú: )ÚhttpxÚAsyncClientÚgetÚraise_for_statusÚtextÚ	ExceptionÚloggerÚerror)Úselfr   ÚclientÚresponseÚes        úJC:\Users\aadil\OneDrive\Desktop\404\backend\app\services\market_scraper.pyÚ
fetch_pagezMarketScraper.fetch_page   s�   è ø€ ð	Ü×(Ñ(°×6Õ6¸&Ø!'§¡¨C£×0�Ø×)Ñ)Ô+Ø—}‘}÷ 7×6Ò6øØ0øð 7ø×6×6Ñ6ûô ò 	Ü�L‰L˜?¨3¨%¨r°!°Ð5Ô6Üûð	üs�   ‚B5„B žA)ŸB ¢A/·A+¸A/ÁB Á#A-Á$B Á(B5Á)B Á+A/Á-B Á/BÁ5A8Á6BÁ=B Â B5ÂB Â	B2ÂB-Â(B5Â-B2Â2B5N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   r   © ó    r   r   r      s   „ Ù,ð	 Cð 	¨H°S©Mô 	r%   r   c                   óH   — e Zd ZdZdZe› d�Zd
dedededeee	e	f      fd	„Z
y)ÚAgMarknetScraperz:Scraper for Agmarknet portal (Indian agricultural markets)zhttps://agmarknet.gov.inz/SearchCmmMkt.aspxNÚ	commodityÚstateÚdistrictr   c              ƒ   ó†  K  — 	 t        j                  «       j                  d«      }|j                  «       dv r,dddd|dœdd	d
d|dœdddd|dœdd	dd|dœdddd|dœdddd|dœgS |j                  «       dv r,dddd|dœdddd|dœd d!d"d#|dœd$d%d&d'|dœd(d)d*d+|dœd,dd-d.|dœgS |j                  «       d/v r%d0d1d2d3|dœd4d5d6d|dœd7d1d8d9|dœd:d1d;d<|dœd=d>d?d@|dœgS |j                  «       dAv r,dBdCdDd|dœdEdFdGdH|dœdIdJdKdL|dœdMdNdOdP|dœdQdRdSdT|dœdUdVdWdX|dœgS |j                  «       dYv r%dZd[dDd\|d]œd^d[d_d`|d]œdad[dbdc|d]œddd[dedf|d]œdgd[dhdi|d]œgS |j                  «       djv r%dkdldmdn|dœdodpdqdr|dœdsdtdudv|dœdwdxdydz|dœd{d|dWd}|dœgS g S # t        $ r-}t
        j                  d~|› d|› d€|› d�|› �«       g cY d‚}~S d‚}~ww xY w­w)ƒzûFetch prices for a specific commodity across different states in India
        
        Note: This is a simplified implementation that would need to be expanded
        to handle the actual form submission and parsing of the AgMarknet portal.
        z%Y-%m-%d)ÚwheatÚgehuÚgahuée   zWheat (Gehu)i’	  zPune Mandi, Maharashtra)ÚidÚcropÚprice_per_quintalÚlocationÚdateéf   zWheat (Premium)i(
  ég   i˜  zIndore Mandi, Madhya Pradeshéh   iØ	  zLudhiana Mandi, Punjabéi   zWheat (Standard)iL	  zKarnal Mandi, Haryanaéj   iÊ  zKanpur Mandi, Uttar Pradesh)ÚonionÚkandaÚpyazéÉ   zOnion (Kanda)iF  zNashik Mandi, MaharashtraéÊ   zOnion (Red)iª  éË   zOnion (Medium)i°  zAhmedabad Mandi, GujaratéÌ   zOnion (Small)i¶  zBengaluru Mandi, KarnatakaéÍ   zOnion (Large)i  zAzadpur Mandi, DelhiéÎ   i   zKurnool Mandi, Andhra Pradesh)ÚsoybeanÚsoyabeani-  ÚSoybeaniä  zUjjain Mandi, Madhya Pradeshi.  zSoybean (Yellow)i*  i/  i¨  zAkola Mandi, Maharashtrai0  iŠ  zKota Mandi, Rajasthani1  zSoybean (Black)i0  zDavangere Mandi, Karnataka)ÚriceÚpaddyÚchawali‘  zRice (Common)i€  i’  zRice (Basmati)i4!  zAmritsar Mandi, Punjabi“  zRice (Sona Masuri)ih  zNizamabad Mandi, Telanganai”  zRice (Ponni)iØ  zThanjavur Mandi, Tamil Nadui•  zRice (Parboiled)i  zBardhaman Mandi, West Bengali–  zRice (Joha)i   zJorhat Mandi, Assam)Ú	sugarcanez
sugar caneÚoosiõ  Ú	SugarcanezMill Gate Rate, Maharashtra)r0   r1   Úprice_per_tonner3   r4   iö  iN  zMill Gate Rate, Uttar Pradeshi÷  iÐ  zMill Gate Rate, Karnatakaiø  il  zMill Gate Rate, Tamil Naduiù  i”  zMill Gate Rate, Gujarat)ÚcottonÚkapasiY  zCotton (Medium Staple)i8  zRajkot Mandi, GujaratiZ  zCotton (Long Staple)i�  zAdilabad Mandi, Telanganai[  zCotton (J-34)iÔ  zSirsa Mandi, Haryanai\  zCotton (Shankar-6)i,  zAhmednagar Mandi, Maharashtrai]  zCotton (DCH-32)zDharwad Mandi, KarnatakazError fetching prices for z in z, r   N)r   ÚnowÚstrftimeÚlowerr   r   r   )r   r(   r)   r*   Útodayr   s         r   Ú
get_priceszAgMarknetScraper.get_prices%   s9  è ø€ ðC	ô —L‘L“N×+Ñ+¨JÓ7ˆEð �‰Ó Ð$=Ñ=à¨ÈTÐ_xð  CHñ  IØÐ(9ÐPTÐb{ð  FKñ  LØ¨ÈTÐ_}ð  HMñ  NØÐ(9ÐPTÐbzð  EJñ  KØÐ(:ÐQUÐczð  EJñ  KØ¨ÈTÐ_|ð  GLñ  Mðð ð —‘Ó"Ð&@Ñ@à¨ÈdÐ`{ð  FKñ  LØ¨ÈDÐ^yð  DIñ  JØÐ(8ÈtÐa{ð  FKñ  LØ¨ÈcÐ_{ð  FKñ  LØ¨ÈdÐ`vð  AFñ  GØ¨ÈDÐ^}ð  HMñ  Nðð ð —‘Ó"Ð&=Ñ=à¨	ÈÐZxð  CHñ  IØÐ(:ÐQUð  dBð  LQñ  RØ¨	ÈÐZtð  Dñ  EØ¨	ÈÐZqð  |Añ  BØÐ(9ÐPTÐb~ð  INñ  Oðð ð —‘Ó"Ð&AÑAà¨ÈdÐ`wð  BGñ  HØÐ(8ÈtÐayð  DIñ  JØÐ(<ÐSWð  fBð  LQñ  RØ¨ÈTÐ_|ð  GLñ  MØÐ(:ÐQUð  dBð  LQñ  RØ¨ÈDÐ^sð  ~Cñ  Dðð ð —‘Ó"Ð&HÑHà¨ÈÐZwð  BGñ  HØ¨ÈÐZyð  DIñ  JØ¨ÈÐZuð  @Eñ  FØ¨ÈÐZvð  AFñ  GØ¨ÈÐZsð  ~Cñ  Dðð ð —‘Ó"Ð&9Ñ9àÐ(@ÐW[ð  jAð  KPñ  QØÐ(>ÐUYð  hCð  MRñ  SØ¨ÈdÐ`vð  AFñ  GØÐ(<ÐSWð  fEð  OTñ  UØÐ(9ÐPTÐb|ð  GLñ  Mðð ð �	øäò 	Ü�L‰LÐ5°i°[ÀÀXÀJÈbÐQVÐPWÐWYÐZ[ÐY\Ð]Ô^Ø�Iûð	üs}   ‚G„A F Á$GÁ%=F Â"GÂ#6F ÃGÃ=F ÄGÄ6F ÅGÅ6F ÆGÆF ÆGÆ	F>Æ"F9Æ3F>Æ4GÆ9F>Æ>G©NN)r   r    r!   r"   ÚBASE_URLÚ
SEARCH_URLr#   r   r   r   rS   r$   r%   r   r'   r'      sP   „ ÙDà)€HØ�:Ð/Ð0€JñI¨#ð I°cð IÈCð IÐ[_Ð`dÐehÐjmÐemÑ`nÑ[oô Ir%   r'   c                   ó>   — e Zd ZdZdZd	dedededeeeef      fd„Z	y)
ÚKrishiMandiScraperz/Scraper for KrishiMandi (another market source)zhttps://krishimandi.example.comNr1   r)   r*   r   c              ƒ   ó   K  — g S ­w)z)Get prices from Krishi Mandi across Indiar$   )r   r1   r)   r*   s       r   rS   zKrishiMandiScraper.get_pricesu   s   è ø€ ð ˆ	ùs   ‚rT   )
r   r    r!   r"   rU   r#   r   r   r   rS   r$   r%   r   rX   rX   p   s>   „ Ù9à0€Hñ Sð °ð Àsð ÐVZÐ[_Ð`cÐehÐ`hÑ[iÑVjô r%   rX   Úsourcec                 óˆ   — t         t        dœ}|j                  | j                  «       «      }|st	        d| › �«      ‚ |«       S )z/Return appropriate scraper based on source name)Ú	agmarknetÚkrishimandizUnknown scraper source: )r'   rX   r   rQ   Ú
ValueError)rZ   ÚscrapersÚscraper_classs      r   Úget_scraperra   |   sE   € ô &Ü)ñ€Hð
 —L‘L §¡£Ó0€MÙÜÐ3°F°8Ð<Ó=Ð=á‹?Ðr%   r   c               ƒ   óÞ   K  — t        d«      } g d¢}|D �cg c]  }| j                  |«      ‘Œ }}t        j                  |Ž ƒ d{  –—† }g }|D ]  }|j	                  |«       Œ |S c c}w 7 Œ%­w)zMGet current prices for common crops across all of India from multiple sourcesr\   )r,   r:   rC   rI   rF   rM   N)ra   rS   ÚasyncioÚgatherÚextend)ÚscraperÚcommon_cropsr1   ÚtasksÚresultsÚ
all_pricesÚresults          r   Úget_all_pricesrl   ‰   sx   è ø€ ä˜+Ó&€Gò P€LÙ2>Ó?±,¨$ˆW×Ñ Õ%°,€EÐ?Ü—N‘N EÐ*×*€Gð €JÛˆØ×Ñ˜&Õ!ð ð Ðùò @Ø*ús   ‚A-–A&®A-ÁA+Á&A-Ú__main__c               ƒ   ót   K  — t        «       ƒ d {  –—† } t        t        j                  | d¬«      «       y 7 Œ%­w)Né   )Úindent)rl   ÚprintÚjsonÚdumps)Úpricess    r   Útestru   ›   s)   è ø€ Ü%Ó'×'ˆÜŒd�j‰j˜¨Ô*Õ+ð (ús   ‚8�6‘&8)r\   )r"   r   rc   Úbs4r   Útypingr   r   r   r   rr   r   ÚloggingÚbasicConfigÚINFOÚ	getLoggerr   r   r   r'   rX   r#   ra   rl   ru   Úrunr$   r%   r   Ú<module>r}      s¼   ðñó Û Ý ß ,Ó ,Û Ý Û ð €× Ñ ˜'Ÿ,™,Õ 'Ø	ˆ×	Ñ	˜8Ó	$€÷ñ ôO�}ô Oôb	˜ô 	ñ˜ó ð˜d 4¨¨S¨¡>Ñ2ó ð" ˆzÒò,ð €G‡K�K‘“Õð r%   