U
    @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   s4   || _ |  | _t| D ]}|| | j|< q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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$   )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d| d |  |  }|s`| jdd d S | jd|  d}| jd }| jd	 }||kr~| 	 rd S | j
d
| |||d}	|	d krd S zt|	}
W n6 tk
r } z| jd W Y d S d }~X Y nX |
d dks$| jd d S d|
kr2d S d|
d krDd S t|
d d }||k rb|}d|
d krt|
d d }||kr|}| jdt| d t|  |
d d D ]}| jtt|d}|D ]}| d
d }|  j|ddds| jd|  q|| jkr| jd|  td|| j|}| | d| j|< qܐq|d7 }t| jd  qd 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   checkForStopr1   r*   loads	Exceptionintinfor+   parseEmailsbytesdecodelowersplit	getTargetmatchesr   __name__notifyListenerstimesleep)r   event	eventNamesrcModuleName	eventDatar-   r.   r5   r
   r(   r;   eZresult_pagesZallowed_pagesr6   emailsemailmailDomevtr   r   r   handleEventR   sn    







 
zsfp_flickr.handleEvent)r   r   )rJ   
__module____qualname____doc__r   optdescsr   dictr   r   r   r)   r1   rW   r   r   r   r   r      s    
r   )r*   r&   rL   sflibr   r   r   r   r   r   r   r   <module>   s   