Просмотрщик постов пикабушников (версия 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).


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

Вы смотрите срез комментариев. Показать все
7
Автор поста оценил этот комментарий
В мире, который перешёл на облачнее сервисы и веб-приложения самое время писать решение требующие ставить не только саму программу, но и Фреймворк.
Это яркий пример антиработы программиста. Потрачены часы, а результат вносит во вселенную больше бардака, чем было до его появления
раскрыть ветку (5)
3
Автор поста оценил этот комментарий

заводы и крупные предприятия пользуются не веб-приложениями, а приложениями с простейшим гуём на уровне qt - чтобы быстро работало на любом чайнике. Любое веб-приложение будет работать медленней, чем делающее то же, но на нативном языке.
Но тут скорее ясли и первые шаги, особенно учитывая SharpDeveloper..

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

При чем тут заводы к Пикабу?

Автор запилил бесполезный продукт на самой неудобной для ЦА платформе.

Хочешь учиться - решай логические задачи. Парсить чужой контент и лепить выборки это уровень любого software-trainee.


Любое веб-приложение будет работать медленней, чем делающее то же, но на нативном языке.

А вот тут уже вы сами плывете =)

1. веб-приложение подразумевает клиент-серверный подход. Считать на клинте сейчас дурной тон, максимум хранить часть данных в локал сторадже.

2. что такое нативный язык? Пусть Реакт будет фреймврком, тогда JS - нативный язык в браузере пользователя.

3. все завист от задачи и методов решения. Задаче автора даже приложение не надо, достаточно срипта на пыхе

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

Не буду спорить, что есть дурной тон и как это нередко реализовывается,

все завист от задачи и методов решения. Задаче автора даже приложение не надо, достаточно срипта на пыхе

тут и скрипта не надо, всё это сам функционал сайта. Я не автора защищаю, а нормальные десктопные приложения.

Нативный язык - использующий функционал системы через минимум костылей.

Нативный язык - это использующий минимум костылей до API (я знаю, что безбожно переврал определение нативного кода, знаю) - для шарпа это по сути CLR, которая уже и выполняет всё, дёргая виндовое api, а для JS в браузере я себе это даже не представляю - как минимум, обработка браузером полученного html - уже доп прослойка.

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

Подскажите, а доставка пользователю голого JSON  массива данных с обработкой на стороне клиента - это костыль?

Данные едут отдельно в максимально удобном формате, верстка едет отдельно, на стороне клиента браузер собирает страницу при помощи JS фреймворка.

Например, если это сервис поиска недвижимости и нужно постоянно перестраивать страницу в соответствии с выбранными фильтрами.

Мне кажется, вы слабо себе представляете современные веб-технологии. Да, что говорить, мобильные работают также - приложение дергает веб-апи, обмениваясь с ним данными. Всю работу делает сервер.

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

"доставка пользователю голого JSON массива данных с обработкой на стороне клиента" это нормально.
А вот что их обрабатывает - другой вопрос. Эти же данные спокойно может обрабатывать и приложение. Только быстрее.
Если нужно 1-2 раза обработать их, разница в том, будет это делать браузер или приложение несущественна. А если целый день смотреть, то даже разница в пару-тройку секунд будет ощущаться.

Под количеством костылей я имел в виду:
C# -> CLR ->WinAPI

Мобильное приложение ->JVM/Mono - API ведроида


JS->рендеринг браузером HTML -> среда выполнения (вот, признаться,  не знаю, в какой среде работает хромиум) -> WinAPI. Уже на шаг больше.


Мне кажется, вы слабо себе представляете современные веб-технологии

Соглашусь. Но я прекрасно понимаю, что они неплохи для конечного одиночного пользователя, а не для enterprise, не катят они, как панацея.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку