Извлечь версию Confluence из URL, HTML или JSON

Я пытаюсь извлечь версия из URL-адреса, например

https://my.atlassian.com/download/feeds/current/confluence.json

Вот мой сценарий bash:

#!/bin/bash

# Get the actual version
url = "https://de.atlassian.com/software/confluence/download"
actual_version = "$(curl -s $url | grep -Po '(?<=version :)\d+' | head -1)"

echo $actual_version

К сожалению, он не дает мне только номер версии.

Есть идеи, как это сделать правильно?

Примечание: в вопросе было несколько улучшений / исправлений на основе комментариев.

Попробуйте сменить [^;] на [0-9.]

Wiktor Stribiżew 07.09.2018 12:32

Спасибо за Ваш ответ. Пытался, но не совпадал

cr1zz 07.09.2018 12:36

Можете ли вы добавить пример их источника с упомянутым href = "<%= downloadLink %>", поскольку у читателей может быть не тот же источник, что вы видите (Например: я не вижу ссылок для загрузки .exe, потому что я пользователь Linux, сайт предлагает мне загрузить Linux, когда я вызываю de.atlassian.com/software/confluence/download)

el-teedee 07.09.2018 13:03

После тестирования их страницы загрузки может потребоваться javascript для замены ссылки для загрузки реальной ссылкой с версией. Может, лучше попробовать извлечь их JSON? Найдите "JSON" в их источнике. Я нашел эту страницу: my.atlassian.com/download/feeds/current/confluence.json

el-teedee 07.09.2018 13:07

Вы изменили начальный URL. В новом URL-адресе вы указали https://confluence.atlassian.com/doc/confluence-release-note‌​s-327.html , это версия 327, которую вы не хотите извлекать, верно?

el-teedee 07.09.2018 13:09

Нет, версия находится в исходном коде в тегах <meta>: <meta name = "product-version" content = "6.11" /> - где 6.11 - это фактическая версия.

cr1zz 07.09.2018 13:11

Я бы предложил использовать правильный парсер JSON, например jq, за исключением того, что confluence.json на самом деле не является действительным JSON. Я не уверен, почему JSON обернут в download(...), но без этого вы можете просто использовать что-то вроде curl ... | jq '.[].version'. Это даст вам все версии; вы не указали, какой именно вам нужен.

chepner 07.09.2018 13:32
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
7
188
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

TL; DR

Вот последняя команда для извлечения версии со страницы JSON:

curl -s "https://my.atlassian.com/download/feeds/current/confluence.json" | grep -Po '(?< = "version":")[^"]*'  | head -1
6.11.0

Подробности

Посмотрите на этот URL, возвращающий JSON с версией продукта: https://my.atlassian.com/download/feeds/current/confluence.json

Вот копия исходного кода JSON на момент написания:

downloads([{"description":"6.11.0 - Linux Installer (64 bit)","zipUrl":"https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-6.11.0-x64.bin","tarUrl":null,"md5":"5ce76e5763b97b93db21ba447b5fb4f0","size":"564.1 MB","released":"12-Aug-2018","type":"Binary","platform":"Unix","version":"6.11.0","releaseNotes":"https://confluence.atlassian.com/display/DOC/Confluence+6.11+Release+Notes","upgradeNotes":"https://confluence.atlassian.com/display/DOC/Confluence+6.11+Upgrade+Notes"},{"description":"6.11.0 - Windows Installer (64 bit)","zipUrl":"https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-6.11.0-x64.exe","tarUrl":null,"md5":"71c6f1275cc4ed6089871e5a7fd1f09b","size":"564.4 MB","released":"12-Aug-2018","type":"Binary","platform":"Windows","version":"6.11.0","releaseNotes":"https://confluence.atlassian.com/display/DOC/Confluence+6.11+Release+Notes","upgradeNotes":"https://confluence.atlassian.com/display/DOC/Confluence+6.11+Upgrade+Notes"},{"description":"6.11.0 - Standalone (TAR.GZ Archive)","zipUrl":"https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-6.11.0.tar.gz","tarUrl":null,"md5":"4c245b2b1dcc18ec9aff483c708f937e","size":"510.4 MB","released":"12-Aug-2018","type":"Binary","platform":"Unix, Mac OS X","version":"6.11.0","releaseNotes":"https://confluence.atlassian.com/display/DOC/Confluence+6.11+Release+Notes","upgradeNotes":"https://confluence.atlassian.com/display/DOC/Confluence+6.11+Upgrade+Notes"},{"description":"6.11.0 - Standalone (ZIP Archive)","zipUrl":"https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-6.11.0.zip","tarUrl":null,"md5":"f6d08f93840b92a2fbf9ac0005f249fb","size":"512.4 MB","released":"12-Aug-2018","type":"Binary","platform":"Windows","version":"6.11.0","releaseNotes":"https://confluence.atlassian.com/display/DOC/Confluence+6.11+Release+Notes","upgradeNotes":"https://confluence.atlassian.com/display/DOC/Confluence+6.11+Upgrade+Notes"}])

Здесь вы можете найти версию:

Это был быстрый поиск, вам лучше проверить, действительно ли слияние предоставляет REST api или какой-либо другой способ извлечь их информацию

el-teedee 07.09.2018 13:13

Это очень хороший подход. Дай мне попытаться получить 'версию: *'

cr1zz 07.09.2018 13:13

Хорошо, правильная строка: "curl -s my.atlassian.com/download/feeds/current/confluence.json | grep -Po '(? < = " Version ":") [^ "] *' | head -1" Вы можете добавить это к своему ответу, если хотите

cr1zz 07.09.2018 13:20

Другие вопросы по теме