.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
searx.engines.wikidata.WDDateAttribute Class Reference
Inheritance diagram for searx.engines.wikidata.WDDateAttribute:
Collaboration diagram for searx.engines.wikidata.WDDateAttribute:

Public Member Functions

 get_select (self)
 get_where (self)
 get_group_by (self)
 format_8 (self, value, locale)
 format_9 (self, value, locale)
 format_10 (self, value, locale)
 format_11 (self, value, locale)
 format_13 (self, value, locale)
 format_14 (self, value, locale)
 get_str (self, result, language)
Public Member Functions inherited from searx.engines.wikidata.WDAttribute
 __init__ (self, name)
 get_label (self, language)
 get_wikibase_label (self)
 __repr__ (self)

Static Public Attributes

dict DATE_FORMAT

Additional Inherited Members

Public Attributes inherited from searx.engines.wikidata.WDAttribute
 name = name

Detailed Description

Definition at line 683 of file wikidata.py.

Member Function Documentation

◆ format_10()

searx.engines.wikidata.WDDateAttribute.format_10 ( self,
value,
locale )

Definition at line 718 of file wikidata.py.

718 def format_10(self, value, locale):
719 # precision: month
720 timestamp = isoparse(value)
721 return format_date(timestamp, format='MMMM y', locale=locale)
722

◆ format_11()

searx.engines.wikidata.WDDateAttribute.format_11 ( self,
value,
locale )

Definition at line 723 of file wikidata.py.

723 def format_11(self, value, locale):
724 # precision: day
725 timestamp = isoparse(value)
726 return format_date(timestamp, format='full', locale=locale)
727

◆ format_13()

searx.engines.wikidata.WDDateAttribute.format_13 ( self,
value,
locale )

Definition at line 728 of file wikidata.py.

728 def format_13(self, value, locale):
729 timestamp = isoparse(value)
730 # precision: minute
731 return (
732 get_datetime_format(format, locale=locale)
733 .replace("'", "")
734 .replace('{0}', format_time(timestamp, 'full', tzinfo=None, locale=locale))
735 .replace('{1}', format_date(timestamp, 'short', locale=locale))
736 )
737

◆ format_14()

searx.engines.wikidata.WDDateAttribute.format_14 ( self,
value,
locale )

Definition at line 738 of file wikidata.py.

738 def format_14(self, value, locale):
739 # precision: second.
740 return format_datetime(isoparse(value), format='full', locale=locale)
741

◆ format_8()

searx.engines.wikidata.WDDateAttribute.format_8 ( self,
value,
locale )

Definition at line 704 of file wikidata.py.

704 def format_8(self, value, locale): # pylint: disable=unused-argument
705 # precision: less than a year
706 return value
707

◆ format_9()

searx.engines.wikidata.WDDateAttribute.format_9 ( self,
value,
locale )

Definition at line 708 of file wikidata.py.

708 def format_9(self, value, locale):
709 year = int(value)
710 # precision: year
711 if year < 1584:
712 if year < 0:
713 return str(year - 1)
714 return str(year)
715 timestamp = isoparse(value)
716 return format_date(timestamp, format='yyyy', locale=locale)
717

◆ get_group_by()

searx.engines.wikidata.WDDateAttribute.get_group_by ( self)

Reimplemented from searx.engines.wikidata.WDAttribute.

Definition at line 701 of file wikidata.py.

701 def get_group_by(self):
702 return self.get_select()
703

References searx.engines.wikidata.WDAttribute.get_select().

Here is the call graph for this function:

◆ get_select()

searx.engines.wikidata.WDDateAttribute.get_select ( self)

Reimplemented from searx.engines.wikidata.WDAttribute.

Definition at line 684 of file wikidata.py.

684 def get_select(self):
685 return '?{name} ?{name}timePrecision ?{name}timeZone ?{name}timeCalendar'.replace('{name}', self.name)
686

◆ get_str()

searx.engines.wikidata.WDDateAttribute.get_str ( self,
result,
language )

Reimplemented from searx.engines.wikidata.WDAttribute.

Definition at line 760 of file wikidata.py.

760 def get_str(self, result, language):
761 value = result.get(self.name)
762 if value == '' or value is None:
763 return None
764 precision = result.get(self.name + 'timePrecision')
765 date_format = WDDateAttribute.DATE_FORMAT.get(precision)
766 if date_format is not None:
767 format_method = getattr(self, date_format[0])
768 precision = date_format[1]
769 try:
770 if precision >= 1:
771 t = value.split('-')
772 if value.startswith('-'):
773 value = '-' + t[1]
774 else:
775 value = t[0]
776 return format_method(value, language)
777 except Exception: # pylint: disable=broad-except
778 return value
779 return value
780
781

References searx.engines.wikidata.WDAttribute.name.

◆ get_where()

searx.engines.wikidata.WDDateAttribute.get_where ( self)

Reimplemented from searx.engines.wikidata.WDAttribute.

Definition at line 687 of file wikidata.py.

687 def get_where(self):
688 # To remove duplicate, add
689 # FILTER NOT EXISTS { ?item p:{name}/psv:{name}/wikibase:timeValue ?{name}bis FILTER (?{name}bis < ?{name}) }
690 # this filter is too slow, so the response function ignore duplicate results
691 # (see the seen_entities variable)
692 return """OPTIONAL { ?item p:{name}/psv:{name} [
693 wikibase:timeValue ?{name} ;
694 wikibase:timePrecision ?{name}timePrecision ;
695 wikibase:timeTimezone ?{name}timeZone ;
696 wikibase:timeCalendarModel ?{name}timeCalendar ] . }
697 hint:Prior hint:rangeSafe true;""".replace(
698 '{name}', self.name
699 )
700

References searx.engines.wikidata.WDAttribute.name.

Member Data Documentation

◆ DATE_FORMAT

dict searx.engines.wikidata.WDDateAttribute.DATE_FORMAT
static
Initial value:
= {
'0': ('format_8', 1000000000),
'1': ('format_8', 100000000),
'2': ('format_8', 10000000),
'3': ('format_8', 1000000),
'4': ('format_8', 100000),
'5': ('format_8', 10000),
'6': ('format_8', 1000),
'7': ('format_8', 100),
'8': ('format_8', 10),
'9': ('format_9', 1), # year
'10': ('format_10', 1), # month
'11': ('format_11', 0), # day
'12': ('format_13', 0), # hour (not supported by babel, display minute)
'13': ('format_13', 0), # minute
'14': ('format_14', 0), # second
}

Definition at line 742 of file wikidata.py.


The documentation for this class was generated from the following file:
  • /home/andrew/Documents/code/public/searxng/searx/engines/wikidata.py