If some fields have tags inside of them, they are cut. This patch keep
track of the depth for all relevant fields to avoid truncation.
self.parsing = False
self.subs = []
self.attr = None
self.parsing = False
self.subs = []
self.attr = None
self.cur = None
self.in_script_style = False
self.cur = None
self.in_script_style = False
self.parsing = True
elif attrs.get('id') == 'buscador_detalle_sub':
self.attr = 'desc'
self.parsing = True
elif attrs.get('id') == 'buscador_detalle_sub':
self.attr = 'desc'
+ self.attr_depth = self.depth + 1
+ self.cur[self.attr] = ''
elif tag == 'a':
if attrs.get('class') == 'titulo_menu_izq':
self.attr = 'titulo'
elif tag == 'a':
if attrs.get('class') == 'titulo_menu_izq':
self.attr = 'titulo'
+ self.attr_depth = self.depth + 1
+ self.cur[self.attr] = ''
elif attrs.get('href', '').startswith(self.down_uri):
self.cur['url'] = attrs['href']
# br are usually not closed, so ignore them in depth calculation
elif attrs.get('href', '').startswith(self.down_uri):
self.cur['url'] = attrs['href']
# br are usually not closed, so ignore them in depth calculation
if tag == 'script' or tag == 'style':
self.in_script_style = False
return
if tag == 'script' or tag == 'style':
self.in_script_style = False
return
+ if self.depth == self.attr_depth:
+ self.attr = None
+ self.attr_depth = 0
# see comment in handle_starttag()
if tag != 'br':
self.depth -= 1
# see comment in handle_starttag()
if tag != 'br':
self.depth -= 1
if self.in_script_style:
return
if self.attr is not None and data:
if self.in_script_style:
return
if self.attr is not None and data:
- self.cur[self.attr] = data
- self.attr = None
- elif data in ('Downloads:', 'Cds:', 'Comentarios:',
- 'Formato:'):
+ self.cur[self.attr] += ' ' + data
+ if self.attr_depth == 0:
+ self.cur[self.attr] = self.cur[self.attr].strip()
+ self.attr = None
+ self.attr_depth = 0
+ elif data in ('Downloads:', 'Cds:', 'Comentarios:', 'Formato:'):
self.attr = data[:-1].lower()
self.attr = data[:-1].lower()
+ self.attr_depth = 0
+ self.cur[self.attr] = ''
elif data == 'Subido por:':
self.attr = 'autor'
elif data == 'Subido por:':
self.attr = 'autor'
+ self.attr_depth = 0
+ self.cur[self.attr] = ''
elif data == 'el':
self.attr = 'fecha'
elif data == 'el':
self.attr = 'fecha'
+ self.attr_depth = 0
+ self.cur[self.attr] = ''
def subdivx_get_subs(query_str):
def subdivx_get_subs(query_str):