''' Created on Oct 24, 2021 @author: terry ''' import os, random import yaml import lunagen.addon class Affiliates(lunagen.addon.LunaGenAddOn): """ Affiliates advertising bar. """ name = 'affiliates' desc = """\ Randomly selects affiliate link ads from a list and sets them to display on a scrolling bar on the page. """ file = __file__ @staticmethod def load(site): if site.verbose: print("Loading affiliates data.") try: with open(os.path.join(site.datadir, 'affiliates.yaml')) as aff_file: affiliates = yaml.safe_load(aff_file) stylesheets = site.sitedata['stylesheets'] site.sitedata.update(affiliates) site.sitedata['stylesheets'] = site._collect_stylesheets(affiliates) site.sitedata['affiliates'] = random.sample( affiliates['affiliates'], min( int(affiliates['affiliates_at_once']), len(affiliates['affiliates']))) # Generates a single banner default: site.sitedata['banners'] = iter(['affiliates_banner.j2']) site._copy_skeleton(os.path.join(os.path.dirname(__file__), 'skeleton')) except FileNotFoundError: print("No affiliates.yaml file, so affiliates list is empty.") site.sitedata['affiliates'] = []