101

Re: AHK: Разбор ответа VK API или JSON

Об этом и разговор. Подразумевается, что раз программист разрабатывает программу, то не в Виндовом блокноте. Но Ваше:

DD пишет:

... несколько раз за последние два дня уже безуспешно занимался комбинаторикой

Натолкнуло именно на отсутствие нужного инструмента и понимания принципов исследования чужого кода. Хотя последнее, как раз таки чуть ли не ядро, в Вашей системе познания. Всё, что я узнавал когда-либо в программировании, основано на чужих примерах и, думаю, так у всех, или в подавляющем большинстве.

DD пишет:

... а там последних ключей оказалось достаточно). Вы бы хоть записку оставили).

Так бы я затёр все бонусы получаемые в результате Вашего "Brainstorm", а так, Вы это наверняка теперь запомните.

DD пишет:

касаемо edge_liked_by/edge_threaded_comments

Обратите внимание, что вложенные комментарии имеют схожую структуру, за исключением имён, отвечающих за наличие собственных вложенных "edges". В примерах выше, для обработки их содержимого функция вызывала сама себя, но Вы может так же описать дополнительную логику, проверяя:

edge_threaded_comments :=  v.node.edge_threaded_comments.count

Которое всегда содержит количество вложенных комментариев.

102

Re: AHK: Разбор ответа VK API или JSON

Я правильно понял, что если прописать здесь нужную иерархию, предварительно значения будут извлекаться? —

edges :=                   v.node.edge_threaded_comments.edges

103

Re: AHK: Разбор ответа VK API или JSON

Что Вас останавливает перед тем, чтобы взять и попробовать?
Ничего ведь не сломается, даже если результат не подтвердит ожидания.
Можно построить дополнительную обработку вложенных "edges", на основании их количества, например, так, получить все "id"

comments_count := v.node.edge_threaded_comments.count
Loop,% comments_count
	MsgBox % v.node.edge_threaded_comments.edges[ A_Index ].node.id

Или без участия этого счётчика:

For i, comment in v.node.edge_threaded_comments.edges
	MsgBox % comment.node.id

Вместо "id" может быть любое иное имя, которое Вам нужно, или путь, как, например:

For i, comment in v.node.edge_threaded_comments.edges
	MsgBox % comment.node.owner.username
+ DD

104 (изменено: DD, 2019-02-20 16:27:13)

Re: AHK: Разбор ответа VK API или JSON

Спасибо, алилуйя) —

edges := JSON.Parse(ResponseText).data.shortcode_media.edge_media_to_parent_comment.edges
MsgBox % ListValues(edges)
ListValues(edges) {
   list := ""
   For k, NDS1 in edges {
      text :=                    NDS1.node.text
      end_cursor :=              NDS1.node.edge_threaded_comments.page_info.end_cursor
      id :=                      NDS1.node.id
      created_at :=              NDS1.node.created_at
      username :=                NDS1.node.owner.username
      profile_pic_url :=         NDS1.node.owner.profile_pic_url
      edge_threaded_comments :=  NDS1.node.edge_threaded_comments.count
      edge_liked_by :=           NDS1.node.edge_liked_by.count
      edges :=                   NDS1.node.edge_threaded_comments.edges

      list .= created_at " | " edge_liked_by " | " edge_threaded_comments
       . " | " end_cursor " | " id " | " profile_pic_url " | " text " | " username "`n"

      For i, NDS2 in NDS1.node.edge_threaded_comments.edges {
         text :=                    NDS2.node.text
         end_cursor :=              NDS2.node.edge_threaded_comments.page_info.end_cursor
         id :=                      NDS2.node.id
         created_at :=              NDS2.node.created_at
         username :=                NDS2.node.owner.username
         profile_pic_url :=         NDS2.node.owner.profile_pic_url
         edge_threaded_comments :=  NDS2.node.edge_threaded_comments.count
         edge_liked_by :=           NDS2.node.edge_liked_by.count

         list .= "`t" created_at " | " edge_liked_by " | " edge_threaded_comments
          . " | " end_cursor " | " id " | " profile_pic_url " | " text " | " username "`n"
      }
   } Return list
}

105

Re: AHK: Разбор ответа VK API или JSON

Мои поздравления!