Selaa lähdekoodia

Link profile location to search query if available

Fixes #60
Zed 7 vuotta sitten
vanhempi
commit
83a651e732
3 muutettua tiedostoa jossa 15 lisäystä ja 2 poistoa
  1. 1 1
      src/parser.nim
  2. 8 0
      src/parserutils.nim
  3. 6 1
      src/views/profile.nim

+ 1 - 1
src/parser.nim

@@ -11,9 +11,9 @@ proc parseTimelineProfile*(node: XmlNode): Profile =
     fullname:  profile.getName(pre & "nameLink"),
     username:  profile.getUsername(pre & "screenname"),
     joinDate:  profile.getDate(pre & "joinDateText"),
-    location:  profile.selectText(pre & "locationText").stripText(),
     website:   profile.selectAttr(pre & "urlText a", "title"),
     bio:       profile.getBio(pre & "bio"),
+    location:  getLocation(profile),
     userpic:   node.getAvatar(".profile-picture img"),
     verified:  isVerified(profile),
     protected: isProtected(profile),

+ 8 - 0
src/parserutils.nim

@@ -92,6 +92,14 @@ proc getBio*(profile: XmlNode; selector: string; fallback=""): string =
     bio = profile.selectText(fallback)
   stripText(bio)
 
+proc getLocation*(profile: XmlNode): string =
+  let sel = ".ProfileHeaderCard-locationText"
+  result = profile.selectText(sel).stripText()
+
+  let link = profile.selectAttr(sel & " a", "data-place-id")
+  if link.len > 0:
+    result &= ":" & link
+
 proc getAvatar*(profile: XmlNode; selector: string): string =
   profile.selectAttr(selector, "src").getUserpic()
 

+ 6 - 1
src/views/profile.nim

@@ -29,7 +29,12 @@ proc renderProfileCard*(profile: Profile; prefs: Prefs): VNode =
 
       if profile.location.len > 0:
         tdiv(class="profile-location"):
-          span: icon "location", profile.location
+          span: icon "location"
+          let loc = profile.location.split(":")
+          if loc.len > 1:
+            a(href=("/search?q=place:" & loc[1])): text loc[0]
+          else:
+            span: text loc[0]
 
       if profile.website.len > 0:
         tdiv(class="profile-website"):