Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kachkaev/special-internet-archive

Tooling to archive web pages
https://github.com/kachkaev/special-internet-archive

playwright wayback-machine

Last synced: 4 months ago
JSON representation

Tooling to archive web pages

Awesome Lists containing this project

README

        

# Special Internet Archive πŸ“œ Π‘ΠΏΠ΅Ρ†Π°Ρ€Ρ…ΠΈΠ²

This project was created in response to a [β€œspecial military operation”](https://en.wikipedia.org/wiki/2022_Russian_invasion_of_Ukraine), which Russian army started against Ukraine in February 2022.
β€œSpecial Internet Archive” aims to automate the preservation of related online content, thus providing future researchers with historic data to analyse.

Wars of the 20th century left physical artefacts like newspapers, letters, diaries and films.
Some of these objects were studied only decades later and became crucial for shedding some light on the tragic past.
When a war takes place in the digital-first era, people are surrounded by vast streams of online content, but they rarely think about how fragile this information is.
A website is only available while a server is running and a social media post is β€˜everywhere’ only until it is deleted by the author or a moderator.
Thus, if we don’t proactively preserve the present, future generations won’t be able to study the past.

This repository helps archive public web pages before they are removed or edited.
It contains software that produces structured archive collections and orchestrates snapshot capturing.
The shape of the harvested data is compatible with git repositories or cloud storages like S3.
Code architecture supports various web page sources (websites) as well as multiple snapshot generators, both local and third-party.

The initial version of the tooling only works with public VK communities.
It relies on [web.archive.org](https://web.archive.org) as a third-party snapshot generator and supplements it with local [Playwright](https://playwright.dev) snapshots.
Although local snapshots are less accessible, they may contain content that third-party tools are unable to collect.

β€œSpecial Internet Archive” does not aim to β€œcapture the whole internet”.
However, those modest datasets it helps collect might useful for the researches of the future.

Based on the initial scope of the project, the instructions below are in Russian.
The software is written in TypeScript and its output uses English.
This repository can be used globally to create structured archive collections with any web pages.

πŸ‘€ [English version via Google Translate](https://translate.google.com/translate?sl=ru&tl=en&u=https://github.com/kachkaev/special-internet-archive/blob/main/README.md)

## Об Π°Ρ€Ρ…ΠΈΠ²Π΅

### ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹

Архив содСрТит _снимки_ (πŸ“Έ) ΠΈ _Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ_ (🏷) для ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ доступных Π²Π΅Π±-страниц (🌐 адрСсов Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅).

```txt
🌐 адрСс 1 🌐 адрСс 2 🌐 адрСс 3 ... 🌐 адрСс N
πŸ“Έ πŸ“Έ πŸ“Έ πŸ“Έ πŸ“Έ πŸ“Έ πŸ“Έ πŸ“Έ πŸ“Έ πŸ“Έ πŸ“Έ πŸ“Έ
🏷 🏷 🏷
```

πŸ“Έ **Π‘Π½ΠΈΠΌΠΎΠΊ Π²Π΅Π±-страницы** β€” это копия Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π΄Π°Π²Π°Π» сСрвСр Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ адрСсу Π²Π΅Π±-страницы ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСсколько снимков.
Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΈ способом получСния.
Π‘Π½ΠΈΠΌΠΊΠΈ Π±Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ (созданныС Π²ΠΎΠ»ΠΎΠ½Ρ‚Ρ‘Ρ€ΠΎΠΌ Ρƒ сСбя Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅) ΠΈ сторонними (созданныС внСшними сСрвисами).

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ снимки Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сами управляСм инструмСнтами для ΠΈΡ… создания.
Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ снимки содСрТат мСньшС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΌΠΈ.
Чисто Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ снимки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΠΎΠΉ, поэтому использованиС сторонних сСрвисов β€” это Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ получСния Π½ΠΎΡ‚Π°Ρ€ΠΈΠ°Π»ΡŒΠ½ΠΎ Π·Π°Π²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ Π²Π΅Π±-страниц.
Π”Π°ΠΆΠ΅ Ссли вСсь наш Π°Ρ€Ρ…ΠΈΠ² с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ снимками ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ, сторонниС снимки всё Ρ€Π°Π²Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ шанс Π΄ΠΎΠΆΠΈΡ‚ΡŒ Π΄ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ².

🏷 **Аннотация Π²Π΅Π±-страницы** β€” это Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π² процСссС Π°Ρ€Ρ…ΠΈΠ²Π°Ρ†ΠΈΠΈ.
Частный случай Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ β€” ΠΌΠ΅Ρ‚ΠΊΠΈ (Ρ‚Π΅Π³ΠΈ).
Аннотации ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ, ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΈ этом хранятся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ снимков Π²Π΅Π±-страниц.

### Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π°Ρ€Ρ…ΠΈΠ²Π°

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
КаТдая коллСкция Π°Ρ€Ρ…ΠΈΠ²Π° фокусируСтся Π½Π° Ρ‡Ρ‘ΠΌ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΌ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, _сообщСствах Π’Πš Π² Энской области_.
Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π° Π½Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ сбор Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ… Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ·.

```txt
🌐 🌐 🌐 🌐 🌐 🌐 🌐 🌐 🌐 🌐 🌐 🌐 🌐 🌐 🌐
πŸ—ƒ коллСкция 1 πŸ—ƒ коллСкция 2 πŸ—ƒ коллСкция 3 ... πŸ—ƒ коллСкция N
↕ ↕ ↕ ↕
πŸ‘€ πŸ‘€πŸ‘€πŸ‘€ πŸ‘€ πŸ‘€πŸ‘€
```

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Π°Ρ€Ρ…ΠΈΠ²Π° β€” это обычная ΠΏΠ°ΠΏΠΊΠ° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.
ΠœΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²Π° ΠΎΡ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ β€” [JSON](https://ru.wikipedia.org/wiki/JSON) ΠΈ [ZIP](https://ru.wikipedia.org/wiki/ZIP).

Для ΠΎΠ±ΠΌΠ΅Π½Π° собранными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ [Π³ΠΈΡ‚](https://ru.wikipedia.org/wiki/Git) (систСму контроля вСрсий).
Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ коллСкциями Π°Ρ€Ρ…ΠΈΠ²Π° ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Π΅ ΠΊΠΎΠΏΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² процСссС ΠΈΡ… сбора.
БистСма контроля вСрсий Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ для исслСдоватСлСй Π°Ρ€Ρ…ΠΈΠ²Π°.

Код Π² этом Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Π°Ρ€Ρ…ΠΈΠ²Π°.
Π‘ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Ρ‚Π΅Ρ€ΡΡŽΡ‚ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² случаС ΡƒΡ‚Π΅Ρ€ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΌΠΊΠΈ скриптов.

### Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π°Ρ€Ρ…ΠΈΠ²Π°

πŸ—ƒ ΠΏΠ°ΠΏΠΊΠ° с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ Π°Ρ€Ρ…ΠΈΠ²Π°
🌐 ΠΏΠ°ΠΏΠΊΠ° с Π°Ρ€Ρ…ΠΈΠ²ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Π±-страницы (адрСса Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅)
πŸ“Έ ΠΏΠ°ΠΏΠΊΠ° cΠΎ снимками ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Π±-страницы
πŸ“‚ любая другая ΠΏΠ°ΠΏΠΊΠ°

πŸ“œ Ρ„Π°ΠΉΠ» с ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ)
⏳ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» (Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ)
πŸ›  тСхничСский Ρ„Π°ΠΉΠ» (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ историчСской цСнности)

ВсС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅: ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² процСссС запуска скриптов.
Если Π²Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² своСй ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ.

```txt
πŸ—ƒ [collection-dir-path]/

πŸ“‚ snapshot-queues/

⏳ some-third-party-generator.json
⏳ some-local-generator.json
⏳ some-other-third-party-generator.json

πŸ“‚ web-pages/

πŸ“‚ some/

πŸ“‚ path/

πŸ“‚ to/

🌐 some-web-page/
🌐 some-other-web-page/

πŸ“‚ some-other-path/

🌐 another-web-page/
🌐 different-web-page/

πŸ›  .gitattributes
πŸ›  .gitignore
πŸ›  .prettierrc
πŸ›  README.md
⏳ url-inbox.txt
```

Папка `πŸ“‚ web-pages` содСрТит Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π²Π΅Π±-страницам ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° этой ΠΏΠ°ΠΏΠΊΠΈ опрСдСляСтся Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-адрСсов.
НапримСр, `https://vk.com/wall-54321_111` соотвСтствуСт ΠΏΠ°ΠΏΠΊΠ΅ `🌐 web-pages/vk/posts/-54321/111`.

Папка `πŸ“‚ snapshot-queues` ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ [создании снимков](#созданиС-снимков).
Π€Π°ΠΉΠ» `⏳ url-inbox.txt` Π½ΡƒΠΆΠ΅Π½ [для рСгистрации Π²Π΅Π±-страниц](#рСгистрация-Π²Π΅Π±-страниц).

Папка ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Π±-страницы ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΡƒΡŽ структуру:

```txt
🌐 some/path/to/some-web-page/

πŸ“Έ snapshots/

πŸ“œ 2022-03-10-011223z-some-local-generator.zip
⏳ 2022-03-10-011223z-some-local-generator.zip.summary.json

⏳ 2022-04-05-124312z-some-third-party-generator.zip
⏳ 2022-04-05-124312z-some-third-party-generator.zip.summary.json

⏳ 2022-04-27-071231z-some-other-third-party-generator.zip
⏳ 2022-04-27-071231z-some-other-third-party-generator.zip.summary.json

πŸ“œ 2022-05-02-182048z-some-local-generator.zip
⏳ 2022-05-02-182048z-some-local-generator.zip.summary.json

⏳ 2022-05-02-182440z-some-third-party-generator.zip
⏳ 2022-05-02-182440z-some-third-party-generator.zip.summary.json

⏳ snapshot-summary-combination.json
πŸ“œ web-page.json
```

Π’ Ρ„Π°ΠΉΠ»Π΅ `πŸ“œ web-page.json` хранится адрСс Π²Π΅Π±-страницы, списки извСстных снимков (πŸ“Έ) ΠΈ аннотация (🏷).
Π­Ρ‚ΠΎ СдинствСнный ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΠ΅.

Папка `πŸ“Έ snapshots` ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для снимков Π²Π΅Π±-страницы.
Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ снимки содСрТат ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ поэтому становятся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ (πŸ“œ).
Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ снимки β€” это Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (⏳), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ.

Рядом со снимком Π²Π΅Π±-страницы находится сводка ΠΏΠΎ этому снимку: `⏳ *.summary.json`.
Π‘Π²ΠΎΠ΄ΠΊΠΈ [ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· снимков скриптами](#ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅-сводок-ΠΈΠ·-снимков) ΠΈ содСрТат структурированныС ΠΊΠΎΠΏΠΈΠΈ Π²Π΅Π±-страниц (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, список постов Π² Π»Π΅Π½Ρ‚Π΅ сообщСства).
Π€Π°ΠΉΠ»Ρ‹ сводок ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· снимков, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ.
Π€Π°ΠΉΠ» `⏳ snapshot-summary-combination.json` Ρ‚ΠΎΠΆΠ΅ гСнСрируСтся локально ΠΈ содСрТит ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ сводок (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹ΠΉ список постов Π·Π° всё врСмя Π°Ρ€Ρ…ΠΈΠ²Π°Ρ†ΠΈΠΈ сообщСства).

ВрСмСнны́С ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² названиях Ρ„Π°ΠΉΠ»ΠΎΠ² (`2022-04-05-124312z`) ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² (`"2022-04-05T12:43:12Z"`) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ часовой пояс [UTC](https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F) (MSK-03).
[Богласно ISO 8601](), UTC обозначаСтся Π»ΠΈΡ‚Π΅Ρ€ΠΎΠΉ `Z` _(β€œZulu time”)_.
ΠœΡ‹ Π½Π΅ ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ этот символ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ с мСстным Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎ МосквС.

---

Π Π°Π·Π±ΠΈΠ²ΠΊΠ° ΠΏΠ°ΠΏΠΊΠΈ `πŸ“‚ web-pages` Π½Π° ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Π½ΠΎ Π½Π΅ нСсёт Π² сСбС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.
Π›ΡŽΠ±Π°Ρ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ° с Ρ„Π°ΠΉΠ»ΠΎΠΌ `πŸ“œ web-page.json` считаСтся ΠΏΠ°ΠΏΠΊΠΎΠΉ Π²Π΅Π±-страницы (🌐).
Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΏΠΎΠΊ Π²Π΅Π±-страниц Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ:

```txt
🌐 some/path/to/some-web-page/
πŸ“œ web-page.json

❌ some/path/to/some-web-page/some/subfolder/
❌ web-page.json
```

## Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π°Ρ€Ρ…ΠΈΠ²Π°, Π²Π°ΠΌ понадобятся:

- Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ [ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки](https://ru.wikipedia.org/wiki/Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ_ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ_строки) (Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°),
- нСбольшой ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с [Π³ΠΈΡ‚ΠΎΠΌ](https://ru.wikipedia.org/wiki/Git) (систСмой контроля вСрсий),
- повСрхностноС знакомство с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ [JSON](https://ru.wikipedia.org/wiki/JSON).

Π’ качСствС тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° рСкомСндуСтся [VSCode](https://code.visualstudio.com) с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ
[DotENV](https://marketplace.visualstudio.com/items?itemName=mikestead.dotenv),
[Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph),
[Git Lens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) ΠΈ
[Yaml](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml).

Π’ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ°ΠΏΠΊΠ°Ρ… ΠΈ Ρ„Π°ΠΉΠ»Π°Ρ… `[project-dir-path]` условно ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.
НапримСр, Ссли Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ это `/Users/me/projects/special-internet-archive`, Ρ‚ΠΎ `[project-dir-path]/some-folder` Π² инструкциях ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ `/Users/me/projects/special-internet-archive/some-folder`.

### ВрСбования ΠΊ систСмС

Для запуска скриптов ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ любой ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ соврСмСнный ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ с любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой (Linux, macOS, Windows).
Π₯Π²Π°Ρ‚ΠΈΡ‚ 4-8 Π“Π‘ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ порядка 2-5 Π“Π‘ свободного мСста Π½Π° дискС.

### ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅

Π­Ρ‚ΠΈ шаги достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ сбор Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π°Ρ€Ρ…ΠΈΠ²Π°.

1. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° машинС установлСны [Π³ΠΈΡ‚](https://git-scm.com) (систСма контроля вСрсий), [Π³ΠΈΡ‚-лфс](https://git-lfs.github.com) (ΠΏΠ»Π°Π³ΠΈΠ½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большими Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ) ΠΈ [Π½ΠΎΠ΄Π°](https://nodejs.org/ru) (срСда запуска скриптов).
ΠŸΡ€ΠΈ установкС Π½ΠΎΠ΄Ρ‹ рСкомСндуСтся Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ LTS.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ установки:

```sh
git --version
## ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ β‰₯ 2.30

git-lfs --version
## ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ β‰₯ 3.0

node --version
## ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ β‰₯ 16.14, < 17 ΠΈΠ»ΠΈ β‰₯ 18.0, < 19
```

1. УстановитС послСднюю Π²Π΅Ρ€ΡΠΈΡŽ [ярна](https://yarnpkg.com) (ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° зависимостСй):

```sh
npm install --global yarn
```

Команда для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ установки:

```sh
yarn --version
## ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ β‰₯ 1.22
```

1. [ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository) этот Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² ΠΏΠ°ΠΏΠΊΡƒ `[project-dir-path]/tooling`.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² консоли Π² Π·Π°Ρ€Π°Π½Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ `[project-dir-path]`:

```sh
cd "[project-dir-path]"

## ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
## cd "/Users/bob/projects/special-internet-archive"
```

НазваниС этой ΠΏΠ°ΠΏΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ слСва ΠΎΡ‚ мСста Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

ЗапуститС ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅:

```sh
git clone https://github.com/kachkaev/special-internet-archive.git tooling
```

Π’ качСствС самопровСрки ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ появился Ρ„Π°ΠΉΠ» `[project-dir-path]/tooling/README.md`.

Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ клонирования рСпозитория оказался Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `[project-dir-path]/special-archive-tooling` ΠΈΠ»ΠΈ `[project-dir-path]/archive/tooling`, Ρ‚ΠΎ ΠΏΠ°ΠΏΠΊΡƒ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ пСрСнСсти.
Бвязь с Π³ΠΈΡ‚Ρ…Π°Π±ΠΎΠΌ ΠΏΡ€ΠΈ этом Π½Π΅ потСряСтся.

1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΡƒ `[project-dir-path]/tooling`:

```sh
cd "[project-dir-path]/tooling"

## ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
## cd "/Users/bob/projects/special-internet-archive/tooling"
```

1. Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ `[project-dir-path]/tooling`, установитС зависимыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

```sh
yarn install
```

Π­Ρ‚ΠΎ Π·Π°ΠΉΠΌΡ‘Ρ‚ ΠΏΠ°Ρ€Ρƒ ΠΌΠΈΠ½ΡƒΡ‚.

1. Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ `[project-dir-path]/tooling`, создайтС пустой Ρ„Π°ΠΉΠ» `.env.local`:

```sh
yarn exe scripts/1-chores/ensure-dot-env-local.script.ts
```

Запуск этой консольной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ скриптов.
Если Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка, слСдуСт Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ инструкции (Π²ΠΈΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пропустили).

### Настройка ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π°Ρ€Ρ…ΠΈΠ²Π°

ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ шагов Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½Π΅ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
Для этого ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ скриптов ΠΈΠ»ΠΈ ΠΊΠ΅ΠΌ-Ρ‚ΠΎ ΠΈΠ· Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-Ρ‡Π°Ρ‚Π° [@ruarxivechat](https://t.me/ruarxivechat).
Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ зарСгистрированным ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±Π΅ ΠΈ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ свой Π½ΠΈΠΊ.

ПослС получСния доступа:

1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ `[project-dir-path]/data/collections`.

1. ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ для вас Π²Π΅Ρ‚ΠΊΡƒ Π² ΠΏΠ°ΠΏΠΊΡƒ `πŸ—ƒ [project-dir-path]/data/collections/[collection-id]`.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π² консоли Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ `[project-dir-path]/data`:

```sh
git clone https://[github-username]:[personal-access-token]@github.com/[repository].git --branch=collections/[collection-id] --single-branch collections/[collection-id]

## ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
## git clone https://bob:[email protected]/example/repo.git --branch=collections/my-collection --single-branch collections/my-collection
```

- `[github-username]` β€” это ваш Π½ΠΈΠΊ Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±Π΅.
- `[personal-access-token]` β€” это ваш ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ для доступа ΠΊ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΌΡƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ([инструкция](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)).
- `[repository]` - это названия рСпозитория, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ваша коллСкция Π°Ρ€Ρ…ΠΈΠ²Π°.
- `[collection-id]` β€” это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `region-ru-pnz` ΠΈΠ»ΠΈ `topic-xyz`).
НазваниС ΠΏΠ°ΠΏΠΊΠΈ соотвСтствуСт названию Π²Π΅Ρ‚ΠΊΠΈ рСпозитория с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (`collections/[collection-id]`).

1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» `[project-dir-path]/tooling/.env.local` ΠΊΠ°ΠΊ тСкстовый ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π°Ρ€Ρ…ΠΈΠ²Π°.
Π­Ρ‚ΠΎ дСлаСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊΠΎΠΉ строчки:

```ini
COLLECTION_DIR_PATH=[project-dir-path]/data/collections/[collection-id]

## ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
## COLLECTION_DIR_PATH=/Users/bob/projects/special-internet-archive/data/collections/my-collection
```

### РСгистрация Π²Π΅Π±-страниц

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π±-страницы, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π°Ρ€Ρ…ΠΈΠ²Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ нСсколько ссылок.
Пока Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сообщСства Π’Πš (`https://vk.com/typical_ensk`).
ΠΈΠ»ΠΈ прямыС ссылки Π½Π° посты (`https://vk.com/wall-123-456`).
Бсылки Π½Π° посты Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ автоматичСски ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· зарСгистрированных сообщСств.

Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ссылки Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π°Ρ€Ρ…ΠΈΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚.
Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ сфокусированной Π½Π° Ρ‡Ρ‘ΠΌ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ ΡΠ²Π°Π»ΠΈΠ²Π°Ρ‚ΡŒ всС ссылки Π² ΠΊΡƒΡ‡Ρƒ.
Π­Ρ‚ΠΎ упростит ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΡŽ сбора Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… Π°Π½Π°Π»ΠΈΠ·.

1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» `⏳ [collection-dir-path]/url-inbox.txt`.
Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ скриптом:

```sh
yarn exe scripts/2-registration/1-ensure-url-inbox-exists.script.ts
```

1. НакидайтС Π² Ρ„Π°ΠΉΠ» `⏳ [collection-dir-path]/url-inbox.txt` ссылки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.
КаТдая строчка Π² Ρ„Π°ΠΉΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ссылку.
ΠŸΡƒΡΡ‚Ρ‹Π΅ строчки ΠΈΠ»ΠΈ строчки Π±Π΅Π· ссылок ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.
Если Π²Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ссылки ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π²Π°ΠΌ Π½Π΅ придётся Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

```txt
https://vk.com/id123

https://vk.com/group123
https://vk.com/public123
https://vk.com/something
ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ тСкст ΠΌΠ΅ΠΆΠ΄Ρƒ ссылками
https://vk.com/wall-123-456
```

1. ЗапуститС скрипт для рСгистрации всСх ссылок ΠΈΠ· Ρ„Π°ΠΉΠ»Π° `⏳ [collection-dir-path]/url-inbox.txt`:

```sh
yarn exe scripts/2-registration/2-register-from-url-inbox.script.ts
```

Π­Ρ‚ΠΎ создаст Ρ„Π°ΠΉΠ»Ρ‹ `πŸ“œ [collection-dir-path]/web-pages/**/web-page.json`.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ссылку Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.
Π£ΠΆΠ΅ собранныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ этом Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ.

1. ![][ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ]
ЗапуститС скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ΄Π°Π»ΠΈΡ‚ всС зарСгистрированныС ссылки ΠΈΠ· Ρ„Π°ΠΉΠ»Π° `⏳ [collection-dir-path]/url-inbox.txt`.
Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ссылки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ.

```sh
yarn exe scripts/2-registration/3-clean-up-url-inbox.script.ts
```

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

```txt
https://vk.com/public123
https://vk.com/unsupported/url
ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ тСкст ΠΌΠ΅ΠΆΠ΄Ρƒ ссылками
https://vk.com/group123

https://vk.com/wall-123-456
Π΅Ρ‰Ρ‘ тСкст
https://unsupported.example.com
```

↓

```txt
https://vk.com/unsupported/url
ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ тСкст ΠΌΠ΅ΠΆΠ΄Ρƒ ссылками

Π΅Ρ‰Ρ‘ тСкст
https://unsupported.example.com
```

### БозданиС снимков

ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания Π½ΠΎΠ²Ρ‹Ρ… снимков состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… дСйствий: ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… снимков, составлСния ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ заявок Π½Π° Π½ΠΎΠ²Ρ‹Π΅ снимки ΠΈ исполнСния ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
Π­Ρ‚ΠΈ дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нСзависимо для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° снимков.

#### Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ снимки: Wayback Machine

[Wayback Machine](https://ru.wikipedia.org/wiki/Wayback_Machine) β€” это нСкоммСрчСский ΠΎΠ½Π»Π°ΠΉΠ½-Π°Ρ€Ρ…ΠΈΠ² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.
Он [Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π² России](https://ru.wikipedia.org/wiki/Wayback_Machine#%D0%91%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8), поэтому для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со снимками Π² этом Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ [Π²Π°ΠΌ понадобится VPN](https://roskomsvoboda.org/cards/card/whydoyouneedVPN/).

[web.archive.org](https://web.archive.org) ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ выступаСт Π² Ρ€ΠΎΠ»ΠΈ СдинствСнного стороннСго Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.
Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ½Π»Π°ΠΉΠ½-Π°Ρ€Ρ…ΠΈΠ²: [archive.ph](https://archive.ph).
ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡ‚Ρƒ Π°Ρ€Ρ…ΠΈΠ²Π°.

1. ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… снимков Wayback Machine:

```sh
## 🌍 Ссли Π²Ρ‹ Π² России, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ VPN
yarn exe scripts/3-snapshots/wayback-machine/1-update-inventory.script.ts
```

Π­Ρ‚ΠΎΡ‚ скрипт скачаСт список ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… снимков для Π²Π΅Π±-страниц ΠΈΠ· нашСй ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ снимки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅, Ρ‚Π°ΠΊ ΠΈ снимки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°Π» ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ сохранён Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ `snapshotInventoryLookup` Ρ„Π°ΠΉΠ»ΠΎΠ² `πŸ“œ web-page.json`.

ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ запускС скрипт пропустит Π²Π΅Π±-страницы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ провСряли Π΄ΠΎ 60 ΠΌΠΈΠ½ΡƒΡ‚ Π½Π°Π·Π°Π΄.
Π­Ρ‚ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» контролируСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния `INVENTORY_DURABILITY_IN_MINUTES`.

Если Ρƒ Π²Π΅Π±-страницы Π΅ΡΡ‚ΡŒ Π½Π΅Π΄Π°Π²Π½ΠΎ созданный снимок, скрипт Π΅Ρ‘ Ρ‚ΠΎΠΆΠ΅ пропустит.
Π’Π°ΠΊΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ускоряСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΡƒΡŽ ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π°Ρ€Ρ…ΠΈΠ²Π°.
Π§Ρ‚ΠΎΠ±Ρ‹ провСсти ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ для страниц с Π½Π΅Π΄Π°Π²Π½ΠΈΠΌΠΈ снимками, Π·Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния `EAGER=true`.

1. Π‘ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ заявок Π½Π° Π½ΠΎΠ²Ρ‹Π΅ снимки:

```sh
yarn exe scripts/3-snapshots/wayback-machine/2-compose-queue.script.ts
```

Π­Ρ‚ΠΎΡ‚ скрипт пройдётся ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²Π΅Π±-страниц ΠΈ посмотрит Π½Π° врСмя послСдних извСстных Π½Π°ΠΌ снимков Π² Wayback Machine.
Π’Π΅Π±-страницы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π²Π½ΠΎ Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π»ΠΈΡΡŒ, Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.
Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌΠΈ снимками зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈ возраста ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Π΅Π±-страницы.
ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ нСльзя.

1. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ заявок Π½Π° Π½ΠΎΠ²Ρ‹Π΅ снимки:

```sh
## 🌍 Ссли Π²Ρ‹ Π² России, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ VPN
yarn exe scripts/3-snapshots/wayback-machine/3-process-queue.script.ts
```

Π‘ΠΊΡ€ΠΈΠΏΡ‚ посмотрит Π½Π° адрСса Π²Π΅Π±-страниц Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Π½ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· Ρ„ΠΎΡ€ΠΌΡƒ https://web.archive.org/save.
ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ.
Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹Π΅ заявки ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ€Π°Π·Ρƒ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚.

> 🟑 **Wayback Machine ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄ΠΎ 500 запросов Π½Π° снимки Π² дСнь**
> Если Π²Ρ‹ прСвыситС этот Π»ΠΈΠΌΠΈΡ‚, скрипт выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ:
>
> ```txt
> API limits reached. Try using another internet connection or continue tomorrow
> ```
>
> ЗапуститС скрипт Ρ‡Π΅Ρ€Π΅Π· дСнь, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ (помСняйтС свой IP-адрСс).

#### Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ снимки: Playwright

[Playwright](https://playwright.dev) β€” инструмСнт для тСстирования Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
По сути это ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ° Π²ΠΎΠΊΡ€ΡƒΠ³ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, которая позволяСт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ взаимодСйствиС с сайтами.
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π²Π΅Π±-страницы, Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ Π½Π° ссылки ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΡ€ΠΎΠΌΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ содСрТимоС, Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ тСкст ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.
Playwright ΡƒΠΌΠ΅Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сСссии Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΎΠ² ([traces](https://playwright.dev/docs/trace-viewer)).
ΠžΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ Playwright β€” это Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ слайдов Π² ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ `zip`.
Π’Π½ΡƒΡ‚Ρ€ΠΈ Π°Ρ€Ρ…ΠΈΠ²Π° находятся всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ рСсурсы для отобраТСния «слайдов»: Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°, стили ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ.
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ «слайд» соотвСтствуСт ΠΎΠ΄Π½ΠΎΠΌΡƒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠ° Π²Π΅Π±-страницы Π²Π½ΠΈΠ·).

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Playwright ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡƒΡŽ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ.
Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΎΠ² Ρ‚ΠΎΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ ΠΈ поэтому Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Π΄Π°ΠΆΠ΅ Π² Π΄Π°Π»Ρ‘ΠΊΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ° Π²Π΅Π±-страницы Π² Playwright [доступСн Π½Π° сайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°](https://trace.playwright.dev/?trace=https://demo.playwright.dev/reports/todomvc/data/cb0fa77ebd9487a5c899f3ae65a7ffdbac681182.zip).

Для тСстировщиков Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Playwright β€” это срСдство ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π°.
Для нас ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Playwright β€” это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹Π΅, Π½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ снимки Π²Π΅Π±-страниц.

1. ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… снимков Playwright:

```sh
yarn exe scripts/3-snapshots/playwright/1-update-inventory.script.ts
```

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ сохранён Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ `snapshotInventoryLookup` Ρ„Π°ΠΉΠ»ΠΎΠ² `πŸ“œ web-page.json`.

1. Π‘ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ заявок Π½Π° Π½ΠΎΠ²Ρ‹Π΅ снимки:

```sh
yarn exe scripts/3-snapshots/playwright/2-compose-queue.script.ts
```

Π­Ρ‚ΠΎΡ‚ скрипт пройдётся ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²Π΅Π±-страниц ΠΈ посмотрит Π½Π° врСмя послСдних извСстных Π½Π°ΠΌ снимков Π² Playwright.
Π’Π΅Π±-страницы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π²Π½ΠΎ Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π»ΠΈΡΡŒ, Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.
Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌΠΈ снимками зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈ возраста ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Π΅Π±-страницы.
ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ нСльзя.

Π’ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ страницы сообщСств, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… снимков постов такая ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ Wayback Machine.

1. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ заявок Π½Π° Π½ΠΎΠ²Ρ‹Π΅ снимки:

```sh
yarn exe scripts/3-snapshots/playwright/3-process-queue.script.ts
```

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ.
Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹Π΅ заявки ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ€Π°Π·Ρƒ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚.

### Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ сводок ΠΈΠ· снимков

Π‘Π½ΠΈΠΌΠΊΠΈ Π²Π΅Π±-страниц содСрТат «сырыС» Π΄Π°Π½Π½Ρ‹Π΅: Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ, стили ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ.
ΠœΡ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π΅ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ· этого Ρ†Π΅Π½Π½ΠΎ, поэтому раздСляСм сбор «сырых» Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ†ΠΈΡŽ постов Π’Πš, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Β«ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΒ» Π»Π΅Π½Ρ‚Ρ‹ сообщСств ΠΈ Π½Π°ΠΉΡ‚ΠΈ Π² Π½ΠΈΡ… ссылки Ρ‚ΠΈΠΏΠ° `https://vk.com/wall-123-456`.
Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ извСстныС Π½Π°ΠΌ снимки ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ сводку ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ….
Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Π±-страницы ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ нСсколько снимков, ΠΌΡ‹ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ сводки ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ скриптом.

#### Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ снимки: Wayback Machine

> 🚧 эта сСкция β€” Π·Π°Π΄Π΅Π» Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅; Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ

1. ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΡƒΡŽ ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… снимков.
БСрвису [web.archive.org](https://web.archive.org) Π½ΡƒΠΆΠ½ΠΎ врСмя для создания Π½ΠΎΠ²Ρ‹Ρ… снимков, поэтому ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΌΠΈΠ½ΡƒΡ‚ 10-30 с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ заявок.

```sh
## 🌍 Ссли Π²Ρ‹ Π² России, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ VPN
yarn exe scripts/4-snapshot-summaries/wayback-machine/1-update-inventory.script.ts
```

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ сохранён Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ `snapshotInventoryLookup` Ρ„Π°ΠΉΠ»ΠΎΠ² `πŸ“œ web-page.json`.

1. Π˜Π·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ сводки ΠΈΠ· снимков:

```sh
## 🚧 скрипт ΠΏΠΎΠΊΠ° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, Π½ΠΎ это Π½Π΅ прСпятствуСт сбору Π΄Π°Π½Π½Ρ‹Ρ…
yarn exe scripts/4-snapshot-summaries/wayback-machine/2-extract-summaries.script.ts
```

Π­Ρ‚ΠΎΡ‚ скрипт скачаСт извСстныС Π½Π°ΠΌ снимки ΠΈΠ· [web.archive.org](https://web.archive.org) Π² `⏳ [web-page-dir-path]/snapshots/*-wayback-machine.zip` ΠΈ создаст Ρ„Π°ΠΉΠ» `⏳ [web-page-dir-path]/snapshots/*-wayback-machine.zip.summary.json` для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ снимка.

#### Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ снимки: Playwright

1. ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… снимков:

```sh
yarn exe scripts/4-snapshot-summaries/playwright/1-update-inventory.script.ts
```

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ сохранён Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ `snapshotInventoryLookup` Ρ„Π°ΠΉΠ»ΠΎΠ² `πŸ“œ web-page.json`.

1. Π˜Π·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ сводки ΠΈΠ· снимков:

```sh
yarn exe scripts/4-snapshot-summaries/playwright/2-extract-summaries.script.ts
```

Π­Ρ‚ΠΎΡ‚ скрипт создаст Ρ„Π°ΠΉΠ» `⏳ [web-page-dir-path]/snapshots/*-playwright.zip.summary.json` для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° `πŸ“œ [web-page-dir-path]/snapshots/*-playwright.zip`.

Пока Ρ‡Ρ‚ΠΎ извлСкаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ список постов Π² Π»Π΅Π½Ρ‚Π°Ρ… сообщСств.

#### ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ сводок

ПослС запуска ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… скриптов Ρƒ нас Π΅ΡΡ‚ΡŒ сводки ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ снимку: `⏳ [web-page-dir-path]/snapshots/*.summary.json`.
Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ Π² этих Ρ„Π°ΠΉΠ»Π°Ρ… частично повторяСтся, поэтому ΠΌΡ‹ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅ΠΌ сводки Π² Ρ„Π°ΠΉΠ»Ρ‹ `⏳ [web-page-dir-path]/snapshot-summary-combination.json`:

```sh
yarn exe scripts/4-snapshot-summaries/extract-summary-combinations.script.ts
```

### Аннотация Π²Π΅Π±-страниц

> 🚧 эта сСкция β€” Π·Π°Π΄Π΅Π» Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅; Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ

ИмСя ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ сводок, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π±-страницу: Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΠΈ, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ ссылки ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.
По Π·Π°Π΄ΡƒΠΌΠΊΠ΅ эта Π·Π°Π΄Π°Ρ‡Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-интСрфСйс ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ _Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ_ ([visual analytics](https://en.wikipedia.org/wiki/Visual_analytics)).
ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ Π°Ρ€Ρ…ΠΈΠ²Π° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Π²Π΅Π±-интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ `yarn dev`, ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ содСрТимоС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π°Ρ€Ρ…ΠΈΠ²Π° ΠΈ смоТСт Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Π±-страницы.

Пока Π²Π΅Π±-интСрфСйса Π½Π΅Ρ‚, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Π°Π²Ρ‚ΠΎ-Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ:

```sh
## 🚧 скрипт ΠΏΠΎΠΊΠ° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, Π½ΠΎ это Π½Π΅ прСпятствуСт сбору Π΄Π°Π½Π½Ρ‹Ρ…
yarn exe scripts/5-annotations/extract-from-snapshot-summary-combinations.script.ts
```

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта Π±ΡƒΠ΄Π΅Ρ‚ сохранён Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ `annotation` Ρ„Π°ΠΉΠ»ΠΎΠ² `πŸ“œ web-page.json`.

### Π Π°Π±ΠΎΡ‚Π° с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ

#### РСзСрвная копия Π΄Π°Π½Π½Ρ‹Ρ…

Запуск скриптов мСняСт содСрТимоС ΠΏΠ°ΠΏΠΊΠΈ `πŸ—ƒ [project-dir-path]/data/collections/[collection-id]`.
Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Ρ†Π΅Π½Π½Ρ‹Π΅ историчСскиС Π΄Π°Π½Π½Ρ‹Π΅, Π²Π°ΠΆΠ½ΠΎ пСриодичСски ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π°Ρ€Ρ…ΠΈΠ²Π° с Π³ΠΈΡ‚Ρ…Π°Π±ΠΎΠΌ.

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ автоматичСски.
Π§Ρ‚ΠΎΠ±Ρ‹ это ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, установитС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния `AUTO_SYNC_COLLECTION=false`.
Для синхронизации ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π°Ρ€Ρ…ΠΈΠ²Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π΅ΡΡ‚ΡŒ скрипт:

```sh
yarn exe scripts/6-results/sync-collection.script.ts
```

Они равносилСн Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:

```sh
cd "[project-dir-path]/data/collections/[collection-id]"
git add --all
git commit --message "Update collection"
git push
```

### Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

#### Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ пСрСчня Π²Π΅Π±-страниц

НакоплСнныС снимки ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ β€” это ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ источник Π½ΠΎΠ²Ρ‹Ρ… Π²Π΅Π±-страниц Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
НапримСр, Π»Π΅Π½Ρ‚Π° сообщСства Π’Πš содСрТит ссылки Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ посты, Π° эти Π²Π΅Π±-страницы ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌΠΈ.
ΠŸΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ ΡƒΠΆΠ΅ собранными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π°Ρ€Ρ…ΠΈΠ²Π° Π±Π΅Π· Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ сбора ссылок.

1. ЗапуститС скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ ссылки Π² собранных Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΈΡ… Π² Ρ„Π°ΠΉΠ» `⏳ [collection-dir-path]/url-inbox.txt`.
НапримСр, Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌΠΈ станут ссылки Π½Π° общСствСнно Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ посты Π² Π»Π΅Π½Ρ‚Π΅ сообщСств.
Π Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словам, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

```sh
yarn exe scripts/2-registration/1-auto-populate-url-inbox-with-relevant-urls.script.ts
```

1. ![][ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ]
ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» `⏳ [collection-dir-path]/url-inbox.txt` для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈΠ»ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ рСдактирования.

1. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π² Ρ€Π°Π·Π΄Π΅Π» [РСгистрация Π²Π΅Π±-страниц](#рСгистрация-Π²Π΅Π±-страниц) ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅ с Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π² ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½ΠΎΠΌ состоянии, вСсь процСсс сбора Π΄Π°Π½Π½Ρ‹Ρ… рСкомСндуСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Ρ€Π°Π· Π² нСсколько Π΄Π½Π΅ΠΉ.
Π‘Π°ΠΌΡ‹ΠΉ Π»Ρ‘Π³ΠΊΠΈΠΉ способ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π°Ρ€Ρ…ΠΈΠ²Π° описан Π½ΠΈΠΆΠ΅.

#### ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ запуск скриптов

Запуск скриптов ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€Π°ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² процСссС сбора Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ β€” ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄.
Π§Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии, Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ скрипты Ρ€Π°Π· Π² нСсколько Π΄Π½Π΅ΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

Для запуска всСго процСсса сбора ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… сущСствуСт ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ скрипт:

```sh
## 🌍 Ссли Π²Ρ‹ Π² России, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ VPN
yarn exe scripts/1-chores/evolve-collection.script.ts
```

Бмысл ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ скрипта β€” Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ порядкС.

ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ скрипт ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ ΠΊΠ°ΠΊ для обновлСния, Ρ‚Π°ΠΊ ΠΈ для ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ наполнСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π°Ρ€Ρ…ΠΈΠ²Π°.
Если коллСкция новая, ΠΊΠΈΠ½ΡŒΡ‚Π΅ нСсколько ссылок Π² Ρ„Π°ΠΉΠ» `⏳ [collection-dir-path]/url-inbox.txt` ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ скрипт.
Бсылки ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΊΠΈΠ΄Ρ‹Π²Π°Ρ‚ΡŒ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” это Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ.

### Π Π°Π±ΠΎΡ‚Π° с нСсколькими коллСкциями

АрхитСктура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ нСсколькими коллСкциями Π°Ρ€Ρ…ΠΈΠ²Π° с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.
Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΠ°ΠΏΠΎΠΊ Π² этом случаС выглядит Ρ‚Π°ΠΊ:

```txt
πŸ“ [project-dir-path]/

πŸ“ tooling/

πŸ“ data/

πŸ“ collections/

πŸ—ƒ [collection-id-1]/

πŸ—ƒ [collection-id-2]/

...

πŸ—ƒ [collection-id-n]/
```

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ с нСсколькими коллСкциями, мСняйтС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ `COLLECTION_DIR_PATH` ΠΌΠ΅ΠΆΠ΄Ρƒ запусками скриптов.
Π­Ρ‚ΠΎ дСлаСтся Π² Ρ„Π°ΠΉΠ»Π΅ `[project-dir-path]/tooling/.env.local`.

[ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ]: https://img.shields.io/badge/-ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-white.svg