It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
avatar
Dawnreader:
avatar
igrok:
Господа, спасибо за отклик, я ценю ваше желание помочь. Но, если не трудно - объясните не слишком сведущему во всех подобных делах, пожалуйста, как мне получить информацию в удобоваримом виде? Интересует именно список ВСЕХ игр с датой приобретения (и стоимостью покупки - опционально). В JSON потыкался без толку.
avatar
DremPSB: Господа, спасибо за отклик, я ценю ваше желание помочь. Но, если не трудно - объясните не слишком сведущему во всех подобных делах, пожалуйста, как мне получить информацию в удобоваримом виде? Интересует именно список ВСЕХ игр с датой приобретения (и стоимостью покупки - опционально). В JSON потыкался без толку.
Открыть консоль браузера(в зависимости от браузера открывается с помощью F12, Ctrl+Shift+J (Command+Option+J), Ctrl+Shift+K (Command+Option+K) и вставить следующий код и нажать Enter

[spoiler]

function saveToFile(filename, text){
var link = document.createElement("a");
link.setAttribute("target","_blank");
if (Blob !== undefined) {
const blob = new Blob([text], {type: "text/plain"});
link.setAttribute("href", URL.createObjectURL(blob));
} else {
link.setAttribute("href","data:text/plain," + encodeURIComponent(text));
}
link.setAttribute("download", filename);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
async function getPurchases() {
const url = 'https://www.gog.com/account/settings/orders/data?canceled=1&completed=1&in_progress=1&not_redeemed=1&pending=1&redeemed=1&page=';
let page = 1;
let totalPages = 1;
const purchaseList = [];
async function getPage(page) {
return fetch(`${url}${page}`, {
method: 'GET',
credentials: 'same-origin',
cache: 'no-cache',
headers: {
'Content-Type': 'application/json'
}
})
.then(response =>
{
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const contentType = response.headers.get('content-type');
if (!contentType || !contentType.includes('application/json')) {
throw new TypeError("Not JSON!");
}
return response.json()
})
.then(data => {
if (data && data.totalPages) {
totalPages = data.totalPages;
if (data.orders) {
data.orders.forEach(el => {
const orderTime = new Date(el.date * 1000).toLocaleDateString();
el.products.forEach(item => {
purchaseList.push({ date: orderTime, title: item.title, price: `${item.price.amount} ${item.price.symbol}` });
});
});
}
}
})
.catch(error => {
console.error('Error:', error);
});
};
await getPage(page++);
console.info(`Total pages: ${totalPages}.`);
console.info('Processing...');
while(page <= totalPages) {
console.info(`Getting page ${page}...`);
await getPage(page++);
}
let list = '';
purchaseList.forEach((item) => {
list += `${item.title} | ${item.price} | ${item.date}\n`;
});
saveToFile('purchases.txt', list);
console.info('Processing finished.');
};
await getPurchases();

[/spoiler]
Post edited September 28, 2020 by Dawnreader
avatar
DremPSB: Господа, спасибо за отклик, я ценю ваше желание помочь. Но, если не трудно - объясните не слишком сведущему во всех подобных делах, пожалуйста, как мне получить информацию в удобоваримом виде?
Я хоть и не шибко сведующий, но в таком деле нужно писать коротенький скрипт для парсинга JSON с использованием библиотек знакомого языка программирования, чтобы выжать нужную информацию в текстовом или табличном виде.

Проще всего это делать на python или Perl (ну и в хозяйстве завсегда пригодится для всех подобных задач, так что весьма полезный навык). Ну или javascript, как Dawnreader.
avatar
Dawnreader:
Открыл консоль в Фоксе, вставил в консоль код, нажал Enter, получил сообщение насчет куки gog_lc (неправильный атрибут "SameSite") и... собственно, дальше то что?
avatar
DremPSB: Открыл консоль в Фоксе, вставил в консоль код, нажал Enter, получил сообщение насчет куки gog_lc (неправильный атрибут "SameSite") и... собственно, дальше то что?
Не знаю даже, что сказать. У меня просто всё работает(с). Может перезагрузить страницу, убедиться что залогинен и попробовать ещё раз запустить? Я могу конечно накидать скрипт на чём-нибудь другом, просто это более замороченный вариант, вытащить всё прямо в браузере ничего не устанавливая на мой взгляд идеально для одноразового применения.
avatar
DremPSB: Открыл консоль в Фоксе, вставил в консоль код, нажал Enter, получил сообщение насчет куки gog_lc (неправильный атрибут "SameSite") и... собственно, дальше то что?
avatar
Dawnreader: Не знаю даже, что сказать. У меня просто всё работает(с).
Так а какой должен быть результат, как у вас это работает, уточните: данные копируются в буффер и их надо просто вставить (пробовал, там пусто), открывается новая вкладка в браузере с данными в человеческом виде, открывается txt/xml/etc-файл или что-то еще? Поскольку у меня просто выполняется ваш скрипт и все, вроде как. Логин есть, браузер перезапускал и пробовал снова. Разве что в другом не пробовал.
avatar
DremPSB: Так а какой должен быть результат, как у вас это работает, уточните: данные копируются в буффер и их надо просто вставить (пробовал, там пусто), открывается новая вкладка в браузере с данными в человеческом виде, открывается txt/xml/etc-файл или что-то еще? Поскольку у меня просто выполняется ваш скрипт и все, вроде как. Логин есть, браузер перезапускал и пробовал снова. Разве что в другом не пробовал.
Просто там же в консоли должно было вывести все покупки. Я переделал скрипт, добавил сохранение в файл. Попробуйте ещё раз.
avatar
Dawnreader: Я переделал скрипт, добавил сохранение в файл. Попробуйте ещё раз.
Открывается пустой файл.
avatar
DremPSB: Открывается пустой файл.
Странно. Подкрутил немного скрипт, пробуйте ещё раз.


Товарищи, а кто-то ещё может запустить скрипт. У кого-то ещё оно работает? (=
Post edited September 28, 2020 by Dawnreader
avatar
Dawnreader: Товарищи, а кто-то ещё может запустить скрипт. У кого-то ещё оно работает? (=
Работает. Но выдаёт только 2 позиции из 300+. Это я про старый скрип. Новый пока не пробовал - не дома.
avatar
DremPSB: Открывается пустой файл.
avatar
Dawnreader: Странно. Подкрутил немного скрипт, пробуйте ещё раз.
Не знаю, в чем беда - файл открывает вновь пустой.

Попробовал в Хроме - та же история.

Сейчас попробую в Опере, что ли?

UPD: Опера ничего не дала.
Post edited September 28, 2020 by DremPSB
Да, в фаерфокс тоже пустой блокнот. Никаких ошибок.
Total pages: 1.
Processing...
Processing finished.

Не разбираюсь в этих дела. Если бы можно было выполнить эту функцию по шагам в отладчике. Но не понял как.
avatar
IpseSan: .
avatar
DremPSB: .
avatar
AndreyB: .
Печаль-тоска однако. Спасибо. Интересно конечно почему у меня работает без проблем. Набросаю тогда вечерком скрипт на python вероятно, надеюсь что авторизация местная не слишком замороченная.
avatar
Dawnreader: Печаль-тоска однако. Спасибо. Интересно конечно почему у меня работает без проблем. Набросаю тогда вечерком скрипт на python вероятно, надеюсь что авторизация местная не слишком замороченная.
В gogrepo можно посмотреть, как оно на питоне авторизуется, если что. Но оно там логин и пароль открытыми параметрами принимает. И оно там как-то на кукиши завязано.
Хм, ну, вот и всё, пока что сбор машины закончен. Дальше уже только улучшение, но до этого пока месяцы и месяцы...

Что я имею сказать по итогу: я понимаю, курс рубля, хочется кушать и это вот всё, но когда OEM версия (просто сам "камень" в обломке пластмассы, чтобы ножки не погнулись) процессора во всех российских магазинах, которые я проверял (в случае московских - с учётом цены доставки/билетов туда и обратно - что дешевле) стоит больше, чем BOX (упаковка с (фиговеньким) кулером, собственно процессором в защитном пластиковом футляре и наклейкой на корпус) комплектация, заказанная в Германии с учётом доставки... кажется, кто-то теряет берега. Печально...

Сейчас пытаюсь "причесать" под свой вкус Win10, собственно, на работе уже почти с год на ней сижу, но там она "одомашненная", в домене, каждый чих - согласно установленной политике, обновления по разрешению и после тестирования... в общем, не совсем то же самое, что идёт "из коробки". Пока не без шероховатостей, но, вспоминая переход на XP и 7ку, в целом недурно.