Ivan Begtin
8.09K subscribers
1.61K photos
3 videos
100 files
4.33K links
I write about Open Data, Data Engineering, Government, Privacy, Digital Preservation and other gov related and tech stuff.

Founder of Dateno https://dateno.io

Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Secure contacts ivan@begtin.tech
Download Telegram
Подготовлена бета версия утилиты командной строки wparc [1] архивации данных из сайтов Wordpress.

Утилита использует стандартное API предоставляемое CMS Wordpress и доступной по адресу /wp-json/. Поскольку на Wordpress работает огромное число сайтов СМИ и личных сайтов, то утилита будет необходима для получения быстрых дампов данных, значительно быстрее чем классические веб-краулеры.

Подробнее о структурах данных можно прочитать в документации Wordpress REST API [2].

Утилита поддерживает две команды:
- dump - выгрузить все данные через обход точек подключения к API, результатом являются файлы в форматах .json и .jsonl
- getfiles - выгрузка всех медиа файлов перечисленных в файле wp_v2_media.jsonl полученного после исполнения команды dump

Примеры сайтов на Wordpress: duma-rad.ru, www.iephb.ru, paperpaper.ru, agentura.ru и многие другие.

Ограничения:
- некоторые владельцы сайтов на Wordpress блокируют доступ к /wp-json/ без авторизации и из этих сайтов невозможно пока извлечь данные
- у старых версий версий Wordpress отсутствует точка подключения /wp-json/ и также невозможно скачать данные таким способом.

В будущем утилита будет поддерживать команды проверки сайта на возможность выгрузки данных, упаковывать их в пакет данных (data package) для долгосрочного сохранения и поддерживать выгрузку данных из Wordpress даже без доступного API (по определенным шаблонам этой CMS).

Найденные ошибки заполняйте в issues репозитория проекта wparc [3]

Ссылки:
[1] https://github.com/ruarxive/wparc
[2] https://developer.wordpress.org/rest-api/
[3] https://github.com/ruarxive/wparc/issues

#wordpress #webarchives #digitalpreservation #opensource #tools
Я много писал про государство и технологии, всё больше про данные в предыдущий год и вот всё чаще про цифровые архивы. Может показаться что это не взаимосвязанные темы, но это не так. Веб архивы - это одна из форм данных очень большого объёма, полуструктурированных как правило, но тем не менее вполне подпадающих под задачи data science.

Один из примеров такого применения - это проект Archives Unleashed [1] его авторы создали множество инструментов того как представлять, обрабатывать, анализировать и иными способами работать с файлами веб архивов. Собственно их Archives Unleashed Toolkit (AUT) [2] это инструментарий по созданию инфраструктуры обработки WARC файлов с помощью Hadoop, Apache Spark, Jupiter Notebook и других инструментов работы с данными большого объёма.

Многие наборы данных были созданы с помощью AUT, также как и проведены многочисленные исследования [3]. Не стоит недооценивать эти инструменты, они весьма полезны исследователям современного мира и не только.

Ссылки:
[1] https://archivesunleashed.org/
[2] https://aut.docs.archivesunleashed.org/
[3] https://archivesunleashed.org/cohorts2022-2023/

#opendata #data #tools #opensource
В рубрике полезных инструментов по работе с данными Mito [1], движок с открытым кодом встраивающийся в JupyterLab 2.0 и 3.0 и позволяющий работать с данными как если бы это был Excel или OpenRefine.

Фактически это lowcode инструмент по генерации кода на Python на основе манипуляций с датафреймом внутри тетрадки Jupyter. Как оказалось, очень удобная штука с большим числом пользователей.

Ссылки:
[1] https://www.trymito.io/

#data #datawranling #tools #datatools #opensource
Инструменты для цифровых архивистов. Определение типа файлов

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

Цифровые архивисты используют и создают инструменты для решения этой задачи .

- PRONOM - база форматов файлов от Национальных архивов Великобритании. Распространяются как открытые данные, используются многими инструментами
- DROID (Digital Record and Object Identification) - также утилита от Национальных архивов Великобритании по идентификации типов файлов
- Apache Tika - утилита и библиотека кода на языке Java для определения типов файлов и извлечения данных из определяемых типов файлов, например, файлов MS Office.
- Siegfried - утилита командной строки идентифицирующая типы файлов на основании базы сигнатур PRONOM и других источников
- TrID - утилита идентификации форматов файлов, бесплатна для частного использования
- NARA File Analyzer and Metadata Harvester - утилита анализа форматов и сбора метаданных от Национальных архивов США. Не обновлялась уже 6 лет.

Существует множество других инструментов для цифровых архивов, мы будем делать регулярные обзоры инструментов разной сложности и под разные задачи.

#tools #digitalpreservation #fileidentification
Для тех кто любит работать (с данными) в командной строке хорошая подборка новых инструментов [1], как просто для работы, так и для работы с данными.
Мой личный список значительно шире, какие-то инструменты я писал сам, для наиболее частых задач, например, undatum утилита работы с JSON lines и BSON и другими форматами данных или lazyscraper для быстрого сбора данных с веб-страниц через командную строку.

Чувствую что надо составить собственный список, а в представленном списке выше есть немало того что стоит попробовать.

Ссылки:
[1] https://jvns.ca/blog/2022/04/12/a-list-of-new-ish--command-line-tools/

#opensource #tools #data #datatools
Свежий обзор The Modern Data Stack Ecosystem: Spring 2022 Edition [1] от Continual.ai, Конечно, как и все, они описывают Modern Data Stack с точки зрения их места в экосистеме, но, собственно и сам термин так активно используется стартапами именно для того чтобы показать позиционирование своего продукта. Удивительно что для MDS ещё нет холста в популярных системах проектирования вроде Miro и т.д.

Обзор полезный, например, автор отмечает отход от SQL-only подхода в преобразовании данных и в dbt рассматривают вариант включить поддержку non-SQL [2] и Snowflake рассматривают добавление Python-in-DB через Snowpark [3]

Главный недостаток именно этого обзора с слабом покрытии инструментов с открытым кодом, их там совсем немного упомянуто. Зато роли и применение продуктов стартапов довольно много.

Ссылки:
[1] https://continual.ai/post/the-modern-data-stack-ecosystem-spring-2022-edition
[2] https://roundup.getdbt.com/p/disjointed-lineage
[3] https://www.snowflake.com/blog/snowpark-is-now-generally-available/

#data #reading #tools #moderndatastack
Яндекс выложили в открытый доступ систему управления базами данных YDB [1] с полным исходным кодом [2]. Эта распределенная SQL база данных, с собственным расширением языка SQL - YQL [3] и, в целом, выглядит любопытно.

Что стоит внимания:
- работа в кластере как часть системы
- обещанная простая масштабируемость

Что удивительно:
- база написана полностью на C++, хотя сейчас более популярно когда базы данных создаются на более высокоуровневых языках, в том числе и для того чтобы привлечь разработчиков которые хотят их изучать
- поддержка JSON и иерархических данных весьма скромная, по крайней мере документации об этом мало, хотя и упоминается
- вместо придумывания своего языка запросов расширяют SQL, что может быть и не плохо, просто +1 SQL диалект
- нет PostgreSQL или MySQL "совместимости из коробки", а это полезная фича которую декларируют многие новые СУБД и сервисы.

В целом база явно написана под высокие нагрузки, стоит пристального внимания и тестирования.

Ссылки:
[1] https://ydb.tech/
[2] https://github.com/ydb-platform/ydb
[3] https://ydb.tech/ru/docs/yql/reference/

#data #opensource #yandex #tools
В рубрике полезных инструментов для работы с данными несколько обновлений
- spcrawler [1] утилита командной строки для выгрузки данных и файлов из открытых сайтов Sharepoint к которой я наконец-то нашёл время дописать документацию и выложил как открытый код. Предистория: в открытом доступе много сайтов на Sharepoint, некоторые государственные системы/сайты тоже сделаны нём. Эта утилита выгружает все данные доступные через API "/_api/web" для тех случаев когда такое API есть. Похоже на другую утилиту wparc - по архивации данных через API Wordpress, которую я ранее выкладывал.
- у утилиты undatum появилась команда query использующая mistql как язык запросов. Удобно при необходимости потоковой фильтрации данных при работе с JSON lines. Пока в экспериментальном режиме, функции незавершённые. Одна из идей в том чтобы реализовать полноценную команду запросов на многих языках, не только mistql, но и dictquery и ещё нескольких вариантах.
- у меня в планах написать гайд по apibackuper, утилите по архивации данных внутри API. Очень много примеров API по России и оказывается мало по миру, не могу быстро найти зарубежные недокументированные API.
- добавлены новые общедоступные правила к утилите идентфикации типов данных metacrafter, добавлены правила: intcodes.yaml - международные коды, boolean.yaml - булевые значения, orgs.yaml - организации, science.yaml - научные идентификаторы, vehicles.yaml - автомобили. Все они в категории common в репозитории. Напомню, что утилита является открытой и общедоступной как и базовые правила, а у нас внутри проходит бета тестирование сервис с расширенными правилами. Желающие могут использовать открытый код и сами писать правила под свои данные или привлечь нашу команду и мы применим расширенный свод правил + напишем под Ваши данные.

В ближайших планах собрать вместе открытый код + наработки по APICrafter'у и Datacrafter՛у и собрать продукт + сервис на международную и русскоязычную аудитории.

Ссылки:
[1] https://github.com/ruarxive/spcrawler

#opensource #tools #data
Я продолжаю писать на английском языке о инструментах для работы с данными которые делал последние несколько лет. Написал заметку [1] про утилиту APIBackuper используемую для извлечению данных из API. Не открою большого секрета если скажу что большая часть данных в DataCrafter[2] собрана с её помощью. Слишком многие данные в России доступны только как API.

Но в заметке пример сбора данных с недокументированного API аэропорта Берлина.

Ссылки:
[1] https://medium.com/@ibegtin/apibackuper-a-command-line-tool-to-archive-backup-data-api-calls-3eb0e98e1a3b

#tools #datatools #opensource #articles
Из свежего полезного чтения про оптимизацию работы с данными, заметка How to Build a Lossless Data Compression and Data Decompression Pipeline [1] о построении многопоточного компрессора bz2 на Python. Статья полезная, но лично мне так и хочется ехидно прокомментировать про то что "хипстеры обнаружили для себя многопоточность". Многопоточное сжатие и другие многопоточные операции это один из многих трюков отличающих общедоступные и коммерческие продукты по обработке данных. При правильно подобранном железе и иных оптимизациях оно даёт многократное ускорение.

При этом придумывать что-то своё совершенно необязательно. Есть реализация многопоточного Gzip на Python - pgzip [2] . Есть реализация многопоточности в python-zstandard [3] и это если только говорить про компрессию, а есть и другие многопоточные задачи используемые при обработке данных.

Другое чтение, про Software defined assets [4] про новый декларативный подход управления данными и оркестрацией от команды Dagster. Не могу сказать что с лёту мне удалось понять принципиальные преимущества подхода, но почитать точно стоит

Ссылки:
[1] https://python.plainenglish.io/lossless-data-compression-and-data-decompression-pipeline-2f5391a6b7e7
[2] https://github.com/pgzip/pgzip
[3] https://python-zstandard.readthedocs.io/en/latest/multithreaded.html
[4] https://dagster.io/blog/software-defined-assets

#readings #tools #datatools