Addes last changelog parser
							parent
							
								
									9ba81d4f83
								
							
						
					
					
						commit
						d996807c4e
					
				| 
						 | 
				
			
			@ -65,6 +65,11 @@ class GameInfo {
 | 
			
		|||
     * @type Boolean
 | 
			
		||||
     */
 | 
			
		||||
    this.isMod = false;
 | 
			
		||||
    /**
 | 
			
		||||
     * Changelog for the last version.
 | 
			
		||||
     * @type String
 | 
			
		||||
     */
 | 
			
		||||
    this.changelog = null;
 | 
			
		||||
    /**
 | 
			
		||||
     * Directory containing the local copy of the game
 | 
			
		||||
     * @type String
 | 
			
		||||
| 
						 | 
				
			
			@ -96,6 +101,7 @@ class GameInfo {
 | 
			
		|||
      lastUpdate: this.lastUpdate,
 | 
			
		||||
      lastPlayed: this.lastPlayed,
 | 
			
		||||
      isMod: this.isMod,
 | 
			
		||||
      changelog: this.changelog,
 | 
			
		||||
      gameDir: this.gameDir,
 | 
			
		||||
      downloadInfo: this.downloadInfo,
 | 
			
		||||
    };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,4 +28,5 @@ module.exports = Object.freeze({
 | 
			
		|||
  DOWNLOAD_LINKS_CONTAINER: 'span[style="font-size: 18px"]',
 | 
			
		||||
  SEARCH_THREADS_RESULTS_BODY: "div.contentRow-main",
 | 
			
		||||
  SEARCH_THREADS_MEMBERSHIP: "li > a:not(.username)",
 | 
			
		||||
  THREAD_LAST_CHANGELOG: "div.bbCodeBlock-content > div:first-of-type",
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,6 +46,7 @@ module.exports.getGameInfo = async function (browser, url) {
 | 
			
		|||
  let structuredText = await getMainPostStructuredText(page);
 | 
			
		||||
  let overview = getOverview(structuredText, info.isMod);
 | 
			
		||||
  let parsedInfos = parseConversationPage(structuredText);
 | 
			
		||||
  let changelog = getLastChangelog(page);
 | 
			
		||||
 | 
			
		||||
  // Fill in the GameInfo element with the information obtained
 | 
			
		||||
  info.name = await title;
 | 
			
		||||
| 
						 | 
				
			
			@ -280,6 +281,26 @@ async function parsePrefixes(page, info) {
 | 
			
		|||
  return info;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @private
 | 
			
		||||
 * Get the last changelog available for the game.
 | 
			
		||||
 * @param {puppeteer.Page} page Page containing the changelog
 | 
			
		||||
 * @returns {String} Changelog for the last version
 | 
			
		||||
 */
 | 
			
		||||
async function getLastChangelog(page) {
 | 
			
		||||
  // Gets the first post, where are listed all the game's informations
 | 
			
		||||
  let post = (await page.$$(selectors.THREAD_POSTS))[0];
 | 
			
		||||
  
 | 
			
		||||
  let spoiler = await post.$(selectors.THREAD_LAST_CHANGELOG);
 | 
			
		||||
  let changelogHTML = await page.evaluate(
 | 
			
		||||
    /* istanbul ignore next */
 | 
			
		||||
    (e) => e.innerText,
 | 
			
		||||
    spoiler
 | 
			
		||||
  );
 | 
			
		||||
  let parsedText = HTMLParser.parse(changelogHTML).structuredText;
 | 
			
		||||
  return parsedText;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @private
 | 
			
		||||
 * Get game download links for different platforms.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,6 +8,7 @@ const shared = require("./shared.js");
 | 
			
		|||
const constURLs = require("./constants/urls.js");
 | 
			
		||||
const selectors = require("./constants/css-selectors.js");
 | 
			
		||||
const { preparePage } = require("./puppeteer-helper.js");
 | 
			
		||||
const { isF95URL } = require("./urls-helper.js");
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @protected
 | 
			
		||||
| 
						 | 
				
			
			@ -116,6 +117,10 @@ async function getThreadURL(page, handle) {
 | 
			
		|||
    (e) => e.querySelector("a").href,
 | 
			
		||||
    handle
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  // Some game already have a full URL
 | 
			
		||||
  if (isF95URL(relativeURLThread)) return relativeURLThread;
 | 
			
		||||
 | 
			
		||||
  let urlThread = new URL(relativeURLThread, constURLs.F95_BASE_URL).toString();
 | 
			
		||||
  return urlThread;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ async function main() {
 | 
			
		|||
 | 
			
		||||
  if (loginResult.success) {
 | 
			
		||||
    await loadF95BaseData();
 | 
			
		||||
    let gameData = await getGameData("brothel king", false);
 | 
			
		||||
    let gameData = await getGameData("queen's brothel", false);
 | 
			
		||||
    console.log(gameData);
 | 
			
		||||
 | 
			
		||||
    // let userData = await getUserData();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue