]> git.phdru.name Git - bookmarks_db.git/commitdiff
Extract html redirect even if ther is no title
authorOleg Broytman <phd@phdru.name>
Sun, 23 Sep 2012 22:54:49 +0000 (22:54 +0000)
committerOleg Broytman <phd@phdru.name>
Sun, 23 Sep 2012 22:54:49 +0000 (22:54 +0000)
git-svn-id: file:///home/phd/archive/SVN/bookmarks_db/trunk@366 fdd5c36f-1aea-0310-aeeb-c58d7e2b6c23

doc/ANNOUNCE
parse_html/bkmk_ph_beautifulsoup.py
parse_html/bkmk_ph_etreetidy.py
parse_html/bkmk_ph_html5.py
parse_html/bkmk_ph_htmlparser.py
parse_html/bkmk_ph_lxml.py

index fd50ef5512339e4114d0a2fa0c25674047de7056..57b0f69387b3a783b94009c9a8be6d46a32f2bf2 100644 (file)
@@ -13,6 +13,8 @@ WHAT'S NEW in version 4.5.2 (2012-??-??).
 
    Fixed a bug in handling place: URIs (do not append '//').
 
+   Extract html redirect even if ther is no title.
+
 
 WHAT'S NEW in version 4.5.1 (2011-12-28).
 
index 437f67b73fba1b511a0a4111cc2557b9e8facfde..a0ef6af76a5c78dc061d24acbf95498b44912cec 100644 (file)
@@ -84,18 +84,16 @@ def parse_html(filename, charset=None, log=None):
       # Lookup TITLE in the root
       title = root.title
 
-   if title is None:
-      return None
-
-   if title.string:
-      title = title.string
-   else:
-      parts = []
-      for part in title:
-         if not isinstance(part, basestring):
-            part = unicode(part)
-         parts.append(part.strip())
-      title = ''.join(parts)
+   if title is not None:
+       if title.string:
+          title = title.string
+       else:
+          parts = []
+          for part in title:
+             if not isinstance(part, basestring):
+                part = unicode(part)
+             parts.append(part.strip())
+          title = ''.join(parts)
 
    meta = head.find(_find_contenttype, recursive=False)
    if meta:
@@ -112,7 +110,7 @@ def parse_html(filename, charset=None, log=None):
    else:
       meta_charset = False
 
-   if _charset or meta_charset:
+   if title and (_charset or meta_charset):
       title = title.encode(_charset or meta_charset)
 
    meta = head.find(_find_refresh, recursive=False)
@@ -127,6 +125,8 @@ def parse_html(filename, charset=None, log=None):
    else:
       icon = None
 
+   if (title is None) and (refresh is None) and (icon is None):
+      return None
    return HTMLParser(_charset, meta_charset, title, refresh, icon)
 
 def _find_contenttype(Tag):
index f5e794c68aa7c9446a903dca081f23e739fc95d6..c823dfac4a9929524e2388b3015716f98791c6a7 100644 (file)
@@ -29,8 +29,6 @@ def parse_html(filename, charset=None, log=None):
     title = html_tree.findtext('head/title')
     if title is None:
         title = html_tree.findtext('title')
-        if title is None:
-            return None
 
     meta = html_tree.findall('head/meta')
     for m in meta:
@@ -46,7 +44,7 @@ def parse_html(filename, charset=None, log=None):
     else:
         meta_charset = False
 
-    if charset or meta_charset:
+    if title and (charset or meta_charset):
         title = title.encode(charset or meta_charset)
 
     for m in meta:
@@ -63,4 +61,6 @@ def parse_html(filename, charset=None, log=None):
     else:
         icon = None
 
+    if (title is None) and (refresh is None) and (icon is None):
+        return None
     return HTMLParser(charset, meta_charset, title, refresh, icon)
index 0e86477e0bc4e749620e5dd5860c7fcb67042302..a4906288af13fe5da0cf3f24f39e30a010f7cbe7 100644 (file)
@@ -52,9 +52,6 @@ def parse_html(filename, charset=None, log=None):
                 else:
                     title = ''
 
-        if title is None:
-            return None
-
         for node in head.childNodes:
             if node.name == 'meta' and \
                     ('http-equiv' in node.attributes) and \
@@ -72,7 +69,7 @@ def parse_html(filename, charset=None, log=None):
         if not charset:
             charset = parser.tokenizer.stream.charEncoding[0]
 
-        if charset or meta_charset:
+        if title and (charset or meta_charset):
             title = title.encode(charset or meta_charset)
 
         for node in head.childNodes:
@@ -98,7 +95,6 @@ def parse_html(filename, charset=None, log=None):
                 else:
                     title = ''
 
-        if title is None:
-            return None
-
+    if (title is None) and (refresh is None) and (icon is None):
+        return None
     return HTMLParser(charset, meta_charset, title, refresh, icon)
index 5c0a440ff7fea80bba26b58a0e729b75df8567cc..8cdd240a06c7fb3514e79eb9df571dcf1b67279c 100644 (file)
@@ -93,7 +93,6 @@ def parse_html(filename, charset=None, log=None):
    except (HTMLParseError, HTMLHeadDone):
       pass
 
-   if parser.title is None:
+   if (parser.title is None) and (parser.refresh is None) and (parser.icon is None):
       return None
-
    return parser
index 26c92680b49c76b4751917679b29e61436277747..b14be408571ba53e0cfa5f60997394658ad2061b 100644 (file)
@@ -23,8 +23,6 @@ def parse_html(filename, charset=None, log=None):
     title = html_tree.findtext('head/title')
     if title is None:
         title = html_tree.findtext('title')
-        if title is None:
-            return None
 
     meta = html_tree.findall('head/meta')
     for m in meta:
@@ -40,7 +38,7 @@ def parse_html(filename, charset=None, log=None):
     else:
         meta_charset = False
 
-    if charset or meta_charset:
+    if title and (charset or meta_charset):
         title = title.encode(charset or meta_charset)
 
     for m in meta:
@@ -57,4 +55,6 @@ def parse_html(filename, charset=None, log=None):
     else:
         icon = None
 
+    if (title is None) and (refresh is None) and (icon is None):
+        return None
     return HTMLParser(charset, meta_charset, title, refresh, icon)