Applescript | Извлечение наибольшего целого числа и создание чисел от 0 до наибольшего целого - PullRequest
0 голосов
/ 02 мая 2018

У меня есть скрипт, возвращающий следующие результаты:

https://XY.com/shop/General-Mad-Dog-Mattis-For-PrN

https://XY.com/search?q=mad%20dog&p=29

https://XY.com/search?q=mad%20dog&p=26

Теперь мне нужно найти самое большое целое число (в данном случае & p = 29) и создать новые строки от https://XY.com/search?q=mad%20dog&p=0 до самого высокого найденного целого числа в этом случае https://XY.com/search?q=mad%20dog&p=29

Пока мне удалось извлечь необходимые URL-адреса с помощью следующего кода:

set AllUrls to {"https://XY.com/search?q=mad%20dog&p=26", "https://XY.com/search?q=mad%20dog&p=29", "https://XY.com/shop/General-Mad-Dog-Mattis-For-PrN"}

-- FILTER PAGING URLS
set PagingFilter to "&p="
set PagingUrls to {}
repeat with i from 1 to length of AllUrls
    if item i of AllUrls contains PagingFilter then

        set end of PagingUrls to item i of AllUrls
    end if
end repeat
PagingUrls -- returns {"https://XY.com/search?q=mad%20dog&p=26", "https://XY.com/search?q=mad%20dog&p=29"}

И небольшой скрипт для извлечения последних 2 цифр из URL:

set alphabet to "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
set myURLs to {"https://XY.com/search?q=mad%20dog&p=26", "https://XY.com/search?q=mad%20dog&p=29"}
set the text item delimiters of AppleScript to ¬
    {space} & characters of the alphabet & {".", "_"}
set a to text items of myURLs as text

get last word of a --> returns "21"


set numlist to {}
repeat with i from 1 to count of words in a

    set this_item to word i of a
    try
        set this_item to this_item as number
        set the end of numlist to this_item

    end try

end repeat
numlist -- returns {26, 29}

1 Ответ

0 голосов
/ 02 мая 2018

Это другой подход.

Разделяет URL-адреса с text item delimiters по разделителю &p=. Если разделитель существует, получите целое число (правая часть разделителя) и сохраните его как maxValue, если текущее значение выше, чем предыдущее значение.

Затем используйте цикл для создания списка URL страниц

set AllUrls to {"https://XY.com/search?q=mad%20dog&p=26", "https://XY.com/search?q=mad%20dog&p=29", "https://XY.com/shop/General-Mad-Dog-Mattis-For-PrN"}

set maxValue to 0
set baseURL to ""
set TID to text item delimiters
set text item delimiters to "&p="
repeat with anURL in AllUrls
    set textItems to text items of anURL
    if (count textItems) is 2 then
        set currentValue to item 2 of textItems as integer
        if currentValue > maxValue then set maxValue to currentValue
        set baseURL to item 1 of textItems & "&p="
    end if
end repeat
set text item delimiters to TID
set pageURLs to {}
repeat with i from 0 to maxValue
    set end of pageURLs to baseURL & i
end repeat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...