From 092a0bcea072875cdd8db6367308a396179abefa Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Mon, 9 Jan 2012 22:34:01 -0600 Subject: [PATCH] Fixes for fimfiction.net site changes. --- fanficdownloader/adapters/adapter_fimfictionnet.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/fanficdownloader/adapters/adapter_fimfictionnet.py b/fanficdownloader/adapters/adapter_fimfictionnet.py index cddcb8f..5dd546a 100644 --- a/fanficdownloader/adapters/adapter_fimfictionnet.py +++ b/fanficdownloader/adapters/adapter_fimfictionnet.py @@ -87,8 +87,10 @@ class FimFictionNetSiteAdapter(BaseSiteAdapter): raise exceptions.AdultCheckRequired(self.url) soup = bs.BeautifulSoup(data).find("div", {"class":"content_box post_content_box"}) - - title, author = [link.text for link in soup.find("h2").findAll("a")] + + titleheader = soup.find("h2") + title = titleheader.find("a", href=re.compile(r'^/story/')).text + author = titleheader.find("a", href=re.compile(r'^/user/')).text self.story.setMetadata("title", title) self.story.setMetadata("author", author) self.story.setMetadata("authorId", author) # The author's name will be unique @@ -126,7 +128,9 @@ class FimFictionNetSiteAdapter(BaseSiteAdapter): status = status_bar.text.split("|")[0].strip().replace("Incomplete", "In-Progress").replace("On Hiatus", "In-Progress").replace("Complete", "Completed") self.story.setMetadata('status', status) self.story.setMetadata('rating', status_bar.span.text) - self.story.setMetadata('numWords', status_bar.div.b.text) + # This way is less elegant, perhaps, but more robust in face of format changes. + numWords = status_bar.find("div",{"class":"word_count"}).b.text + self.story.setMetadata('numWords', numWords) description_soup = soup.find("div", {"class":"description"}) # Sometimes the description has an expanding element @@ -158,4 +162,4 @@ class FimFictionNetSiteAdapter(BaseSiteAdapter): if soup == None: raise exceptions.FailedToDownload("Error downloading Chapter: %s! Missing required element!" % url) return utf8FromSoup(soup) - \ No newline at end of file +