Просмотрщик постов пикабушников (версия 1.0, MVP)

* - MVP - minimum viable product, минимальный работоспособный продукт


Привет, Пикабу!

Меня зовут Сергей, мне 25 и я программист (хлоп-хлоп).

Летом 2019 года решил побаловаться каким-нибудь полезным пет-проектом. Итак, представляю вам программку Pikabu Profile Posts Viewer!

С ее помощью можно одним махом просмотреть все посты пользователя.


А ТЕПЕРЬ ПО ПОРЯДКУ:

0) Обязательно устанавливаем .NET Framework 4.6.2 — без него программа не запустится.

По умолчанию уже установлен в Windows 10 (v1607 и далее).

Пользователям Windows 7, 8.1, 10 (v1507-v1511) надо скачать его с сайта Майкрософта — https://dotnet.microsoft.com/download/dotnet-framework/thank....

Windows 8 в пролете, простите :(.

1) Запускаем программу.

Сверху — поле для ввода имени интересующего юзера, кнопка поиска постов в профиле, галочка укорачивателя ссылок (см. далее), кнопка сохранения найденного в текстовый файл Блокнота.

Ниже — строка статуса, показывающая сейчас, что программа готова к работе.

В правом углу — кнопка «О программе».

Ну и остальное место — табличка, куда будут выводиться посты.

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

2) Вводим имя пользователя. Если ввести меньше 5 символов, выдаст ошибку, т.к. таких коротких ников на Пикабу нет.

3) Нажимаем кнопку Найти посты.

Программа отправится на поиски, визуально «зависнув» на некоторое время. Сколько — зависит от кол-ва постов в искомом профиле и скорости вашего интернета. У меня на ADSL 10Мб/с понадобилось 15-75 секунд. На монстрах вроде IProcione не проверял :).

Пока она «виснет», можете заняться чем-нибудь другим.

На галочку пока не обращаем внимания.

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

3) Программа загрузит посты и отобразит их списком.

Строка статуса показывает, сколько всего постов имеется и на скольких страницах, а также, сколько из них удалось загрузить (это не одно и то же — если вдруг пропадет свет и т.п., отобразится только то, что успели выхватить, да и то не всегда).

Если в поле рейтинга стоит «DELETED», значит, пост был мягко удален (в браузере отображается значок корзины).

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

4) Нажимаем кнопку сохранения.

Если удалось сохранить, строка статуса сообщит об этом.

В папке, куда вы положили файл программы, появится папка "Pikabu userprofiles", а в ней — текстовые файлы (имена которых соответствуют именам пользователей).

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

5) Программа сохранит данные в текстовые файлы.

Данные сохраняются таким же списком, только вместо колонок — табуляция. Кроме того, в начале файла еще раз указывается имя пользователя, а в конце — дата последней «выхватки» данных (понятно, что легко правится вручную, но сейчас не об этом).

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

6) Можете делать теперь с ними что угодно — например, быстро перейти к посту годичной давности, просто скопировав ссылку и вставив в браузер, а не мотая профиль пользователя до Х-й страницы.


НЮАНСЫ:

1) Колонки в таблице можно менять местами, но ТОЛЬКО после закачки данных (иначе — некорректно отобразятся).

При следующей скачке (не закрывая программу) порядок столбцов сохранится.

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

2) При нажатии на заголовок колонки списка данные отсортируются по возрастанию/убыванию.

Это может занять время почти столько же, а то и больше, чем потрачено на скачку постов. Связано с временной сложностью алгоритма сортировки.

При следующей скачке (не закрывая программу) указание на сортировку по ... сохранится.

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

Недочет: поскольку все данные в списке компьютер видит как текст, то все колонки сортируются как текст — посимвольно, в т.ч. и № п/п и рейтинг (числа по сути) (см. рис.). Подобное встречается и у других программ, вроде Total Commander, но все же бывает неудобно. Надеюсь поправить со временем.

Частичный обход недочета: поскольку дата у всех постов разная, то сортировка по дате автоматически = сортировке по порядку (№ п/п).

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

3) Галочка укорачивания ссылок убирает текст — ведь он может быть любым — из ссылок на посты, оставляя только номер истории (см. рис.).

Нажимать ее следует ПЕРЕД скачкой постов.

Просмотрщик постов пикабушников (версия 1.0, MVP) Программа, Программирование, Пикабу, Пикабушники, Профиль, Помощь, Длиннопост

4) Добавлена простенькая поддержка исключений, например, если отвалился инет, или страница не найдена.


СКАЧАТЬ: http://www.mediafire.com/file/oii09nxdecfkldk (zip-архив, 161 Кб, в распакованном виде — 628 Кб)


ТЕХНИЧЕСКИЕ ПОДРОБНОСТИ ДЛЯ ПРОГРАММИСТОВ:

1) Написано на языке программирования С# с использованием библиотеки HtmlAgilityPack в среде разработки Microsoft Visual Studio Professional 2017.

2) Версия .NET framework – 4.6.2.

3) Исходный код на Github (без папки packages): https://github.com/serhiy1994/PikabuProfilePostsViewer . Можете форкнуть, тем более, что в коде остались некоторые логические дыры в закомменченных строках. Потом смерджу, если хотите.

4) Программа работает медленновато еще и потому, что я не умею в асинхронное программирование :(.


БАГ-РЕПОРТЫ И ЗАМЕЧАНИЯ: оставляйте под соответствующим комментом. Постараюсь пофиксить и обновить релиз.


БЛАГОДАРНОСТИ:

1) Двум десяткам пикабушников, чьи интересные посты заставили меня что-то придумать, чтоб их оперативно посмотреть (полный список выложу позже);

2) персонально @iranaut и @Malica за их существование в качестве пикабушников(-иц);

3) прочий народ — коллеги-программисты, чьи советы мне помогли (указаны в окне About).


Приятного пользования!

Вы смотрите срез комментариев. Показать все
2
DELETED
Автор поста оценил этот комментарий
Программа отправится на поиски, визуально «зависнув» на некоторое время

Погромист Серёжа... Прикрути прогрессбар или хотя бы анимацию какую.

раскрыть ветку (11)
2
Автор поста оценил этот комментарий

Программист Сережа не осилил многопоточность

раскрыть ветку (10)
DELETED
Автор поста оценил этот комментарий
Торопился шедевр релизнуть
раскрыть ветку (4)
Автор поста оценил этот комментарий

https://github.com/serhiy1994/PikabuProfilePostsViewer/blob/... 🤔, так вот на что пол года ушло

раскрыть ветку (3)
Автор поста оценил этот комментарий

вы не совсем правы. Я создал репозиторий и на полгода забыл о нем, что видно по истории коммитов. Перед НГ вспомнил и быстренько доделал. @XuiSGory,

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

да я пошутил конечно, но обычно переде релизом чистят лишнее, а у вас 200 строк в .gitignore

DELETED
Автор поста оценил этот комментарий
Ахахаха)))
Автор поста оценил этот комментарий
А зачем тут многопоточность?
раскрыть ветку (4)
Автор поста оценил этот комментарий

асинхронная таска в другом потоке выполняется? или я не прав насчет шарпа. В шарпе не силен но обычно это другой поток

раскрыть ветку (3)
2
Автор поста оценил этот комментарий
Совершенно не обязательно. Многопоточнрсть нужна, когда НАДО что-то продолжать в главном потоке делать (текстовый редактор, который проверяет орфографию, например. Или наличие новой версии), плюс имеет смысл, когда данные разом из несколтких источников тянутся. С разных серверов например.
А чтобы "не морозило" - достаточно коллбэк в цикл обработки передать, в нём прогресс инкриментить да Application.DoEvents дёргать.
раскрыть ветку (2)
Автор поста оценил этот комментарий

примерно понимаю, в dart тоже async/await выполняется в том же потоке, только не блокирует, когда нужно в другой поток используем изоляторы.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Скажем так. Я за свою уже чуть более 20летнюю практику слишком много встречал абсолютно безумного использования многопоточности. Вот натурально, когда оно начиналось во благо, а заканчивалось за упокой.
Особенно, конда гуй фигурирует.
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку