diff --git a/defaults.ini b/defaults.ini
index f3b1793..2a86b71 100644
--- a/defaults.ini
+++ b/defaults.ini
@@ -1182,6 +1182,13 @@ extra_valid_entries:reviews,favs,follows
## to be romantic pairings.
ships_label:Pairings
+## Date formats used by FFDL. Published and Update don't have time.
+## See http://docs.python.org/library/datetime.html#strftime-strptime-behavior
+## Note that ini format requires % to be escaped as %%.
+#dateCreated_format:%%Y-%%m-%%d %%H:%%M:%%S
+datePublished_format:%%Y-%%m-%%d %%H:%%M:%%S
+dateUpdated_format:%%Y-%%m-%%d %%H:%%M:%%S
+
[www.fanfiktion.de]
## Some sites require login (or login for some rated stories) The
## program can prompt you, or you can save it in config. In
diff --git a/fanficdownloader/adapters/adapter_fanfictionnet.py b/fanficdownloader/adapters/adapter_fanfictionnet.py
index eece87b..5d3aa97 100644
--- a/fanficdownloader/adapters/adapter_fanfictionnet.py
+++ b/fanficdownloader/adapters/adapter_fanfictionnet.py
@@ -16,6 +16,7 @@
#
import time
+from datetime import datetime
import logging
logger = logging.getLogger(__name__)
import re
@@ -205,6 +206,14 @@ class FanFictionNetSiteAdapter(BaseSiteAdapter):
self.story.extendList('genre',genrelist)
metalist=metalist[1:]
+ # Updated: 5/8 - Published: 7/12/2010
+ # Published: 8m ago
+ dates = soup.findAll('span',{'data-xutime':re.compile(r'^\d+$')})
+ if len(dates) > 1 :
+ # updated get set to the same as published upstream if not found.
+ self.story.setMetadata('dateUpdated',datetime.fromtimestamp(float(dates[0]['data-xutime'])))
+ self.story.setMetadata('datePublished',datetime.fromtimestamp(float(dates[-1]['data-xutime'])))
+
donechars = False
while len(metalist) > 0:
if metalist[0].startswith('Chapters') or metalist[0].startswith('Status') or metalist[0].startswith('id:'):
@@ -215,18 +224,6 @@ class FanFictionNetSiteAdapter(BaseSiteAdapter):
self.story.setMetadata('favs',metalist[0].split(':')[1].strip())
elif metalist[0].startswith('Follows:'):
self.story.setMetadata('follows',metalist[0].split(':')[1].strip())
- elif metalist[0].startswith('Updated'):
- datefield = metalist[0].split(':')[1].strip()
- format = '%m/%d/%Y'
- if datefield.count('/') == 1:
- format = '%m/%d'
- self.story.setMetadata('dateUpdated',makeDate(datefield, format))
- elif metalist[0].startswith('Published'):
- datefield = metalist[0].split(':')[1].strip()
- format = '%m/%d/%Y'
- if datefield.count('/') == 1:
- format = '%m/%d'
- self.story.setMetadata('datePublished',makeDate(datefield, format))
elif metalist[0].startswith('Words'):
self.story.setMetadata('numWords',metalist[0].split(':')[1].strip())
elif not donechars:
diff --git a/plugin-defaults.ini b/plugin-defaults.ini
index 1eff81d..69898d6 100644
--- a/plugin-defaults.ini
+++ b/plugin-defaults.ini
@@ -1167,6 +1167,13 @@ extra_valid_entries:reviews,favs,follows
## to be romantic pairings.
ships_label:Pairings
+## Date formats used by FFDL. Published and Update don't have time.
+## See http://docs.python.org/library/datetime.html#strftime-strptime-behavior
+## Note that ini format requires % to be escaped as %%.
+#dateCreated_format:%%Y-%%m-%%d %%H:%%M:%%S
+datePublished_format:%%Y-%%m-%%d %%H:%%M:%%S
+dateUpdated_format:%%Y-%%m-%%d %%H:%%M:%%S
+
[www.fanfiktion.de]
## Some sites require login (or login for some rated stories) The
## program can prompt you, or you can save it in config. In