diff --git a/fanficfare/adapters/adapter_fimfictionnet.py b/fanficfare/adapters/adapter_fimfictionnet.py
index 9383b2d7..b5a195b5 100644
--- a/fanficfare/adapters/adapter_fimfictionnet.py
+++ b/fanficfare/adapters/adapter_fimfictionnet.py
@@ -231,7 +231,7 @@ class FimFictionNetSiteAdapter(BaseSiteAdapter):
# Date published
# falls back to oldest chapter date for stories that haven't been officially published yet
- pubdatetag = storyContentBox.find('span', {'class':'date_approved'})
+ pubdatetag = storyContentBox.find('span', {'class':'approved-date'})
if pubdatetag is None:
if oldestChapter is None:
#this will only be true when updating metadata for stories that have 0 chapters
@@ -241,7 +241,7 @@ class FimFictionNetSiteAdapter(BaseSiteAdapter):
else:
self.story.setMetadata("datePublished", oldestChapter)
else:
- pubDate = self.ordinal_date_string_to_date(pubdatetag('span')[1].text)
+ pubDate = self.date_span_tag_to_date(pubdatetag)
self.story.setMetadata("datePublished", pubDate)
# Characters
@@ -311,19 +311,22 @@ class FimFictionNetSiteAdapter(BaseSiteAdapter):
if "online" in lastLoginString:
lastLogin = date.today()
elif "offline" in lastLoginString:
- span = listItems[1].find('span',{'data-time':re.compile(r'^\d+$')})
- ## Jun 27th, 2015
- ## No timezone adjustment is done.
- if span != None:
- lastLogin = datetime.fromtimestamp(float(span['data-time']))
- ## Sometimes, for reasons that are unclear, data-time is not present. Parse the date out of the title instead.
- else:
- span = listItems[1].find('span', title=True)
- loginRegex = re.search('([a-zA-Z ]+)([0-9]+)(th of|nd of|rd of)([a-zA-Z ]+[0-9]+)', span['title'])
- loginString = loginRegex.group(2) + loginRegex.group(4)
- lastLogin = datetime.strptime(loginString, "%d %B %Y")
+ lastLogin = self.date_span_tag_to_date(listItems[1])
self.story.setMetadata("authorLastLogin", lastLogin)
+ def date_span_tag_to_date(self, containingtag):
+ ## Jun 27th, 2015
+ ## No timezone adjustment is done.
+ span = containingtag.find('span',{'data-time':re.compile(r'^\d+$')})
+ if span != None:
+ return datetime.fromtimestamp(float(span['data-time']))
+ ## Sometimes, for reasons that are unclear, data-time is not present. Parse the date out of the title instead.
+ else:
+ span = containingtag.find('span', title=True)
+ dateRegex = re.search('([a-zA-Z ]+)([0-9]+)(th of|nd of|rd of)([a-zA-Z ]+[0-9]+)', span['title'])
+ dateString = dateRegex.group(2) + dateRegex.group(4)
+ return datetime.strptime(dateString, "%d %B %Y")
+
def ordinal_date_string_to_date(self, datestring):
datestripped=re.sub(r"(\d+)(st|nd|rd|th)", r"\1", datestring.strip())
return makeDate(datestripped, self.dateformat)