Author |
Message |
Registered: March 18, 2007 | Reputation: | Posts: 6,463 |
| Posted: | | | | Oh boy was I confused last night. Got some rest. Remembered that Ai Austria sent me a great example of dividers in the Will Wallace XML, remembered that I have six gillion lines of code for parsing credits in BulkEdit.
So now, how to do it with XPath.
For the programmers, the XPath extensions gives you the ability to participate in the iterating loop without having to manage the loop yourself. The XPath iterator calls your code and passes you the node that has passed the high level selection criteria. Then you can do what you want. This is where I perform the famous Ai Austria concatenation, double blanks elimination, priority to CreditedAs and optional BY inclusion in the search.
Problem is, the node is passed raw, out of context. There are no parents, siblings or anything else. You just get the Outer and Inner HTML, and the ability to process attributes.
So I think what I might have to do is add to the top level search, so that dividers are also passed to the iterator, so I get the divider nodes in the correct sequence along with the actor and credit tags, where I can keep track of groups and episodes. That should do it.
Again, this is only for the stripped down CLTBoss/CLTInfo style XML. More compact for anyone who wants "just the facts ma'am, just the facts" and does not need the other profile info, or the bother of parsing the credit dividers.
For the Invelos style output, it is easy: XPath says - "yup, you got credits in this profile", so I just grab the whole profile XML and glom it onto the putput queue. No parsing needed.
I want exactly the same Xpath code to supply both, so that when a problem occurs, I can fix it in one place. | | | Thanks for your support. Free Plugins available here. Advanced plugins available here. Hey, new product!!! BDPFrog. | | | Last edited: by mediadogg |
|
Registered: March 18, 2007 | Reputation: | Posts: 6,463 |
| Posted: | | | | Cleaning up dozens of loose ends. Each two I clean up creates one more. One for Gunnar. The CLTBoss credits output, as requested, will be close to Invelos format. That means I had to fix my erroneous use of CreditType, and also add CreditSubType. Actor and Crew credits should be formatted exactly as Invelos now. Example: <Actors> <Actor Episode="" GroupName="" FirstName="melissa" MiddleName="" LastName="locsin" BirthYear="0" Role="" CreditedAs="tv show coordinator" Voice="False" Uncredited="False" Puppeteer="False" /> </Actors> Still working on the lower case issue. | | | Thanks for your support. Free Plugins available here. Advanced plugins available here. Hey, new product!!! BDPFrog. | | | Last edited: by mediadogg |
|
Registered: March 14, 2007 | Reputation: | Posts: 4,679 |
| Posted: | | | | Quoting mediadogg: Quote: Cleaning up dozens of loose ends. Each two I clean up creates one more. That sounds uncomfortably familiar. But you're not really a developer if you never have had that happen to you, I think. Quote: One for Gunnar. The CLTBoss credits output, as requested, will be close to Invelos format. Appreciated! | | | My freeware tools for DVD Profiler users. Gunnar |
|
Registered: March 18, 2007 | Reputation: | Posts: 6,463 |
| Posted: | | | | Quick questions, will save me research: Can dividers be nested? I.e., can an Episode have Groups? Groups within Groups?
Has anybody seem a "Team" divider?
Another thing: I am looking at a particular actor who is often CreditedAs "Writer". Does this mean someone has likely to have incorrectly submitted the credit? | | | Thanks for your support. Free Plugins available here. Advanced plugins available here. Hey, new product!!! BDPFrog. | | | Last edited: by mediadogg |
|
Registered: March 14, 2007 | Reputation: | Posts: 4,679 |
| Posted: | | | | Quoting mediadogg: Quote: Quick questions, will save me research: Can dividers be nested? I.e., can an Episode have Groups? Groups within Groups? Yes and yes. Quote: Has anybody seem a "Team" divider? Not sure what you mean. Quote: Another thing: I am looking at a particular actor who is often CreditedAs "Writer". Does this mean someone has likely to have incorrectly submitted the credit? Sounds fishy. Example? | | | My freeware tools for DVD Profiler users. Gunnar |
|
Registered: March 18, 2007 | Reputation: | Posts: 6,463 |
| Posted: | | | | Never mind about the CreditedAs. I am fixing the error in my formatting template as we speak.
Team: the Invelos Plugin API defines a constant for a Team Divider, but I have never seen one. (typo said "seem" before)
public const int DIVIDER_Episode = 1; public const int DIVIDER_Group = 2; public const int DIVIDER_Team = 3; public const int DIVIDER_EndDiv = 4;
Thought I was about done with dividers, but I don't handle nested (yet). | | | Thanks for your support. Free Plugins available here. Advanced plugins available here. Hey, new product!!! BDPFrog. | | | Last edited: by mediadogg |
|
Registered: March 18, 2007 | Reputation: | Posts: 6,463 |
| Posted: | | | | By the way, could I get a couple of profile IDs with nested dividers - as complex as possible, for testing?
Someday I need to go back and make those changes to other plugins (or maybe it is in there - I'll get (more) confused if I look at other code at this point). | | | Thanks for your support. Free Plugins available here. Advanced plugins available here. Hey, new product!!! BDPFrog. | | | Last edited: by mediadogg |
|
Registered: March 14, 2007 | Reputation: | Posts: 4,679 |
| Posted: | | | | I guess that Team dividers is something that never left the planning stage. I'm sure that it was never implemented. For an example of mixed Episode and Group dividers you could try 3-259190-274396 ('Allo 'Allo: Series 1 & 2). I don't think I have ever seen Group dividers nested in more than 2 levels. I'll look for some example, but it'll have to wait until tomorrow. The sandman calleth ... | | | My freeware tools for DVD Profiler users. Gunnar |
|
Registered: March 18, 2007 | Reputation: | Posts: 6,463 |
| Posted: | | | | Quoting GSyren: Quote: I guess that Team dividers is something that never left the planning stage. I'm sure that it was never implemented.
For an example of mixed Episode and Group dividers you could try 3-259190-274396 ('Allo 'Allo: Series 1 & 2).
I don't think I have ever seen Group dividers nested in more than 2 levels. I'll look for some example, but it'll have to wait until tomorrow. The sandman calleth ... Many thanks. Anything more than 1 level is enough. I implemented simple stacks for both Cast and Crew, which should handle any arbitrary depth or mix. | | | Thanks for your support. Free Plugins available here. Advanced plugins available here. Hey, new product!!! BDPFrog. |
|
Registered: March 14, 2007 | Reputation: | Posts: 4,679 |
| Posted: | | | | I stand corrected. I found a couple of titles in my collection that has 3 levels in cast:
043396-082595 Damn the Defiant! 786936-705119 The Guardian
I hope that helps. | | | My freeware tools for DVD Profiler users. Gunnar |
|
Registered: March 18, 2007 | Reputation: | Posts: 6,463 |
| Posted: | | | | Yes, great. Although I am still not confident I understand it. And the forum posts I've read indicate that I am not the only one. And even if the architecture is clear, the XML is entirely dependent on users manually inserting begin / end dividers, and there are a lot of end dividers missing. | | | Thanks for your support. Free Plugins available here. Advanced plugins available here. Hey, new product!!! BDPFrog. |
|
Registered: March 18, 2007 | Reputation: | Posts: 6,463 |
| Posted: | | | | After breakfast, I will take a look at those UPCs. I used locality 4 for the previous one.
My understanding now is as follows:
- end dividers are available but not required - a new episode divider starts a new episode level, if the previous one has not been explicitly ended - a new episode divider automatically ends all prior groups. In other words, no episodes within groups - likewise, an episode end divider closes that episode level and all open groups (Edit: actually no such thing) - a new group end divider keeps the same episode level, but ends that group level - a new group stays at the same episode level, and starts a new group level if the previous one has not been explicitly ended - a new profile resets everything Edit: for completeness, also dividers do not cross the cast / crew boundary | | | Thanks for your support. Free Plugins available here. Advanced plugins available here. Hey, new product!!! BDPFrog. | | | Last edited: by mediadogg |
|
Registered: March 14, 2007 | Reputation: | Posts: 4,679 |
| Posted: | | | | I think you've got it, but ...
There may be old profiles from before multiple levels were supported. Those can have groups that are supposed to be at the same level, but no longer are because the groups lack end dividers. I don't think there's much that can be done about that, except someone correcting those profiles.
Also, end dividers are not used for episodes, only for groups. In the widow for adding dividers they are explicitly called "Group End". | | | My freeware tools for DVD Profiler users. Gunnar |
|
Registered: March 18, 2007 | Reputation: | Posts: 6,463 |
| Posted: | | | | Quoting GSyren: Quote: I think you've got it, but ...
There may be old profiles from before multiple levels were supported. Those can have groups that are supposed to be at the same level, but no longer are because the groups lack end dividers. I don't think there's much that can be done about that, except someone correcting those profiles.
Also, end dividers are not used for episodes, only for groups. In the widow for adding dividers they are explicitly called "Group End". Ah thanks. Very helpful additional info. | | | Thanks for your support. Free Plugins available here. Advanced plugins available here. Hey, new product!!! BDPFrog. |
|
Registered: March 18, 2007 | Reputation: | Posts: 6,463 |
| Posted: | | | | Oh man, is the Invelos database a mess! The first UPC, locality 0 yields credits with nested dividers only because the submitter did not end the groups. You would not expect that "Officers", "Crew", and "Others" would logically be nested. I randomly picked one of the actors from that one, and did a CLT and bumped into this profile 4030521181533.5, which has exactly the same Captions (Officers, Crew, Others) assigned to Episode dividers. I thought I had a bug until I looked at the original profile. Clearly the submitter mistakenly used Episode dividers for what should have been groups. I wonder if either my tool or yours should give the option to "override" such mistakes and examine the results to see if it makes sense to schedule a profile update? - substitute Episode for Group or vice-versa - supply missing end dividers Does this call for a "Divider clean-up tool"? | | | Thanks for your support. Free Plugins available here. Advanced plugins available here. Hey, new product!!! BDPFrog. | | | Last edited: by mediadogg |
|
Registered: March 14, 2007 | Reputation: | Posts: 4,679 |
| Posted: | | | | I could be mistaken, but I believe that initially there was only one type of divider, so old profiles might have Episode dividers where we would now use Group dividers.
I think it would be very difficult for a tool to determine if end dividers are missing, or if the groups are intended to be levelled, or detemine if a divider is the wrong type. | | | My freeware tools for DVD Profiler users. Gunnar |
|