Еще раз хочу отметить, что реализация парсинга времени с HowLongToBeat позаимствована из подобной таблицы за авторством @splinefx (https://dtf.ru/games/296385-a-vy-vedete-tetrad-proydennyh-igr?comment=8375763), так что в первую очередь все благодарности за этот функционал шлите ему. Я лишь его немного доработал, добавив через костыль что-то типо кэширования.
В его варианте меня не устраивало, что полученное в HowLongToBeat время не кэшируется и запрашивается по новой для ВСЕЙ библиотеки каждый раз при добавлении новой игры в список, а также каждые N-часов. Это постоянно приводило к тому, что меня банально банили на HLTB за большое количество запросов. Я добавил скрипт, который отслеживает изменения столбцов с названием игры и типом прохождения, и копирует данные этих столбов, и столбца времени, в другие три скрытых столбца, расположенных по соседству (M, N, O). Формула в ячейке времени сравнивает эти данные и запускает функцию getTimeToBeat только при условии, если данные расходятся. Таким образом, теперь при создании новой строки, а также и при открытии таблицы спустя N-времени, данные по новой запрашиваться не будут.
Чел, рекомендую подумать насчёт того, чтобы эту всю инфу написать в прогу а не табличку и продавать за символические 10 рублей в стиме, прикинь как удобно было бы
Хороший пост) Я собирался опубликовать что-то подобное, но не находил время. А ты тут даже исправил мои потуги в код)
По сути, у меня там есть кэширование, но со стороны самого гуглоскрипта, чтобы не превысить лимит запросов. Так что да, при перемещении строк (например, во время добавления новой записи куда-нибудь в середину) происходит повторный запрос для того, что переместилось (но данные берутся из кэша, а не запрашиваются заново с HLTB, если только не превышен лимит по времени — тогда данные заново запрашиваются и парсятся, это для того, чтобы они были актуальными).
Так как HowLongToBeat забанили запросы с гугловским юзерагентом, а поменять юзерагент в гугл таблицах нельзя (спасибо splinefx за наводку), то теперь таблица парсит данные через "прокси" shouldiplaythis.com
Если вы использовали таблицу до 10 мая 2022, то чтобы починить парсинг с HLTB в своей таблице, вам необходимо открыть таблицу из поста и пройти по следующему пути: Расширения -> Apps Script -> importHLTB.gs
Открывшийся код скопировать себе в таблицу по тому же пути, и нажать сохранить.
Из минусов — не различает игры с одинаковым названием, но разным годом, например, Resident Evil 2 (2019) и Resident Evil 2 (1998).
Автор фикса — Пеша Отдельная благодарность Евгению Лисицыну
Еще раз хочу отметить, что реализация парсинга времени с HowLongToBeat позаимствована из подобной таблицы за авторством @splinefx (https://dtf.ru/games/296385-a-vy-vedete-tetrad-proydennyh-igr?comment=8375763), так что в первую очередь все благодарности за этот функционал шлите ему. Я лишь его немного доработал, добавив через костыль что-то типо кэширования.
В его варианте меня не устраивало, что полученное в HowLongToBeat время не кэшируется и запрашивается по новой для ВСЕЙ библиотеки каждый раз при добавлении новой игры в список, а также каждые N-часов. Это постоянно приводило к тому, что меня банально банили на HLTB за большое количество запросов. Я добавил скрипт, который отслеживает изменения столбцов с названием игры и типом прохождения, и копирует данные этих столбов, и столбца времени, в другие три скрытых столбца, расположенных по соседству (M, N, O). Формула в ячейке времени сравнивает эти данные и запускает функцию getTimeToBeat только при условии, если данные расходятся. Таким образом, теперь при создании новой строки, а также и при открытии таблицы спустя N-времени, данные по новой запрашиваться не будут.
Комментарий недоступен
Чел, рекомендую подумать насчёт того, чтобы эту всю инфу написать в прогу а не табличку и продавать за символические 10 рублей в стиме, прикинь как удобно было бы
Хороший пост) Я собирался опубликовать что-то подобное, но не находил время. А ты тут даже исправил мои потуги в код)
По сути, у меня там есть кэширование, но со стороны самого гуглоскрипта, чтобы не превысить лимит запросов. Так что да, при перемещении строк (например, во время добавления новой записи куда-нибудь в середину) происходит повторный запрос для того, что переместилось (но данные берутся из кэша, а не запрашиваются заново с HLTB, если только не превышен лимит по времени — тогда данные заново запрашиваются и парсятся, это для того, чтобы они были актуальными).
Фикс парсинга HLTB
Так как HowLongToBeat забанили запросы с гугловским юзерагентом, а поменять юзерагент в гугл таблицах нельзя (спасибо splinefx за наводку), то теперь таблица парсит данные через "прокси" shouldiplaythis.com
Если вы использовали таблицу до 10 мая 2022, то чтобы починить парсинг с HLTB в своей таблице, вам необходимо открыть таблицу из поста и пройти по следующему пути: Расширения -> Apps Script -> importHLTB.gs
Открывшийся код скопировать себе в таблицу по тому же пути, и нажать сохранить.
Из минусов — не различает игры с одинаковым названием, но разным годом, например, Resident Evil 2 (2019) и Resident Evil 2 (1998).
Автор фикса — Пеша
Отдельная благодарность Евгению Лисицыну
Просто скачай гог лол. Там даже с пиратки время считает