Sfoglia il codice sorgente

Strip nbsp from account names

Zed 7 anni fa
parent
commit
2ee79e7970
2 ha cambiato i file con 9 aggiunte e 3 eliminazioni
  1. 2 2
      src/parser.nim
  2. 7 1
      src/parserutils.nim

+ 2 - 2
src/parser.nim

@@ -34,7 +34,7 @@ proc parseIntentProfile*(profile: XmlNode): Profile =
 
 proc parseTweetProfile*(profile: XmlNode): Profile =
   result = Profile(
-    fullname: profile.getAttr("data-name"),
+    fullname: profile.getAttr("data-name").stripNbsp(),
     username: profile.getAttr("data-screen-name"),
     userpic:  profile.getAvatar(".avatar"),
     verified: isVerified(profile)
@@ -48,7 +48,7 @@ proc parseQuote*(quote: XmlNode): Quote =
   )
 
   result.profile = Profile(
-    fullname: quote.selectText(".QuoteTweet-fullname"),
+    fullname: quote.selectText(".QuoteTweet-fullname").stripNbsp(),
     username: quote.getAttr("data-screen-name"),
     verified: isVerified(quote)
   )

+ 7 - 1
src/parserutils.nim

@@ -3,6 +3,9 @@ import nimquery, regex
 
 import ./types, ./formatters, ./api
 
+from unicode import Rune, `$`
+const nbsp = $Rune(0x000A0)
+
 const
   thumbRegex = re".+:url\('([^']+)'\)"
   gifRegex = re".+thumb/([^\.']+)\.jpg.*"
@@ -26,6 +29,9 @@ proc getHeader(profile: XmlNode): XmlNode =
   if result.isNil:
     result = profile.querySelector(".ProfileCard-userFields")
 
+proc stripNbsp*(text: string): string =
+  text.replace(nbsp, "")
+
 proc isVerified*(profile: XmlNode): bool =
   getHeader(profile).selectText(".Icon.Icon--verified").len > 0
 
@@ -33,7 +39,7 @@ proc isProtected*(profile: XmlNode): bool =
   getHeader(profile).selectText(".Icon.Icon--protected").len > 0
 
 proc getName*(profile: XmlNode; selector: string): string =
-  profile.selectText(selector).strip()
+  profile.selectText(selector).strip().stripNbsp()
 
 proc getUsername*(profile: XmlNode; selector: string): string =
   profile.selectText(selector).strip(chars={'@', ' '})