@ -61,6 +61,9 @@ class TumblrExtractor(Extractor):
elif not self . types :
elif not self . types :
self . log . warning ( " no valid post types selected " )
self . log . warning ( " no valid post types selected " )
if self . reblogs == " same-blog " :
self . _skip_reblog = self . _skip_reblog_same_blog
def items ( self ) :
def items ( self ) :
blog = None
blog = None
yield Message . Version , 1
yield Message . Version , 1
@ -70,6 +73,7 @@ class TumblrExtractor(Extractor):
continue
continue
if not blog :
if not blog :
blog = self . api . info ( self . blog )
blog = self . api . info ( self . blog )
blog [ " uuid " ] = self . blog
yield Message . Directory , blog . copy ( )
yield Message . Directory , blog . copy ( )
reblog = " reblogged_from_id " in post
reblog = " reblogged_from_id " in post
@ -158,18 +162,11 @@ class TumblrExtractor(Extractor):
return Message . Url , url , post
return Message . Url , url , post
def _skip_reblog ( self , post ) :
def _skip_reblog ( self , _ ) :
if self . reblogs != " deleted " :
return not self . reblogs
return not self . reblogs
match = re . match (
TumblrPostExtractor . pattern [ 0 ] , post [ " reblogged_root_url " ] )
def _skip_reblog_same_blog ( self , post ) :
if match :
return self . blog != post [ " reblogged_root_uuid " ]
blog = match . group ( 1 ) or match . group ( 2 )
try :
next ( self . api . posts ( blog , { " id " : match . group ( 3 ) } ) )
except exception . NotFoundError :
return False
return True
class TumblrUserExtractor ( TumblrExtractor ) :
class TumblrUserExtractor ( TumblrExtractor ) :