Format: text/x-python
⬇ Download File (2.3 KB)
   1  # Copyright 2010-2023 Kurt McKee <contactme@kurtmckee.org>
   2  # Copyright 2002-2008 Mark Pilgrim
   3  # All rights reserved.
   4  #
   5  # This file is a part of feedparser.
   6  #
   7  # Redistribution and use in source and binary forms, with or without
   8  # modification, are permitted provided that the following conditions are met:
   9  #
  10  # * Redistributions of source code must retain the above copyright notice,
  11  #   this list of conditions and the following disclaimer.
  12  # * Redistributions in binary form must reproduce the above copyright notice,
  13  #   this list of conditions and the following disclaimer in the documentation
  14  #   and/or other materials provided with the distribution.
  15  #
  16  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
  17  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  18  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  19  # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  20  # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  21  # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  22  # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  23  # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  24  # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  25  # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  26  # POSSIBILITY OF SUCH DAMAGE.
  27  
  28  from .rfc822 import _parse_date_rfc822
  29  
  30  _months = [
  31      'jan',
  32      'feb',
  33      'mar',
  34      'apr',
  35      'may',
  36      'jun',
  37      'jul',
  38      'aug',
  39      'sep',
  40      'oct',
  41      'nov',
  42      'dec',
  43  ]
  44  
  45  
  46  def _parse_date_asctime(dt):
  47      """Parse asctime-style dates.
  48  
  49      Converts asctime to RFC822-compatible dates and uses the RFC822 parser
  50      to do the actual parsing.
  51  
  52      Supported formats (format is standardized to the first one listed):
  53  
  54      * {weekday name} {month name} dd hh:mm:ss {+-tz} yyyy
  55      * {weekday name} {month name} dd hh:mm:ss yyyy
  56      """
  57  
  58      parts = dt.split()
  59  
  60      # Insert a GMT timezone, if needed.
  61      if len(parts) == 5:
  62          parts.insert(4, '+0000')
  63  
  64      # Exit if there are not six parts.
  65      if len(parts) != 6:
  66          return None
  67  
  68      # Reassemble the parts in an RFC822-compatible order and parse them.
  69      return _parse_date_rfc822(' '.join([
  70          parts[0], parts[2], parts[1], parts[5], parts[3], parts[4],
  71      ]))
  72