mirror of
				https://github.com/ElvishArtisan/rivendell.git
				synced 2025-10-30 17:23:53 +01:00 
			
		
		
		
	* Renamed the 'pypad.Receiver::setCallback()' method to 'pypad.Receiver::setPadCallback()'.
		
			
				
	
	
		
			152 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!%PYTHON_BANGPATH%
 | |
| 
 | |
| # pad_test.py
 | |
| #
 | |
| # pypad regression test script for Rivendell
 | |
| #
 | |
| #  Exercise every PAD accessor method of 'pypad.Update' for each update.
 | |
| #
 | |
| #   (C) Copyright 2018 Fred Gleason <fredg@paravelsystems.com>
 | |
| #
 | |
| #   This program is free software; you can redistribute it and/or modify
 | |
| #   it under the terms of the GNU General Public License version 2 as
 | |
| #   published by the Free Software Foundation.
 | |
| #
 | |
| #   This program is distributed in the hope that it will be useful,
 | |
| #   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| #   GNU General Public License for more details.
 | |
| #
 | |
| #   You should have received a copy of the GNU General Public
 | |
| #   License along with this program; if not, write to the Free Software
 | |
| #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | |
| #
 | |
| 
 | |
| import pypad
 | |
| 
 | |
| def ProcessPad(update):
 | |
|     print
 | |
|     print('*** Log %03d Update ***********************************************' % update.machine())
 | |
|     print('** HEADER INFO **')
 | |
|     print('          dateTime(): '+update.dateTime().isoformat(' '))
 | |
|     print('          hostName(): '+update.hostName())
 | |
|     print('     shortHostName(): '+update.shortHostName())
 | |
|     print('           machine(): %d' % update.machine())
 | |
|     print( '              mode(): '+update.mode())
 | |
|     print('         onairFlag(): '+str(update.onairFlag()))
 | |
|     print
 | |
|     if update.hasLog():
 | |
|         print('** LOG INFO **')
 | |
|         print('           logName(): '+update.logName())
 | |
|         print()
 | |
|     else:
 | |
|         print('**NO LOG INFO PRESENT**')
 | |
|         print()
 | |
| 
 | |
|     if update.hasService():
 | |
|         print('** SERVICE INFO **')
 | |
|         print('       serviceName(): '+update.serviceName())
 | |
|         print('serviceDescription(): '+update.serviceDescription())
 | |
|         print('serviceProgramCode(): '+update.serviceProgramCode())
 | |
|         print()
 | |
|     else:
 | |
|         print('** NO SERVICE INFO PRESENT **')
 | |
|         print()
 | |
| 
 | |
|     if update.hasPadType(pypad.TYPE_NOW):
 | |
|         print('** NOW PLAYING INFO **')
 | |
|         try:
 | |
|             print('     startDateTime(): '+update.startDateTime(pypad.TYPE_NOW).isoformat(' '))
 | |
|         except AttributeError:
 | |
|             print('     startDateTime(): None')
 | |
|         print('        lineNumber(): '+str(update.padField(pypad.TYPE_NOW,pypad.FIELD_LINE_NUMBER))+'/'+update.resolvePadFields('%z',pypad.ESCAPE_NONE))
 | |
|         print('            lineId(): '+str(update.padField(pypad.TYPE_NOW,pypad.FIELD_LINE_ID))+'/'+update.resolvePadFields('%x',pypad.ESCAPE_NONE))
 | |
|         print('          cartType(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_CART_TYPE))
 | |
|         print('        cartNumber(): %u / ' % update.padField(pypad.TYPE_NOW,pypad.FIELD_CART_NUMBER)+update.resolvePadFields("%n",pypad.ESCAPE_NONE))
 | |
|         print('         cutNumber(): %u / ' % update.padField(pypad.TYPE_NOW,pypad.FIELD_CUT_NUMBER)+update.resolvePadFields("%j",pypad.ESCAPE_NONE))
 | |
|         print('            length(): %u / ' % update.padField(pypad.TYPE_NOW,pypad.FIELD_LENGTH)+update.resolvePadFields("%h",pypad.ESCAPE_NONE))
 | |
|         try:
 | |
|             print('              year(): %u / ' % update.padField(pypad.TYPE_NOW,pypad.FIELD_YEAR)+update.resolvePadFields("%y",pypad.ESCAPE_NONE))
 | |
|         except TypeError:
 | |
|             print('              year(): None / '+update.resolvePadFields("%Y",pypad.ESCAPE_NONE))
 | |
|         print('         groupName(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_GROUP_NAME)+' / '+update.resolvePadFields('%g',pypad.ESCAPE_NONE))
 | |
|         print('             title(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_TITLE)+' / '+update.resolvePadFields('%t',pypad.ESCAPE_NONE))
 | |
|         print('            artist(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_ARTIST)+' / '+update.resolvePadFields('%a',pypad.ESCAPE_NONE))
 | |
|         print('         publisher(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_PUBLISHER)+' / '+update.resolvePadFields('%p',pypad.ESCAPE_NONE))
 | |
|         print('          composer(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_COMPOSER)+' / '+update.resolvePadFields('%m',pypad.ESCAPE_NONE))
 | |
|         print('             album(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_ALBUM)+' / '+update.resolvePadFields('%l',pypad.ESCAPE_NONE))
 | |
|         print('             label(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_LABEL)+' / '+update.resolvePadFields('%b',pypad.ESCAPE_NONE))
 | |
|         print('            client(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_CLIENT)+' / '+update.resolvePadFields('%c',pypad.ESCAPE_NONE))
 | |
|         print('            agency(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_AGENCY)+' / '+update.resolvePadFields('%e',pypad.ESCAPE_NONE))
 | |
|         print('         conductor(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_CONDUCTOR)+' / '+update.resolvePadFields('%r',pypad.ESCAPE_NONE))
 | |
|         print('       userDefined(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_USER_DEFINED)+' / '+update.resolvePadFields('%u',pypad.ESCAPE_NONE))
 | |
|         print('            songId(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_SONG_ID)+' / '+update.resolvePadFields('%s',pypad.ESCAPE_NONE))
 | |
|         print('            outcue(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_OUTCUE)+' / '+update.resolvePadFields('%o',pypad.ESCAPE_NONE))
 | |
|         print('       description(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_DESCRIPTION)+' / '+update.resolvePadFields('%i',pypad.ESCAPE_NONE))
 | |
|         print('   externalEventId(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_EXTERNAL_EVENT_ID))
 | |
|         print('      externalData(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_EXTERNAL_DATA))
 | |
|         print('  externalAnncType(): '+update.padField(pypad.TYPE_NOW,pypad.FIELD_EXTERNAL_EVENT_ID))
 | |
|         print()
 | |
| 
 | |
|     else:
 | |
|         print('** NO NOW PLAYING INFO **')
 | |
|         print()
 | |
| 
 | |
|     if update.hasPadType(pypad.TYPE_NEXT):
 | |
|         print('** NEXT PLAYING INFO **')
 | |
|         try:
 | |
|             print('     startDateTime(): '+update.startDateTime(pypad.TYPE_NEXT).isoformat(' '))
 | |
|         except AttributeError:
 | |
|             print('     startDateTime(): None')
 | |
|         print('        lineNumber(): '+str(update.padField(pypad.TYPE_NEXT,pypad.FIELD_LINE_NUMBER))+'/'+update.resolvePadFields('%Z',pypad.ESCAPE_NONE))
 | |
|         print('            lineId(): '+str(update.padField(pypad.TYPE_NEXT,pypad.FIELD_LINE_ID))+'/'+update.resolvePadFields('%X',pypad.ESCAPE_NONE))
 | |
|         print('          cartType(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_CART_TYPE))
 | |
|         print('        cartNumber(): %u / ' % update.padField(pypad.TYPE_NEXT,pypad.FIELD_CART_NUMBER)+update.resolvePadFields("%N",pypad.ESCAPE_NONE))
 | |
|         print('         cutNumber(): %u / ' % update.padField(pypad.TYPE_NEXT,pypad.FIELD_CUT_NUMBER)+update.resolvePadFields("%J",pypad.ESCAPE_NONE))
 | |
|         print('            length(): %u / ' % update.padField(pypad.TYPE_NEXT,pypad.FIELD_LENGTH)+update.resolvePadFields("%H",pypad.ESCAPE_NONE))
 | |
|         try:
 | |
|             print('              year(): %u / ' % update.padField(pypad.TYPE_NEXT,pypad.FIELD_YEAR)+update.resolvePadFields("%Y",pypad.ESCAPE_NONE))
 | |
|         except TypeError:
 | |
|             print('              year(): None / '+update.resolvePadFields("%Y",pypad.ESCAPE_NONE))
 | |
|         print('         groupName(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_GROUP_NAME)+' / '+update.resolvePadFields('%G',pypad.ESCAPE_NONE))
 | |
|         print('             title(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_TITLE)+' / '+update.resolvePadFields('%T',pypad.ESCAPE_NONE))
 | |
|         print('            artist(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_ARTIST)+' / '+update.resolvePadFields('%A',pypad.ESCAPE_NONE))
 | |
|         print('         publisher(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_PUBLISHER)+' / '+update.resolvePadFields('%P',pypad.ESCAPE_NONE))
 | |
|         print('          composer(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_COMPOSER)+' / '+update.resolvePadFields('%M',pypad.ESCAPE_NONE))
 | |
|         print('             album(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_ALBUM)+' / '+update.resolvePadFields('%L',pypad.ESCAPE_NONE))
 | |
|         print('             label(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_LABEL)+' / '+update.resolvePadFields('%B',pypad.ESCAPE_NONE))
 | |
|         print('            client(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_CLIENT)+' / '+update.resolvePadFields('%C',pypad.ESCAPE_NONE))
 | |
|         print('            agency(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_AGENCY)+' / '+update.resolvePadFields('%E',pypad.ESCAPE_NONE))
 | |
|         print('         conductor(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_CONDUCTOR)+' / '+update.resolvePadFields('%R',pypad.ESCAPE_NONE))
 | |
|         print('       userDefined(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_USER_DEFINED)+' / '+update.resolvePadFields('%U',pypad.ESCAPE_NONE))
 | |
|         print('            songId(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_SONG_ID)+' / '+update.resolvePadFields('%S',pypad.ESCAPE_NONE))
 | |
|         print('            outcue(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_OUTCUE)+' / '+update.resolvePadFields('%O',pypad.ESCAPE_NONE))
 | |
|         print('       description(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_DESCRIPTION)+' / '+update.resolvePadFields('%I',pypad.ESCAPE_NONE))
 | |
|         print('   externalEventId(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_EXTERNAL_EVENT_ID))
 | |
|         print('      externalData(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_EXTERNAL_DATA))
 | |
|         print('  externalAnncType(): '+update.padField(pypad.TYPE_NEXT,pypad.FIELD_EXTERNAL_EVENT_ID))
 | |
|         print()
 | |
| 
 | |
|     else:
 | |
|         print('** NO NEXT PLAYING INFO **')
 | |
|         print()
 | |
| 
 | |
|     print ('******************************************************************')
 | |
| 
 | |
| #
 | |
| # Create an instance of 'pypad.Receiver'
 | |
| #
 | |
| rcvr=pypad.Receiver()
 | |
| 
 | |
| #
 | |
| # Tell it to use the callback
 | |
| #
 | |
| rcvr.setPadCallback(ProcessPad)
 | |
| 
 | |
| #
 | |
| # Start the receiver, giving it the hostname or IP address and TCP port of
 | |
| # the target Rivendell system. Once started, all further processing can only
 | |
| # be done in the callback method!
 | |
| #
 | |
| rcvr.start('localhost',pypad.PAD_TCP_PORT)
 |