Source code for flexget.plugins.input.pogcal
from loguru import logger
from flexget import plugin
from flexget.entry import Entry
from flexget.event import event
from flexget.utils import requests
from flexget.utils.soup import get_soup
logger = logger.bind(name='pogcal')
[docs]
class InputPogDesign:
schema = {
'type': 'object',
'properties': {'username': {'type': 'string'}, 'password': {'type': 'string'}},
'required': ['username', 'password'],
'additionalProperties': False,
}
name_map = {
'The Tonight Show [Leno]': 'The Tonight Show With Jay Leno',
'Late Show [Letterman]': 'David Letterman',
}
[docs]
def on_task_input(self, task, config):
session = requests.Session()
data = {
'username': config['username'],
'password': config['password'],
'sub_login': 'Account Login',
}
try:
r = session.post('https://www.pogdesign.co.uk/cat/login', data=data)
if 'Login to Your Account' in r.text:
raise plugin.PluginError('Invalid username/password for pogdesign.')
page = session.get('https://www.pogdesign.co.uk/cat/show-select')
except requests.RequestException as e:
raise plugin.PluginError(f'Error retrieving source: {e}')
soup = get_soup(page.text)
entries = []
for row in soup.find_all('li', {'class': 'selectgrp checked'}):
# Get name
t = row.find('strong')
# Remove <span> tags
spantags = t.find_all('span')
for s in spantags:
s.extract()
t = row.text
# remove newlines and whitespace
t = t.replace('\n', '').strip()
if t.endswith('[The]'):
t = 'The ' + t[:-6]
# Make certain names friendlier
if t in self.name_map:
t = self.name_map[t]
e = Entry()
e['title'] = t
e['url'] = 'https://www.pogdesign.co.uk/{}'.format(
row.find_next('a')['href'].lstrip('/')
)
entries.append(e)
return entries
[docs]
@event('plugin.register')
def register_plugin():
plugin.register(InputPogDesign, 'pogcal', api_ver=2)