Dart-библиотека для работы с Yandex Internetometer.
Пакет на pub.dev: yandex_internetometer
English README: README.md
yandex_internetometer в первую очередь задуман как переиспользуемая библиотека. CLI внутри пакета является только тонкой обёрткой над библиотечным API.
Пакет можно использовать двумя способами:
- как Dart-библиотеку для получения IP, региона, ISP и результатов speed test;
- как CLI-утилиту, которая печатает те же данные в текстовом формате, JSON, JSONL или Prometheus.
Пакет неофициальный и не связан с Яндексом.
- Определение IPv4 и IPv6
- Парсинг региона и ISP/ASN со страницы Internetometer
- Измерение latency, download speed и upload speed
- Публичный API для использования как библиотеки
- Встроенный CLI executable
- Поддержка text, JSON, JSONL и Prometheus output
Добавить пакет в проект:
dart pub add yandex_internetometerДля локальной разработки:
git clone https://github.com/GiaNTizmO/yandex_internetometer.git
cd yandex_internetometer
dart pub getimport 'dart:io';
import 'package:yandex_internetometer/yandex_internetometer.dart';
Future<void> main() async {
final client = InternetometerClient(
config: InternetometerConfig(
language: InternetometerLanguage.en,
concurrency: 4,
requestTimeout: const Duration(seconds: 30),
),
);
try {
final metadata = await client.getPageMetadata();
final ipv4 = await client.getIPv4();
final speed = await client.runSpeedTest();
final record = MeasurementRecord(
ipv4: ipv4,
region: metadata.regionName,
isp: metadata.isp?.name,
asn: metadata.isp?.asn,
downloadMbps: speed.downloadMbps,
uploadMbps: speed.uploadMbps,
latencyMs: speed.latency.inMilliseconds,
);
const formatter = MeasurementFormatter();
stdout.writeln(formatter.toPrettyJson(record));
} finally {
client.close();
}
}Готовый runnable пример лежит в example/main.dart.
Запуск package executable:
dart run internetometer --allИли прямой запуск entrypoint:
dart run bin/internetometer.dart --json --speed--ipпечатает IPv4, IPv6, регион и ISP--speedзапускает latency, download и upload checks--allзапускает полный набор измерений--jsonпечатает pretty JSON--prometheusпечатает Prometheus metrics--save path.jsonlдобавляет результат как JSONL record--lang ru|enвыбирает локаль страницы Yandex для названия региона--concurrency 4задаёт parallelism для speed test--timeout 60задаёт общий timeout в секундах--tuiвключает live progress во время speed test
{
"ipv4": "203.0.113.10",
"region": "Moscow",
"isp": "Example Telecom",
"asn": 64512,
"download_mbps": 123.45,
"upload_mbps": 98.76,
"latency_ms": 11
}lib/публичный API библиотекиbin/CLI executableexample/runnable exampletest/unit tests
dart format .
dart analyze
dart test
dart pub publish --dry-run