from pathlib import Path from html import escape p=Path(__file__).parent parts=[''] def rect(x,y,w,h,c,stroke=None): parts.append(f'') def text(x,y,s,size=28,c='#ffffff',bold=False): parts.append(f'{escape(s)}') rect(0,0,1920,1080,'#071632') parts.append('') text(175,108,'orbit',68,bold=True);text(365,103,'/ Classic',34,'#b7cbe8') text(1440,101,'Saturday 31 October',26);text(1770,101,'20:30',28,'#ffde59',True) for x,w,label,active in [(64,340,'1 Menu',False),(412,340,'2 TV Guide',True),(760,340,'3 Box Office',False)]: rect(x,150,w,64,'#194c91' if active else '#12356b','#38629a');text(x+24,192,label,29,bold=active) text(1510,191,'Your media. Your universe.',24,'#b7cbe8') rect(64,248,545,300,'#12356b','#38629a') parts.append('') rect(64,492,545,56,'#0c244d');text(86,529,'101 Orbit One',24,'#ffffff',True);text(400,529,'Demo signal',20,'#ffde59') text(654,276,'Orbit One / 20:30–21:00',24,'#ffde59') text(654,338,'The Midnight Observatory',45,bold=True) text(654,391,'An astronomer follows a mysterious signal',29,'#b7cbe8') text(654,435,'across the night sky.',29,'#b7cbe8') text(654,524,'Fictional programmes • Original demo transmission',22,'#b7cbe8') rect(64,584,1792,51,'#194c91') text(88,619,'Channel',24) for x,label in [(430,'20:30'),(910,'21:00'),(1390,'21:30')]:text(x,619,label,24) rows=[('101','Orbit One',['The Midnight Observatory','Small Town, Big Orbit','Beyond the Blue']),('202','Orbit Sci-Fi',['Signal from Europa','Starbound Dispatch','Visitors at Dawn']),('401','Orbit Kids',['Moonbug Rangers','The Comet Club','Rocket Pocket'])] for i,(num,name,shows) in enumerate(rows): y=644+i*100 rect(64,y,330,92,'#102b57');text(86,y+32,num,22,'#ffde59');text(86,y+68,name,29,bold=True) for j,show in enumerate(shows): x=402+j*486;focused=i==0 and j==0 rect(x,y,478,92,'#ffde59' if focused else '#12356b','#ffffff' if focused else '#38629a') text(x+20,y+54,show,27,'#071632' if focused else '#ffffff',focused) text(66,1009,'Arrows Browse',23,'#b7cbe8');text(430,1009,'OK Watch now / programme information',23,'#b7cbe8');text(1390,1009,'Back Return',23,'#b7cbe8') rect(64,1040,1792,2,'#38629a') parts.append('');(p/'orbit-classic-guide.svg').write_text('\n'.join(parts)) logo='''orbit''' (p/'orbit-wordmark.svg').write_text(logo)