a
    xd                     @   sn   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZddlm	Z	m
Z
mZ dd Zedkrje  dS )    N   )enable_loggingwrite_posts_to_csvget_profilec            	      C   s  t jddd} | jdtdd | jddtd	d | jd
dtddd | jddtddd | jddtddd | jddddd | jdddddd | jd d!td"d | jd#dd$d | jd%d&dd'd | jd(d)dd*d | jd+tjd,d-d.d/ | jd0d1d2d.d | jd3d4tjd5d6gd5d7d8 | jd9d:d;d<td=d> | jd?d@tdAd | jdBdCdDdEdFdG | jdHdIdJdK dLd | jdMdNtdOdPdQ | jdRdStdTd | jdUdVddWdXdY | jdZd[dd\dXdY | jd]dd^dXd | jd_td`d | jdadbdcddtded> | jdfddgdXd | 	 }|j
dkrHt|j
dh|_
tjtjtjdi|j
 }t| |jr|jd.u rrt|jdj |j |_|jd.u rt }|jdkkrtj}nt|jdldm|dn}t|j|j|jdo}|jd6krtj||tdddp n"t !||" }|#  |$| |%  n|j&rdqnd}||jdr|jd;|j'ds|j(dt|jdu|j)dv|j*dw|j"dx|j+dy|j,dz|j-|j.|j/|j0|j1d{d[|j2dV|j3d||j4 i}t5f i ||j|j6|j|j7d} d.S )~z2facebook-scraper entry point when used as a scriptzfacebook-scraperz/Scrape Facebook public pages without an API key)progdescriptionaccountzFacebook account or group)typehelpz-fz
--filenamezOutput filenamez-pz--pageszNumber of pages to download
   )r	   r
   defaultz-sz--sleepz#How long to sleep for between postsr   z-tz	--timeoutz@How long to wait in seconds for Facebook servers before abortingz-gz--group
store_truezUse group scraper)actionr
   z-vz	--verbosecountzEnable logging)r   r
   r   z-cz	--cookieszPath to a cookies filez
--commentszExtract commentsz-rz--reactionszExtract reactionsz-rsz
--reactorszExtract reactorsz--dumpdump_locationzJLocation where to save the HTML source of the posts (useful for debugging)N)r	   destr
   r   z
--encodingstorezEncoding for the output filez-fmtz--formatcsvjsonzWhat format to export as)r	   choicesr   r
   z-dz--days-limit
days_limitiB  zNumber of days to download)r   r   r	   r
   z-rfz--resume-filez:Filename to store the last pagination URL in, for resumingz-nerz--no-extra-requestsallow_extra_requestsstore_falsezGDisable making extra requests (for things like high quality image URLs))r   r   r
   z-kz--keysc                 S   s   | j ddS )N,)sep)split)s r   Q/var/www/html/Ranjet/env/lib/python3.9/site-packages/facebook_scraper/__main__.py<lambda>S       zrun.<locals>.<lambda>zkComma separated list of which keys or columns to return. This lets you filter to just your desired outputs.z-mz
--matchingz.+z.Filter to just posts matching regex expression)r	   r   r
   z-nmz--not-matchingz2Filter to just posts not matching regex expressionz--extra-info 
extra_infozFTry to do an extra request to get the post reactions. Default is FalseF)r   r   r
   r   z--use-youtube-dl
youtube_dlzUse Youtube-DL for (high-quality) video extraction. You need to have youtube-dl installed on your environment. Default is False.z	--profilezExtract an account's profilez	--friendsz6When extracting a profile, how many friends to extractz-pppz--posts-per-pageposts_per_page   z!Number of posts to fetch per pagez--sourcezInclude HTML source   )r      r%   z	_profile.-w )newlineencoding)friendscookies)r   indentgroupformatresume_filer-   timeoutsleepkeysmatchingnot_matchingoptions)	reactionsreactorscommentsr   r#   Zremove_source)filenamepagesr+   r   )8argparseArgumentParseradd_argumentstrintfloatpathlibPathlower
parse_argsverboseminloggingWARNINGINFODEBUGr   profiler;   r   r0   r+   localegetpreferredencodingsysstdoutopenr   r,   r-   r   dumpr   
DictWriterr4   writeheaderwriterowcloser/   r   r1   r2   r3   r5   r6   r8   r9   r:   r   r#   r"   r!   sourcer   r<   r   )	parserargslevelr+   Zoutput_filerM   Zdict_writerZaccount_typekwargsr   r   r   run   sV   


r]   __main__)r=   rI   rC   datetimerP   rN   r   r   r)   r   r   r   r]   __name__r   r   r   r   <module>   s    >