1. Python / Говнокод #17131

    −113

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    def normalize_url(url, preserve_fragment=False):
            url = url.strip()
            if not re.search(r'^\w+:', url):
                url = 'http://' + url.lstrip('/')
    
            if not (url.startswith('http:') or url.startswith('https:')):
                return url
    
            url = list(urlparse.urlsplit(url))
            if url[0] not in ('http', 'https'):
                url[0] = 'http'
            url[1] = url[1].lower().encode('idna')
    
            if type(url[2]) == unicode:
                try:
                    url[2] = url[2].encode('ascii')
                except UnicodeEncodeError:
                    pass
            url[2] = urllib.unquote(url[2])
            if type(url[2]) == unicode:
                url[2] = url[2].encode('utf-8')
            url[2] = urllib.quote(url[2], '/')
    
            if type(url[3]) == unicode:
                try:
                    url[3] = url[3].encode('ascii')
                except UnicodeEncodeError:
                    pass
            cut_params = ('utm_source', 'utm_medium', 'utm_term',
                          'utm_content', 'utm_campaign',
                          'yclid', 'gclid', 'ref')
            new_qsl = []
            for tag in url[3].split('&'):
                if '=' in tag:
                    param, value = tag.split('=', 1)
                    param = urllib.unquote(param)
                    value = urllib.unquote(value)
                    if param in cut_params:
                        continue
                    if type(value) == unicode:
                        value = value.encode('utf-8')
                    new_tag = "%s=%s" % (urllib.quote(param), urllib.quote(value))
                else:
                    new_tag = urllib.unquote(tag)
                    if type(new_tag) == unicode:
                        new_tag = new_tag.encode('utf-8')
                    new_tag = urllib.quote_plus(new_tag)
                new_qsl.append(new_tag)
            url[3] = '&'.join(new_qsl)
            if not preserve_fragment:
                url[4] = ''
            return urlparse.urlunsplit(url)

    Еще немного магии и хватит на сегодня.

    Запостил: kyzi007, 18 Ноября 2014

    Комментарии (19) RSS

    • это не магия, это портянка питон сбросил кожу
      Ответить
    • Что интересно, в том же urlparse есть parse_qs, но человек решил отказаться от посторонней помощи.
      Ответить
      • удалено
        Ответить
        • Один раз - еще не шлюха, зачем стыдится и удалять сообщения об этом?
          Ответить
          • То Люр, то Кузя.
            Что они удаляют-то?
            Ответить
            • Не обращайте внимания. Они пользуются личкой.
              Ответить
              • Про личку мне известно. Я об этом одним из первых начал писать.
                Но почему именно гк??? И зачем кузе писать самой себе на мыло?
                Ответить
              • Краткий гуглинг показал что первым сказал борманд, хотя я довольно давно знал про эту фичу. Как и много других, например: возможность минусовать себя.
                http://govnokod.ru/13951#comment200283
                http://govnokod.ru/15690#comment225265
                Ответить
                • > первым сказал борманд
                  А откуда я об этом узнал? У меня, емнип, мыло еще к майлинатору было привязано. Значит где-то я об этой фиче прочёл.

                  Вот, нагуглил упоминание постарше:
                  http://govnokod.ru/5672#comment74570
                  Ответить
                  • Выходит, раньше гости могли редактировать сообщения, но они начали делать это слишком часто и прогневали Страйкера?
                    Ответить
                    • >Выходит, раньше гости могли редактировать сообщения
                      Да не было такого на 5 тысячах. Тогда и коды нельзя постить было, и вроде голосовалку прикрыли.
                      Гость пошутил.
                      http://govnokod.ru/3028
                      Просвещайтесь
                      Я вчера был невнимателен, потому приоритет возвращается inkanus-gray http://govnokod.ru/7534#comment102370.
                      Ответить
              • Конкретно кузя написала "последствия прошлого неудачного решения". Может потом решила что это под NDA попадает, или что она вообще не в тему сказала?
                Ответить
    • $"   *.      
                     d$$$$$$$P"                  $    J
                         ^$.                     4r  "
                         d"b                    .db
                        P   $                  e" $
               ..ec.. ."     *.              zP   $.zec..
           .^        3*b.     *.           .P" .@"4F      "4
         ."         d"  ^b.    *c        .$"  d"   $         %
        /          P      $.    "c      d"   @     3r         3
       4        .eE........$r===e$$$$eeP    J       *..        b
       $       $$$$$       $   4$$$$$$$     F       d$$$.      4
       $       $$$$$       $   4$$$$$$$     L       *$$$"      4
       4         "      ""3P ===$$$$$$"     3                  P
        *                 $       """        b                J
         ".             .P                    %.             @
           %.         z*"                      ^%.        .r"
              "*==*""                             ^"*==*""
      Ответить
    • Плюсанул) Классный велик.
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий