Spaces:
Sleeping
Sleeping
| """One-off builder: IPL 2026 league schedule (BBC) + squads (Firstpost Dec 2025).""" | |
| import json | |
| import re | |
| from collections import defaultdict | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parents[1] | |
| # League only, chronological. (date, early_slot, home_abbr, away_abbr) | |
| # early_slot True => 3:30 PM IST (11:00 BST), else 7:30 PM IST (15:00 BST) | |
| FIXTURES = [ | |
| ("2026-03-28", False, "RCB", "SRH"), | |
| ("2026-03-29", False, "MI", "KKR"), | |
| ("2026-03-30", False, "RR", "CSK"), | |
| ("2026-03-31", False, "PBKS", "GT"), | |
| ("2026-04-01", False, "LSG", "DC"), | |
| ("2026-04-02", False, "KKR", "SRH"), | |
| ("2026-04-03", False, "CSK", "PBKS"), | |
| ("2026-04-04", True, "DC", "MI"), | |
| ("2026-04-04", False, "GT", "RR"), | |
| ("2026-04-05", True, "SRH", "LSG"), | |
| ("2026-04-05", False, "RCB", "CSK"), | |
| ("2026-04-06", False, "KKR", "PBKS"), | |
| ("2026-04-07", False, "RR", "MI"), | |
| ("2026-04-08", False, "DC", "GT"), | |
| ("2026-04-09", False, "KKR", "LSG"), | |
| ("2026-04-10", False, "RR", "RCB"), | |
| ("2026-04-11", True, "PBKS", "SRH"), | |
| ("2026-04-11", False, "CSK", "DC"), | |
| ("2026-04-12", True, "LSG", "GT"), | |
| ("2026-04-12", False, "MI", "RCB"), | |
| ("2026-04-13", False, "SRH", "RR"), | |
| ("2026-04-14", False, "CSK", "KKR"), | |
| ("2026-04-15", False, "RCB", "LSG"), | |
| ("2026-04-16", False, "MI", "PBKS"), | |
| ("2026-04-17", False, "GT", "KKR"), | |
| ("2026-04-18", True, "RCB", "DC"), | |
| ("2026-04-18", False, "SRH", "CSK"), | |
| ("2026-04-19", True, "KKR", "RR"), | |
| ("2026-04-19", False, "PBKS", "LSG"), | |
| ("2026-04-20", False, "GT", "MI"), | |
| ("2026-04-21", False, "SRH", "DC"), | |
| ("2026-04-22", False, "LSG", "RR"), | |
| ("2026-04-23", False, "MI", "CSK"), | |
| ("2026-04-24", False, "RCB", "GT"), | |
| ("2026-04-25", True, "DC", "PBKS"), | |
| ("2026-04-25", False, "RR", "SRH"), | |
| ("2026-04-26", True, "GT", "CSK"), | |
| ("2026-04-26", False, "LSG", "KKR"), | |
| ("2026-04-27", False, "DC", "RCB"), | |
| ("2026-04-28", False, "PBKS", "RR"), | |
| ("2026-04-29", False, "MI", "SRH"), | |
| ("2026-04-30", False, "GT", "RCB"), | |
| ("2026-05-01", False, "RR", "DC"), | |
| ("2026-05-02", False, "CSK", "MI"), | |
| ("2026-05-03", True, "SRH", "KKR"), | |
| ("2026-05-03", False, "GT", "PBKS"), | |
| ("2026-05-04", False, "MI", "LSG"), | |
| ("2026-05-05", False, "DC", "CSK"), | |
| ("2026-05-06", False, "SRH", "PBKS"), | |
| ("2026-05-07", False, "LSG", "RCB"), | |
| ("2026-05-08", False, "DC", "KKR"), | |
| ("2026-05-09", False, "RR", "GT"), | |
| ("2026-05-10", False, "CSK", "LSG"), | |
| ("2026-05-10", False, "RCB", "MI"), | |
| ("2026-05-11", False, "PBKS", "DC"), | |
| ("2026-05-12", False, "GT", "SRH"), | |
| ("2026-05-13", False, "RCB", "KKR"), | |
| ("2026-05-14", False, "PBKS", "MI"), | |
| ("2026-05-15", False, "LSG", "CSK"), | |
| ("2026-05-16", False, "KKR", "GT"), | |
| ("2026-05-17", False, "PBKS", "RCB"), | |
| ("2026-05-17", False, "DC", "RR"), | |
| ("2026-05-18", False, "CSK", "SRH"), | |
| ("2026-05-19", False, "RR", "LSG"), | |
| ("2026-05-20", False, "KKR", "MI"), | |
| ("2026-05-21", False, "CSK", "GT"), | |
| ("2026-05-22", False, "SRH", "RCB"), | |
| ("2026-05-23", False, "LSG", "PBKS"), | |
| ("2026-05-24", True, "MI", "RR"), | |
| ("2026-05-24", False, "KKR", "DC"), | |
| ] | |
| VENUE_HOME = { | |
| "RCB": "M. Chinnaswamy Stadium, Bengaluru", | |
| "SRH": "Rajiv Gandhi Intl Stadium, Hyderabad", | |
| "MI": "Wankhede Stadium, Mumbai", | |
| "KKR": "Eden Gardens, Kolkata", | |
| "RR": "Sawai Mansingh Stadium, Jaipur", | |
| "CSK": "M.A. Chidambaram Stadium, Chennai", | |
| "PBKS": "Maharaja Yadavindra Stadium, Mohali", | |
| "GT": "Narendra Modi Stadium, Ahmedabad", | |
| "LSG": "BRSABV Ekana Stadium, Lucknow", | |
| "DC": "Arun Jaitley Stadium, Delhi", | |
| } | |
| # Firstpost Dec 2025 — strip roles / trade notes in UI | |
| RAW_SQUADS = { | |
| "CSK": "Ruturaj Gaikwad (c), MS Dhoni (wk), Sanju Samson (traded from RR), Ayush Mhatre, Dewald Brevis, Ramakrishna Ghosh, Shivam Dube, Urvil Patel (wk), Anshul Kamboj, Khaleel Ahmed, Mukesh Choudhary, Nathan Ellis, Noor Ahmad, Shreyas Gopal, Gurjapneet Singh, Jamie Overton, Akeal Hosein, Prashant Veer, Kartik Sharma, Matthew Short, Aman Khan, Sarfaraz Khan, Rahul Chahar", | |
| "SRH": "Travis Head, Abhishek Sharma, Aniket Verma, R Smaran, Ishan Kishan, Heinrich Klaasen, Nitish Reddy, Harsh Dubey, Kamindu Mendis, Harshal Patel, Brydon Carse, Pat Cummins (c), Jaydev Unadkat, Eshan Malinga, Zeeshan Ansari, Liam Livingstone, Shivang Kumar, Salil Arora, Sakib Hussain, Onkar Tarmale, Amit Kumar, Praful Hinge, Krains Fuletra, Jack Edwards, Shivam Mavi", | |
| "RR": "Ravindra Jadeja (traded from CSK), Yashasvi Jaiswal, Vaibhav Suryavanshi, Riyan Parag, Dhruv Jurel, Sam Curran (traded from CSK), Jofra Archer, Nandre Burger, Tushar Deshpande, Kwena Maphaka, Shubham Dubey, Shimron Hetmyer, Lhuan-dre Pretorius, Donovan Ferreira (traded from DC), Sandeep Sharma, Yudhvir Charak, Ravi Bishnoi, Sushant Mishra, Yash Raj Punja, Vignesh Puthur, Ravi Singh, Adam Milne, Kuldeep Sen", | |
| "DC": "Nitish Rana (traded from RR), Kuldeep Yadav, KL Rahul, Mitchell Starc, Tristan Stubbs, Abishek Porel, Ashutosh Sharma, Axar Patel, Dushmantha Chameera, Karun Nair, Sameer Rizvi, T Natarajan, Tripurana Vijay, Vipraj Nigam, Mukesh Kumar, Ajay Mandal, Madhav Tiwari, Auqib Dar, Pathum Nissanka, David Miller, Ben Duckett, Kyle Jamieson, Lungi Ngidi, Prithvi Shaw, Sahil Parakh", | |
| "KKR": "Ajinkya Rahane, Angkrish Raghuvanshi, Anukul Roy, Harshit Rana, Manish Pandey, Ramandeep Singh, Rinku Singh, Rovman Powell, Sunil Narine, Umran Malik, Vaibhav Arora, Varun Chakaravarthy, Cameron Green, Matheesha Pathirana, Mustafizur Rahman, Finn Allen, Tim Seifert, Tejasvi Singh, Kartik Tyagi, Prashant Solanki, Rahul Tripathi, Akash Deep, Rachin Ravindra, Daksh Kamra, Sarthak Ranjan", | |
| "GT": "Shubman Gill (c), Sai Sudharsan, Kumar Kushagra, Anuj Rawat, Jos Buttler, Nishant Sindhu, Washington Sundar, Arshad Khan, Shahrukh Khan, Rahul Tewatia, Kagiso Rabada, Mohammed Siraj, Prasidh Krishna, Ishant Sharma, Gurnoor Singh Brar, Rashid Khan, Manav Suthar, Sai Kishore, Jayant Yadav, Glenn Phillips, Jason Holder, Tom Banton, Ashok Sharma, Luke Wood, Prithviraj Yarra", | |
| "LSG": "Abdul Samad, Ayush Badoni, Aiden Markram, Matthew Breetzke, Himmat Singh, Rishabh Pant (c), Nicholas Pooran, Mitchell Marsh, Shahbaz Ahmed, Arshin Kulkarni, Mayank Yadav, Avesh Khan, Mohsin Khan, Manimaran Siddharth, Digvesh Rathi, Prince Yadav, Akash Singh, Josh Inglis, Wanindu Hasaranga, Anrich Nortje, Mukul Choudhary, Akshat Raghuwanshi, Naman Tiwari, Mohammed Shami (traded from SRH), Arjun Tendulkar (traded from MI)", | |
| "PBKS": "Prabhsimran Singh, Priyansh Arya, Shreyas Iyer, Shashank Singh, Nehal Wadhera, Marcus Stoinis, Azmatullah Omarzai, Marco Jansen, Harpreet Brar, Yuzvendra Chahal, Arshdeep Singh, Musheer Khan, Pyala Avinash, Harnoor Pannu, Suryansh Shedge, Mitchell Owen, Xavier Bartlett, Lockie Ferguson, Vyshak Vijaykumar, Yash Thakur, Vishnu Vinod, Ben Dwarshuis, Cooper Connolly, Vishal Nishad, Pravin Dubey", | |
| "MI": "Rohit Sharma, Suryakumar Yadav, Tilak Varma, Robin Minz, Ryan Rickelton, Hardik Pandya, Naman Dhir, Mitchell Santner, Will Jacks, Corbin Bosch, Raj Bawa, Trent Boult, Jasprit Bumrah, Deepak Chahar, Ashwani Kumar, Raghu Sharma, AM Ghazanfar, Quinton de Kock, Shardul Thakur (traded from LSG), Sherfane Rutherford (traded from GT), Mayank Markande (traded from KKR), Mayank Rawat, Atharva Ankolekar, Mohammad Izhar, Danish Malewar", | |
| "RCB": "Rajat Patidar (c), Virat Kohli, Devdutt Padikkal, Phil Salt, Jitesh Sharma, Krunal Pandya, Swapnil Singh, Tim David, Romario Shepherd, Jacob Bethell, Josh Hazlewood, Yash Dayal, Bhuvneshwar Kumar, Nuwan Thushara, Rasikh Salam, Abhinandan Singh, Suyash Sharma, Venkatesh Iyer, Mangesh Yadav, Jacob Duffy, Jordan Cox, Kanishk Chouhan, Vihaan Malhotra, Vicky Ostwal, Satvik Deswal", | |
| } | |
| def clean_player(raw: str) -> str: | |
| s = raw.strip() | |
| s = re.sub(r"\s*\([^)]*\)\s*", "", s).strip() | |
| return s | |
| def build_players(): | |
| out = {} | |
| for abbr, blob in RAW_SQUADS.items(): | |
| names = [clean_player(p) for p in blob.split(",")] | |
| names = [n for n in names if n] | |
| out[abbr] = sorted(set(names), key=str.lower) | |
| return out | |
| def build_matches(): | |
| per_day = defaultdict(int) | |
| matches = [] | |
| for d, early, h, a in FIXTURES: | |
| per_day[d] += 1 | |
| n = per_day[d] | |
| match_id = f"{d.replace('-', '')}_{n}" | |
| time_str = "3:30 PM" if early else "7:30 PM" | |
| venue = VENUE_HOME.get(h, "") | |
| matches.append( | |
| { | |
| "match_id": match_id, | |
| "date": d, | |
| "time": time_str, | |
| "teams": [h, a], | |
| "venue": venue, | |
| } | |
| ) | |
| return matches | |
| def main(): | |
| matches = build_matches() | |
| players = build_players() | |
| assert len(matches) == 70, len(matches) | |
| for k in ("CSK", "MI", "RCB", "KKR", "SRH", "DC", "RR", "PBKS", "LSG", "GT"): | |
| assert k in players and len(players[k]) >= 18, (k, len(players.get(k, []))) | |
| (ROOT / "matches.json").write_text( | |
| json.dumps(matches, indent=4) + "\n", encoding="utf-8" | |
| ) | |
| (ROOT / "players.json").write_text( | |
| json.dumps(players, indent=4) + "\n", encoding="utf-8" | |
| ) | |
| print("Wrote", len(matches), "matches and", len(players), "team squads.") | |
| if __name__ == "__main__": | |
| main() | |