{"version":"1.0","provider_name":"DenBeke","provider_url":"https:\/\/denbeke.be\/blog","author_name":"Mathias Beke","author_url":"https:\/\/denbeke.be\/blog\/author\/admin\/","title":"iTunes Library Parser - TableGenerator &#8211; DenBeke","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"vRp9W8fKER\"><a href=\"https:\/\/denbeke.be\/blog\/itunes-library-parser\/itunes-library-parser-tablegenerator\/\">iTunes Library Parser &#8211; TableGenerator<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/denbeke.be\/blog\/itunes-library-parser\/itunes-library-parser-tablegenerator\/embed\/#?secret=vRp9W8fKER\" width=\"600\" height=\"338\" title=\"&#8220;iTunes Library Parser &#8211; TableGenerator&#8221; &#8212; DenBeke\" data-secret=\"vRp9W8fKER\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script>\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&&d.addEventListener&&\"undefined\"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!\/[^a-zA-Z0-9]\/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),o=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),c=new RegExp(\"^https?:$\",\"i\"),i=0;i<o.length;i++)o[i].style.display=\"none\";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):\"link\"===t.message&&(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener(\"message\",d.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",function(){for(var e,t,s=l.querySelectorAll(\"iframe.wp-embedded-content\"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute(\"data-secret\"))||(t=Math.random().toString(36).substring(2,12),e.src+=\"#?secret=\"+t,e.setAttribute(\"data-secret\",t)),e.contentWindow.postMessage({message:\"ready\",secret:t},\"*\")},!1)))}(window,document);\n\/\/# sourceURL=https:\/\/denbeke.be\/blog\/wp-includes\/js\/wp-embed.min.js\n<\/script>\n","description":"class TableGenerator: '''Class for generating a HTML file with a list of albums. Input comes from iTune Library XML file''' def __init__(self, input_file, output_file): '''Constructor''' #html header self.htmlHeader = \"&lt;!DOCTYPE html&gt;&lt;html lang=\"en\"&gt;&lt;head&gt;&lt;meta charset=\"utf-8\"&gt;&lt;title&gt;iTunes Albums&lt;\/title&gt;&lt;!--[if lt IE 9]&gt;&lt;script src=\"http:\/\/html5shim.googlecode.com\/svn\/trunk\/html5.js\"&gt;&lt;\/script&gt;&lt;![endif]--&gt;&lt;\/head&gt;&lt;body&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Album&lt;\/th&gt;&lt;th&gt;Artiest&lt;\/th&gt;&lt;th&gt;Year&lt;\/th&gt;&lt;\/tr&gt;\" #empty content, content is created with generateHTMLContent() self.htmlContent = \"\" #html footer self.htmlFooter = \"&lt;\/tbody&gt;&lt;\/table&gt;&lt;\/body&gt;&lt;\/html&gt;\" self.albumList = [&hellip;]"}