"PHP" / Говнокод #26664 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
<?php

function get_post_id($comment_list_id) {
    $rawdata = file_get_contents("https://govnokod.ru/comments/$comment_list_id/post");
    $rawdata='<?xml encoding="UTF-8">'.$rawdata;

    $old_libxml_error = libxml_use_internal_errors(true);
    $dom = new DOMDocument;
    $dom->loadHTML($rawdata);
    libxml_use_internal_errors($old_libxml_error);

    $xpath = new DOMXPath($dom);
    $entries = $xpath->query('//*[@id="content"]/ol[@class="posts hatom"]/li[@class="hentry"]/h2/a');

    foreach($entries as $entry) {
        $href = $entry->getAttribute('href');
        if(preg_match('#https://govnokod.ru/(\d+)#', $href, $matches)) {
            $post_id = $matches[1];
            break;
        }
    }
    return $post_id;
}

$outf = fopen('postids.csv', 'w');
fputcsv($outf, array('post_id','comment_list_id'));
for($i = 1; $i <= 26663; $i++) {
    fputcsv($outf, array(get_post_id($i), $i));
}
fclose($outf);

Получение списка всех говнокодов, комментарии к которым можно восстановить.

Запостил: ropuJIJIa ropuJIJIa, (Updated )

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

  • SEO-пост.

    1. Сортируем по числовому значению первой колонки.
    2. Делаем дифф с файлом gost'а https://pastebin.com/raw/iNStdZgm
    3. Получаем список секретных чатиков.
    4. ?????
    5. PROFIT!
    Ответить
  • Нашлось что-нибудь интересное типа старых оффтопов?
    Ответить
    • Только запустил скачивание. Чтобы не напрягать сервер, качаю в один поток. Уже просканировал чуть более 50% (14 к говнокодов).
      Ответить
    • Нашёл несколько «false positive»: говнокод существует, но в базе gost'а он отсутствует. У всех таких говнокодов в заглавном посте картинка вместо кода. Я знал про геты (2222, 3333 и т. п.), у которых вместо кода были пони. Оказывается, бывают и другие картинки:
      http://govnokod.ru/3028
      Ответить
      • Парсер не справлялся, потому что в кодах с картинками нет соответствующих тегах. Кое-как починил, но на фронте тэги картинок экранируются, так что видны только ссылки. Да и похуй.
        Ответить
        • Кстати, а как картинки впилены? Просто в пхпшном коде захардкожены для конкретных постов или что-то с базой?
          Ответить
          • Хардкод.
            https://github.com/wiistriker/govnokod_legacy/blob/master/modules/quoter/templates/view.tpl
            <div class="entry-content">
                {if $quote->isSpecial()}
                {$quote->getText()}
                {else}
                <ol>{foreach from=$quote->generateLines() item="line"}<li>{$line}</li>{/foreach}</ol>
                {if $highlight == "geshi"}
                {$quote->getText()|highlite:$langName:$quote->getCacheKey()}
                {else}
                <pre><code class="{$langName|h}">{$quote->getText()|h}</code></pre>
                {/if}
                {/if}
            </div>
            Ответить
            • я слышал, ты любишь всё хуевое


              так вот я сделал хуевый шаблонизатор на хуевом шаблонизаторре, чтобы ты мог писать на хуевом шаблонизаторе, пока ты пишешь на хуевом шаблонизаторе
              Ответить
            • Значит, в базе специальный флажок, на который срабатывает isSpecial, в этом случае забирается сырой пых-пых-код?
              Ответить
              • Порылся ещё. Нет, там всё гораздо смешнее:
                https://github.com/wiistriker/govnokod_legacy/blob/master/modules/quoter/models/quote.php
                public function isSpecial()
                {
                    $special_ids = array(
                        2222,
                        3028,
                        3333,
                        5555,
                        5702,
                        6666,
                        6700,
                        7654,
                        7777,
                        8451,
                        11225
                    );
                
                    return in_array((int)$this->getId(), $special_ids);
                    //return $this->getId() == 2222 || $this->getId() == 3028 || $this->getId() == 3333 || $this->getId() == 5555 || $this->getId() == 5702;
                }
                Ответить
                • Даже не в базе, а захардкожено в «PHP»?

                  Особенно смешна первая версия, которая закомментирована: вызов метода getId много раз.

                  Это можно публиковать отдельным кодом.
                  Ответить
  • Херасебе, а почему на языке оператора шаблонизатора?
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8