I dont use Plex categories either, but in the zap2it xml files, the categories are already in there. I just use the category of “series” to denote that it is not a movie since Plex treats movies differently than TV shows for the guide.
Here is a sample of what zap2it comes out with, and I just key off of the category element. This one has no original-air-date, nor the proper series-episode format.
<programme start="20210215200000 -0500" stop="20210215230000 -0500" channel="I304.16616.zap2it.com">
<title lang="en">Mysteries of the Abandoned</title>
<desc lang="en">Some of the world's most incredible engineering projects now lie in ruins; cities that are now empty ghost towns, bridges that were never finished, and roads to nowhere; these deserted places are home to extraordinary mysteries and untold secrets.</desc>
<category lang="en">Series</category>
<length units="minutes">180</length>
<icon src="https://zap2it.tmsimg.com/assets/p13959449_b_v13_ah.jpg" />
<url>https://tvlistings.zap2it.com//overview.html?programSeriesId=SH02649635&tmsId=SH026496350000</url>
<episode-num system="dd_progid">SH02649635.0000</episode-num>
<audio>
<stereo>stereo</stereo>
</audio>
<new />
<subtitles type="teletext" />
</programme>
As you can see, “category” is already included as “series”. This particular example is what I would call an orphaned episode because it should have a series-episode number (see second example) or an original-air-date, but does not. Therefore, Plex treats it as if it were the same episode as a previous “Mysteries of the Abandoned” recording even though the description is clearly different. By simply adding
<episode-num system="original-air-date">2021-02-15</episode-num> to this xml entry, Plex treats it correctly in the guide.
A normal entry for this show should look like this:
<programme start="20210206150000 -0500" stop="20210206160000 -0500" channel="I48.11150.zap2it.com">
<title lang="en">Mysteries of the Abandoned</title>
<sub-title lang="en">Secret of Supervillain Island</sub-title>
<desc lang="en">On a strange island off the coast of Croatia, the mysterious ruins of a long-abandoned hideout look like they once belonged to a James Bond super-villain, and new discoveries reveal why it was built and why they were abandoned.</desc>
<category lang="en">Series</category>
<length units="minutes">60</length>
<icon src="https://zap2it.tmsimg.com/assets/p16785917_e_v9_aa.jpg" />
<url>https://tvlistings.zap2it.com//overview.html?programSeriesId=SH02649635&tmsId=EP026496350085</url>
<episode-num system="common">S04E02</episode-num>
<episode-num system="dd_progid">EP02649635.0085</episode-num>
<episode-num system="xmltv_ns">3.1.</episode-num>
<audio>
<stereo>stereo</stereo>
</audio>
<previously-shown />
<subtitles type="teletext" />
<rating>
<value>TV-PG</value>
</rating>
</programme>
You can see that there is an element showing “S04E02” here, and Plex picks up on that and treats it correctly. For whatever reason, there are shows that seemingly at random don’t adhere to this format like in the first example, so adding the original-air-date element becomes necessary for those.
Local news series, cooking shows, and the like are also notorious for not including SxxExx, and thus makes recording them automatically troublesome without the inserted element to fix it.
But, if whatever xml guide provider you are using doesn’t come with categories like that, then I am sure you can modify the script a bit to accommodate your needs.