1 (изменено: viviancels, 2024-08-18 13:31:07)

Тема: AHK: Затирается первое значение при копировании строк

Здравствуйте. Скрипт копирует url из списка при совпадении номеров в конце url с номерами в названии spoiler. Даже если url уже есть в теге img, он удаляется после выполнения скрипта, самый первый url приходится копировать вручную.

UPD Забыл уточнить, поиск идет по содержимому квадратных скобок спойлера. Номера могут быть разными.

Содержимое файла 123.txt:


[spoiler="[HFR001CRV] Craig Connelly - How Can I (James Dymond Remix Edit) (2017)"]
[img=right]пусто[/img]

[spoiler="[HFR001RV] Craig Connelly feat. Jessica Lawrence - How Can I (2017)"]
[img=right]пусто[/img]

[spoiler="[HFR002CRV] Craig Connelly & Sue Mclaren - Home (Will Rees Remix Edit) (2017)"]
[img=right]пусто[/img]

Содержимое списка с url covers.txt:


https://i.postimg.cc/TPB0nfbh/HFR001-CRV.jpg
https://i.postimg.cc/RhLTrtDn/HFR001RV.jpg
https://i.postimg.cc/NMT44S8D/HFR002-CRV.jpg

Содержимое скрипта AHK:


#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases
FileRead, Haystack1, covers.txt
FileRead, Haystack2, 123.txt

temp := Haystack2
Loop, parse, Haystack1, `n`r
{
    Cat := regexreplace(A_LoopField, "`am)^.*\/(.*)\.(jpg|png)$", "$1")
    pos := InStr(temp, "[spoiler=""["Cat)
    temp := RegExReplace(temp, "s)(?<=\[img=right\]).*?(?=\[/img\])", A_LoopField,, 1, pos)
}
Loop, parse, Haystack1, `n`r
{
    Cat := regexreplace(A_LoopField, "`am)^.*\/(.*)-(.*)\.(jpg|png)$", "$1$2")
    pos := InStr(temp, "[spoiler=""["Cat)
    temp := RegExReplace(temp, "s)(?<=\[img=right\]).*?(?=\[/img\])", A_LoopField,, 1, pos)
}

 file := FileOpen("123.txt", "w `n")
if !IsObject(file)
	log("Can't open " Haystack2 " for writing.")
file.Write(temp)
file.Close()

Результат должен быть таким:


[spoiler="[HFR001CRV] Craig Connelly - How Can I (James Dymond Remix Edit) (2017)"]
[img=right]https://i.postimg.cc/TPB0nfbh/HFR001-CRV.jpg[/img]

[spoiler="[HFR001RV] Craig Connelly feat. Jessica Lawrence - How Can I (2017)"]
[img=right]https://i.postimg.cc/RhLTrtDn/HFR001RV.jpg[/img]

[spoiler="[HFR002CRV] Craig Connelly & Sue Mclaren - Home (Will Rees Remix Edit) (2017)"]
[img=right]https://i.postimg.cc/NMT44S8D/HFR002-CRV.jpg[/img]

Но получается так:


[spoiler="[HFR001CRV] Craig Connelly - How Can I (James Dymond Remix Edit) (2017)"]
[img=right]пусто[/img]

[spoiler="[HFR001RV] Craig Connelly feat. Jessica Lawrence - How Can I (2017)"]
[img=right]https://i.postimg.cc/RhLTrtDn/HFR001RV.jpg[/img]

[spoiler="[HFR002CRV] Craig Connelly & Sue Mclaren - Home (Will Rees Remix Edit) (2017)"]
[img=right]https://i.postimg.cc/NMT44S8D/HFR002-CRV.jpg[/img]

2

Re: AHK: Затирается первое значение при копировании строк

viviancels пишет:

при совпадении номеров в конце url с номерами в названии spoiler

Но в первых двух же одинаковые номера — 001.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: viviancels, 2024-08-18 13:32:58)

Re: AHK: Затирается первое значение при копировании строк

teadrinker пишет:

Но в первых двух же одинаковые номера — 001.

Забыл уточнить, поиск идет по содержимому квадратных скобок спойлера HFR001CRV. Номера могут быть разными. Так как после залития картинок на хостинг может появится дефиз HFR001-CRV, то сделан дополнительный loop

4

Re: AHK: Затирается первое значение при копировании строк

Первая строка пустая в обоих файлах?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: viviancels, 2024-08-18 14:28:37)

Re: AHK: Затирается первое значение при копировании строк

teadrinker пишет:

Первая строка пустая в обоих файлах?

Первая и последняя строк пустые в файле с кодом оформления, куда нужно копировать url картинок:

+ открыть спойлер

https://i.postimg.cc/bYgBhbPK/2024-08-18-150305.png

+ открыть спойлер

https://i.postimg.cc/j2Mg4Vvs/2024-08-18-150321.png

В списке с url пустая последняя строка:

+ открыть спойлер

https://i.postimg.cc/VvfZtsqG/2024-08-18-150219.png

В скрипте тоже пустая последняя строка:

+ открыть спойлер

https://i.postimg.cc/CLK6L1Ld/2024-08-18-150349.png

Сейчас по-очереди я убрал все пустые строки и каждый раз пробовал, предварительно копируя первый url вручную, и каждый раз он затирается. Вот 3 файла уже без пустых строк: https://dropmefiles.com/ozQh7

6

Re: AHK: Затирается первое значение при копировании строк

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

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7 (изменено: viviancels, 2024-08-18 14:24:46)

Re: AHK: Затирается первое значение при копировании строк

teadrinker пишет:

Ссылки лучше тегом оформить

Сделал. Сейчас заметил, что если в файле со списком url (covers.txt) только одна стройка - с первым url, то он вставляется скриптом нормально. Но если в файл со списком url добавить вторую строку со вторым url и запустить скрипт, то url из первого спойлера снова удаляется. Может, как-то можно добавить условие, что когда достигается конец чтения списка url, то скрипт останавливается? Трудность в том, что не известно, первый url копируется, а потом затирается или не копируется, а просто затирается.

8

Re: AHK: Затирается первое значение при копировании строк

Ну, если я правильно понял задачу, то должно быть как-то так:

#Requires AutoHotkey v1

Haystack1 =
(
https://i.postimg.cc/TPB0nfbh/HFR001-CRV.jpg
https://i.postimg.cc/RhLTrtDn/HFR001RV.jpg
https://i.postimg.cc/NMT44S8D/HFR002-CRV.jpg
)

Haystack2 =
(
[spoiler="[HFR001CRV] Craig Connelly - How Can I (James Dymond Remix Edit) (2017)"]
[img=right]пусто[/img]

[spoiler="[HFR001RV] Craig Connelly feat. Jessica Lawrence - How Can I (2017)"]
[img=right]пусто[/img]

[spoiler="[HFR002CRV] Craig Connelly & Sue Mclaren - Home (Will Rees Remix Edit) (2017)"]
[img=right]пусто[/img]
)

output := ""
Loop parse, Haystack1, `n, `r
{
    if id := RegExReplace(A_LoopField, "s).*?([A-Z\d](?!.*/))|.*", "$1") {
        if RegExMatch(Haystack2, "m`a)^\[spoiler=""\[" . id . "].+", m)
            output .= (output ? "`n`n" : "") . m . "`n[img=right]" . A_LoopField . "[/img]"
    }
}
MsgBox % output

Будет работать независимо от пустых строк в исходных файлах. В output можете вставить пустые строки по вкусу.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9 (изменено: viviancels, 2024-08-19 19:33:42)

Re: AHK: Затирается первое значение при копировании строк

teadrinker пишет:

Ну, если я правильно понял задачу, то должно быть как-то так:

Большое спасибо.

10

Re: AHK: Затирается первое значение при копировании строк

viviancels, пожалуйста, но не забывайте про точки.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11 (изменено: viviancels, 2024-08-23 19:35:31)

Re: AHK: Затирается первое значение при копировании строк

teadrinker], Здравствуйте. Сейчас заметил, что удаляются все строчки, которые в спойлере, остаются только 2 первые строки. Правильно ли я понял: переменная m содержит первую строку spoiler?


#Requires AutoHotkey v1

Haystack1 =
(
https://i.postimg.cc/N0yYXp7N/HTE241.jpg
https://i.postimg.cc/NjCBLWT9/HTE242.jpg
https://i.postimg.cc/XJdbHqPd/HTE243.jpg
)

Haystack2 =
(
[spoiler="[HTE241] AlexMo & S.H.O.K.K. - Mama Cocha (2023)"]
[img=right]пусто[/img]
[url=https://www.deezer.com/ru/album/490959655][img]https://i.postimg.cc/6qS4Wt55/Deezer.png[/img][/url][font=sans1][size=13]
[b]Номер по каталогу[/b]: [color=darkblue][b]HTE241[/b][/color]
[b]Дата релиза[/b]: [color=#993399][b]2023-11-24[/b][/color]
[b]Продолжительность[/b]: [color=grey][b]03:14[/b][/color]
[b]Треклист[/b]:
[color=grey]01.[/color] AlexMo & S.H.O.K.K. - Mama Cocha [color=grey](03:14)[/color]
[/size][/font][spoiler="Лог проверки качества"]
[pre]
[/pre]
[/spoiler]
[spoiler="Динамический диапазон"]
[pre]
[/pre]
[/spoiler]
[/spoiler]
[spoiler="[HTE242] NEOS - Gossip Mongers (2023)"]
[img=right]пусто[/img]
[url=https://www.deezer.com/ru/album/490962665][img]https://i.postimg.cc/6qS4Wt55/Deezer.png[/img][/url][font=sans1][size=13]
[b]Номер по каталогу[/b]: [color=darkblue][b]HTE242[/b][/color]
[b]Дата релиза[/b]: [color=#993399][b]2023-12-01[/b][/color]
[b]Продолжительность[/b]: [color=grey][b]03:42[/b][/color]
[b]Треклист[/b]:
[color=grey]01.[/color] NEOS - Gossip Mongers [color=grey](03:42)[/color]
[/size][/font][/size][/font][spoiler="Лог проверки качества"]
[pre]
[/pre]
[/spoiler]
[spoiler="Динамический диапазон"]
[pre]
[/pre]
[/spoiler]
[/spoiler]
[spoiler="[HTE243] Renegade System - Pump This Party (2023)"]
[img=right]пусто[/img]
[url=https://www.deezer.com/ru/album/516178102][img]https://i.postimg.cc/6qS4Wt55/Deezer.png[/img][/url][font=sans1][size=13]
[b]Номер по каталогу[/b]: [color=darkblue][b]HTE243[/b][/color]
[b]Дата релиза[/b]: [color=#993399][b]2023-12-08[/b][/color]
[b]Продолжительность[/b]: [color=grey][b]03:30[/b][/color]
[b]Треклист[/b]:
[color=grey]01.[/color] Renegade System - Pump This Party [color=grey](03:30)[/color]
[/size][/font][/size][/font][spoiler="Лог проверки качества"]
[pre]
[/pre]
[/spoiler]
[spoiler="Динамический диапазон"]
[pre]
[/pre]
[/spoiler]
[/spoiler]
)

output := ""
Loop parse, Haystack1, `n, `r
{
    if id := RegExReplace(A_LoopField, "s).*?([A-Z\d](?!.*/))|.*", "$1") {
        if RegExMatch(Haystack2, "m`a)^\[spoiler=""\[" . id . "].+", m)
            output .= (output ? "`n`n" : "") . m . "`n[img=right]" . A_LoopField . "[/img]"
    }
}
MsgBox % output

https://i.postimg.cc/jd13wGj3/2024-08-23-093835.png

*Слово "пусто" в теге img приходится писать, чтобы был виден код тега img, иначе он исчезает.

12

Re: AHK: Затирается первое значение при копировании строк

Что содержит переменная m вы можете сами посмотреть через MsgBox.

viviancels пишет:

удаляются все строчки, которые в спойлере, остаются только 2 первые строки

Код, который я привёл, соответствует тому примеру, который вы привели изначально. То, что у вас сейчас, имеет другую структуру, и непонятно, что должно быть на выходе в данном случае.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13 (изменено: viviancels, 2024-08-23 19:42:17)

Re: AHK: Затирается первое значение при копировании строк

teadrinker пишет:

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

Не подумал об этом, моя ошибка. В результате тоже копируется url и вставляется в тег img вместо слова пусто (слова "пусто" нет, оно для форума):

[spoiler="[HTE241] AlexMo & S.H.O.K.K. - Mama Cocha (2023)"]
[img=right]https://i.postimg.cc/N0yYXp7N/HTE241.jpg[/img]
[url=https://www.deezer.com/ru/album/490959655][img]https://i.postimg.cc/6qS4Wt55/Deezer.png[/img][/url][font=sans1][size=13]
[b]Номер по каталогу[/b]: [color=darkblue][b]HTE241[/b][/color]
[b]Дата релиза[/b]: [color=#993399][b]2023-11-24[/b][/color]
[b]Продолжительность[/b]: [color=grey][b]03:14[/b][/color]
[b]Треклист[/b]:
[color=grey]01.[/color] AlexMo & S.H.O.K.K. - Mama Cocha [color=grey](03:14)[/color]
[/size][/font][spoiler="Лог проверки качества"]
[pre]
[/pre]
[/spoiler]
[spoiler="Динамический диапазон"]
[pre]
[/pre]
[/spoiler]
[/spoiler]
[spoiler="[HTE242] NEOS - Gossip Mongers (2023)"]
[img=right]https://i.postimg.cc/NjCBLWT9/HTE242.jpg[/img]
[url=https://www.deezer.com/ru/album/490962665][img]https://i.postimg.cc/6qS4Wt55/Deezer.png[/img][/url][font=sans1][size=13]
[b]Номер по каталогу[/b]: [color=darkblue][b]HTE242[/b][/color]
[b]Дата релиза[/b]: [color=#993399][b]2023-12-01[/b][/color]
[b]Продолжительность[/b]: [color=grey][b]03:42[/b][/color]
[b]Треклист[/b]:
[color=grey]01.[/color] NEOS - Gossip Mongers [color=grey](03:42)[/color]
[/size][/font][/size][/font][spoiler="Лог проверки качества"]
[pre]
[/pre]
[/spoiler]
[spoiler="Динамический диапазон"]
[pre]
[/pre]
[/spoiler]
[/spoiler]
[spoiler="[HTE243] Renegade System - Pump This Party (2023)"]
[img=right]https://i.postimg.cc/XJdbHqPd/HTE243.jpg[/img]
[url=https://www.deezer.com/ru/album/516178102][img]https://i.postimg.cc/6qS4Wt55/Deezer.png[/img][/url][font=sans1][size=13]
[b]Номер по каталогу[/b]: [color=darkblue][b]HTE243[/b][/color]
[b]Дата релиза[/b]: [color=#993399][b]2023-12-08[/b][/color]
[b]Продолжительность[/b]: [color=grey][b]03:30[/b][/color]
[b]Треклист[/b]:
[color=grey]01.[/color] Renegade System - Pump This Party [color=grey](03:30)[/color]
[/size][/font][/size][/font][spoiler="Лог проверки качества"]
[pre]
[/pre]
[/spoiler]
[spoiler="Динамический диапазон"]
[pre]
[/pre]
[/spoiler]
[/spoiler]

Я добавил еще 2 спойлера в оба кода, вдруг это важно. Наверное, для текста, начиная с 3 строки "[url =ссылка]" и заканчивая последней строкой, то есть закрытием главного спойлера "[ /spoiler]", нужна переменная.

14

Re: AHK: Затирается первое значение при копировании строк

Можно так:


#Requires AutoHotkey v1

Haystack1 =
(
https://i.postimg.cc/N0yYXp7N/HTE241.jpg
https://i.postimg.cc/NjCBLWT9/HTE242.jpg
https://i.postimg.cc/XJdbHqPd/HTE243.jpg
)

Haystack2 =
(
[spoiler="[HTE241] AlexMo & S.H.O.K.K. - Mama Cocha (2023)"]
[img=right]пусто[/img]
[url=https://www.deezer.com/ru/album/490959655][img]https://i.postimg.cc/6qS4Wt55/Deezer.png[/img][/url][font=sans1][size=13]
[b]Номер по каталогу[/b]: [color=darkblue][b]HTE241[/b][/color]
[b]Дата релиза[/b]: [color=#993399][b]2023-11-24[/b][/color]
[b]Продолжительность[/b]: [color=grey][b]03:14[/b][/color]
[b]Треклист[/b]:
[color=grey]01.[/color] AlexMo & S.H.O.K.K. - Mama Cocha [color=grey](03:14)[/color]
[/size][/font]
[/spoiler]
[spoiler="[HTE242] NEOS - Gossip Mongers (2023)"]
[img=right]пусто[/img]
[url=https://www.deezer.com/ru/album/490962665][img]https://i.postimg.cc/6qS4Wt55/Deezer.png[/img][/url][font=sans1][size=13]
[b]Номер по каталогу[/b]: [color=darkblue][b]HTE242[/b][/color]
[b]Дата релиза[/b]: [color=#993399][b]2023-12-01[/b][/color]
[b]Продолжительность[/b]: [color=grey][b]03:42[/b][/color]
[b]Треклист[/b]:
[color=grey]01.[/color] NEOS - Gossip Mongers [color=grey](03:42)[/color]
[/size][/font]
[/spoiler]
[spoiler="[HTE243] Renegade System - Pump This Party (2023)"]
[img=right]пусто[/img]
[url=https://www.deezer.com/ru/album/516178102][img]https://i.postimg.cc/6qS4Wt55/Deezer.png[/img][/url][font=sans1][size=13]
[b]Номер по каталогу[/b]: [color=darkblue][b]HTE243[/b][/color]
[b]Дата релиза[/b]: [color=#993399][b]2023-12-08[/b][/color]
[b]Продолжительность[/b]: [color=grey][b]03:30[/b][/color]
[b]Треклист[/b]:
[color=grey]01.[/color] Renegade System - Pump This Party [color=grey](03:30)[/color]
[/size][/font]
[/spoiler]

)

Loop parse, Haystack1, `n, `r
{
    id := RegExReplace(A_LoopField, ".*?([A-Z\d](?!.*/))|.*", "$1")
    Haystack2 := RegExReplace(Haystack2, "\[spoiler=""\[" . id . "]\V*\R\[img=right]\K.*?(?=\[/img])", A_LoopField)
}
MsgBox % Haystack2
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder