1 (изменено: Gh0sTG0, 2022-11-10 23:41:17)

Тема: AHK: Возможно ли узнать выбранную папку закладки в chrome?

Вечер добрый.
Собственно, сабж.
Для примера прикладываю скриншот.
При добавлении закладки в хроме открывается миниокошко, в котором можно ввести название закладки и выбрать папку для сохранения (зеленая стрелка).
Возможно ли как то подцепиться и это название папки как то вытащить?
И получить в код строку, с примера, с "gJ"?
Или только скриншотить название нужной папки и делать какой-нибудь imagesearch?

PS Или как правильно запарсить файл default\bookmarks, чтобы добыть из него к какой папке принадлежит ссылка?

Post's attachments

2022-11-10_22-31-07.png
2022-11-10_22-31-07.png 8.23 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

2

Re: AHK: Возможно ли узнать выбранную папку закладки в chrome?

У меня файл "Bookmarks" лежит в AppData\Local\Google\Chrome\User Data\Default. Наверное можно запарсить.

3 (изменено: Gh0sTG0, 2022-11-11 00:56:45)

Re: AHK: Возможно ли узнать выбранную папку закладки в chrome?

ypppu
Я его уже нашел. Точнее даже не так, я уже через него проверяю есть ли там закладка. Мне как то тут же посоветовали. (спасибо тов. Malcev'у)
Но у меня не хватает мозгов понять как его правильно спарсить... Там типа в двух разных местах пишутся папка и закладка, и как пройти от юрла закладки куда то сильно вверх до названия папки...
Ну, или все же можно как то подцепиться к элементу gui и вынуть его текст?

PS а можно просто пересоздавать закладку, предварительно выбрав нужную папку, да. Метод, конечно, тот еще, но как костыль сойдет.

4

Re: AHK: Возможно ли узнать выбранную папку закладки в chrome?

Gh0sTG0 пишет:

Ну, или все же можно как то подцепиться к элементу gui и вынуть его текст?

Через iaccessible.

5

Re: AHK: Возможно ли узнать выбранную папку закладки в chrome?

Можно и распарсить, у меня так вышло:

#NoEnv
SetBatchLines, -1

filePath := A_AppData . "\..\Local\Google\Chrome\User Data\Default\Bookmarks"
url := "https://forum.script-coding.com/"
FileRead, json, % "*P65001 " . filePath
obj := JsonToAHK(json)
MsgBox, % FindUrl(obj, url)

FindUrl(obj, url, folderPath := "") {
   if (obj.type = "url" && obj.url = url)
      Return folderPath
   if (obj.type = "folder")
      folderPath .= (folderPath = "" ? "" : "\") . obj.name
   for k, v in obj {
      if IsObject(v) && p := FindUrl(v, url, folderPath)
         Return p
   }
}

JsonToAHK(json, rec := false) {
   static doc := ComObjCreate("htmlfile")
         , __ := doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
         , JS := doc.parentWindow
   if !rec
      obj := %A_ThisFunc%(JS.JSON.parse(json), true)
   else if !IsObject(json)
      obj := json
   else if JS.Object.prototype.toString.call(json) == "[object Array]" {
      obj := []
      Loop % json.length
         obj.Push( %A_ThisFunc%(json[A_Index - 1], true) )
   }
   else {
      obj := {}
      keys := JS.Object.keys(json)
      Loop % keys.length {
         k := keys[A_Index - 1]
         obj[k] := %A_ThisFunc%(json[k], true)
      }
   }
   Return obj
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6 (изменено: Gh0sTG0, 2022-11-11 12:32:17)

Re: AHK: Возможно ли узнать выбранную папку закладки в chrome?

teadrinker
Спасибо!

7

Re: AHK: Возможно ли узнать выбранную папку закладки в chrome?

И вам спасибо, что не забываете ставить точки, а если забываете, то быстро исправляете.

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

8

Re: AHK: Возможно ли узнать выбранную папку закладки в chrome?

teadrinker
Один маленький вопрос: я не вижу тут проверки на то, что юрл есть в файле? Или оно как то по хитрому обработается?
Это типа как то так?


result := FindUrl(obj, url)
if (result)
	MsgBox, %result%
else
	MsgBox, Насяльника! Усе пропала! Адреса пропала!

FindUrl(obj, url, folderPath := "") {
	if (obj.type = "url" && obj.url = url)
		Return folderPath
	else if (obj.type = "folder")
	{
		folderPath .= (folderPath = "" ? "" : "\") . obj.name
		for k, v in obj {
			if IsObject(v) && p := FindUrl(v, url, folderPath)
				Return p
		}
	} else {
   		Return False
	}
}

------------------------------------------------------------
Вот сейчас читаю код, и кажется я это зря с return false нагородил, и оно и так было бы False при отсутствии return'а?

9

Re: AHK: Возможно ли узнать выбранную папку закладки в chrome?

Gh0sTG0 пишет:

не вижу тут проверки на то, что юрл есть в файле?

Можно добавить такую проверку после FileRead.

Gh0sTG0 пишет:

я это зря с return false нагородил, и оно и так было бы False при отсутствии return'а?

Так и есть.

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