3
@6^                 @   s@   d dl Z d dlZd dlZd dlmZmZmZ G dd deZdS )    N)
SpiderFootSpiderFootPluginSpiderFootEventc               @   sd   e Zd ZdZddddZddddZd	Ze fd
dZdd Z	dd Z
dd ZdddZdd Zd	S )
sfp_flickrzVFlickr:Footprint,Investigate,Passive:Social Media::Look up e-mail addresses on Flickr.         )pauseper_pagemaxpagesz+Number of seconds to pause between fetches.z#Maximum number of results per page.z,Maximum number of pages of results to fetch.Nc             C   s8   || _ | j | _x"t|j D ]}|| | j|< qW d S )N)sftempStorageresultslistkeysopts)selfsfcuserOptsopt r   5/var/www/spiderfoot.crq.systems/modules/sfp_flickr.pysetup(   s    
zsfp_flickr.setupc             C   s   ddgS )NINTERNET_NAMEDOMAIN_NAMEr   )r   r   r   r   watchedEvents0   s    zsfp_flickr.watchedEventsc             C   s   dgS )N	EMAILADDRr   )r   r   r   r   producedEvents4   s    zsfp_flickr.producedEventsc             C   sN   | j jd| jd | jd d}|d d kr.d S tjd|d }|sFd S |d S )Nzhttps://www.flickr.com/_fetchtimeout
_useragent)timeout	useragentcontentz1YUI_config.flickr.api.site_key = "([a-zA-Z0-9]+)"r   )r   fetchUrlr   refindall)r   resr   r   r   r   retrieveApiKey8   s    zsfp_flickr.retrieveApiKeyc             C   sr   d}d}|d7 }|d7 }|dt | d t | d | d | d	 | 7 }| jj|| jd
 | jd d}|d S )Njsonz%https://api.flickr.com/services/rest?z]sort=relevance&parse_tags=1&content_type=7&extras=description,owner_name,path_alias,realname&zihermes=1&hermesClient=1&reqId=&nojsoncallback=1&viewerNSID=&method=flickr.photos.search&csrf=&lang=en-US&z	per_page=z&page=z&text=z	&api_key=z&format=r   r   )r    r!   r"   )strr   r#   r   )r   qryapi_keypager
   outputurlr&   r   r   r   queryF   s    4zsfp_flickr.queryc             C   s  |j }|j}|j}|| jkr d S d| j|< | jjd| d |  | j }|s`| jjdd d S | jjd|  d}| jd }| jd	 }x||kr| j	 rd S | j
d
| |||d}	|	d krd S ytj|	}
W n. tk
r  } z| jjd d S d }~X nX |
d dks | jjd d S d|
kr.d S d|
d kr@d S t|
d d }||k r^|}d|
d krt|
d d }||kr|}| jjdt| d t|  x|
d d D ]}| jjtt|jd}x|D ]}|j jd
d }| j j|ddds| jjd|  q|| jkr| jjd|  td|| j|}| j| d| j|< qW qW |d7 }tj| jd  qW d S )NTzReceived event, z, from zFailed to obtain API keyFzRetrieved API key: r   r   r
   @)r,   r
   zError processing JSON response.statokz Error retrieving search results.ZphotospagesZmax_allowed_pageszParsing page z of photozunicode-escape)includeChildrenincludeParentszSkipped address: zFound e-mail address: r   r	   )	eventTypemoduledatar   r   debugr'   errorr   checkForStopr/   r(   loads	Exceptionintinfor)   parseEmailsbytesdecodelowersplit	getTargetmatchesr   __name__notifyListenerstimesleep)r   event	eventNamesrcModuleName	eventDatar+   r,   r3   r
   r&   r9   eZresult_pagesZallowed_pagesr4   emailsemailmailDomevtr   r   r   handleEventR   sn    






 

zsfp_flickr.handleEvent)r   r   )rH   
__module____qualname____doc__r   optdescsr   dictr   r   r   r'   r/   rU   r   r   r   r   r      s   
r   )r(   r$   rJ   sflibr   r   r   r   r   r   r   r   <module>   s   