Virus-templated visible spectrum active perovskite photocatalyst