# tru_podcast v1.2 # Podcasting support for Textpattern # Nathan Arthur # http://www.rainskit.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJ0cnVfcG9kY2FzdCI7czo3OiJ2ZXJzaW9uIjtzOjM6 IjEuMiI7czo2OiJhdXRob3IiO3M6MTM6Ik5hdGhhbiBBcnRodXIiO3M6MTA6ImF1dGhvcl91 cmkiO3M6MjQ6Imh0dHA6Ly93d3cucmFpbnNraXQuY29tLyI7czoxMToiZGVzY3JpcHRpb24i O3M6MzQ6IlBvZGNhc3Rpbmcgc3VwcG9ydCBmb3IgVGV4dHBhdHRlcm4iO3M6MTU6ImFsbG93 X2h0bWxfaGVscCI7aTowO3M6NDoidHlwZSI7aTowO3M6NDoiaGVscCI7czo0NTc6Igk8cD5U byBsZWFybiBtb3JlIGFib3V0IHRydV9wb2RjYXN0LCBjaGVjayBvdXQgdGhlIDxhIGhyZWY9 Imh0dHA6Ly93d3cucmFpbnNraXQuY29tL2Jsb2cvNTQyL3RydV9wb2RjYXN0LWEtcG9kY2Fz dGluZy1wbHVnaW4tZm9yLXRleHRwYXR0ZXJuIj5pbnRyb2R1Y3RvcnkgYXJ0aWNsZTwvYT4s IDxhIGhyZWY9Imh0dHA6Ly93d3cucmFpbnNraXQuY29tL3JlZmVyZW5jZS81MzkvdHJ1X3Bv ZGNhc3QtcmVsZWFzZXMiPnJlbGVhc2VzIHBhZ2U8L2E+LCA8YSBocmVmPSJodHRwOi8vd3d3 LnJhaW5za2l0LmNvbS9yZWZlcmVuY2UvNTQwL3RydV9wb2RjYXN0LWZlYXR1cmUtbGlzdCI+ ZmVhdHVyZSBsaXN0PC9hPiwgYW5kIDxhIGhyZWY9Imh0dHA6Ly93d3cucmFpbnNraXQuY29t L3JlZmVyZW5jZS81NDEvdHJ1X3BvZGNhc3QtdXNhZ2UtaW5zdHJ1Y3Rpb25zIj51c2FnZSBp bnN0cnVjdGlvbnM8L2E+LjwvcD4iO3M6NDoiY29kZSI7czo1OTEwOiIKI0NvcHlyaWdodCAy MDA3IE5hdGhhbiBBcnRodXIKI1JlbGVhc2VkIHVuZGVyIHRoZSBHTlUgUHVibGljIExpY2Vu c2UsIHNlZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2dwbC1saWNlbnNl LnBocCBmb3IgZGV0YWlscwojVGhpcyB3b3JrIGlzIGJhc2VkIHBhcnRpYWxseSBvbiBXb3Jk UHJlc3MgY29kZTsgc2VlIGh0dHA6Ly90cmFjLndvcmRwcmVzcy5vcmcvYnJvd3Nlci90cnVu ay93cC1pbmNsdWRlcy9mdW5jdGlvbnMucGhwP3Jldj00NzI1CgoKIyMjIENPTkZJR1VSQVRJ T04gIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKI1NlZSBodHRwOi8vd3d3LnJhaW5za2l0 LmNvbS9yZWZlcmVuY2UvNTQxL3RydV9wb2RjYXN0LXVzYWdlLWluc3RydWN0aW9ucyBmb3Ig aW5zdHJ1Y3Rpb25zCgojIFNldCB0aGlzIHRvIHRoZSB3ZWItYWNjZXNzaWJsZSBVUkwgb2Yg VGV4dHBhdHRlcm4ncyAiZmlsZXMiIGRpcmVjdG9yeQojIElmIHlvdSBoYXZlbid0IGN1c3Rv bWl6ZWQgeW91ciAiRmlsZSBkaXJlY3RvcnkgcGF0aCIgc2V0dGluZywgdGhpcyBzaG91bGQg YmUgcmlnaHQgYWxyZWFkeQpkZWZpbmUoJ1RSVV9QT0RDQVNUX0ZJTEVTX1VSTCcsIGh1IC4g J2ZpbGVzLycpOwoKIyBXaGVuIHlvdSB1cGxvYWQgYSBmaWxlIHZpYSBUWFAncyAiRmlsZXMi IGludGVyZmFjZSwgVFhQLWdlbmVyYXRlZCBVUkxzIHRoYXQgcG9pbnQgdG8gdGhhdAojIGZp bGUgYWx3YXlzIGxvb2sgbGlrZSAiL2ZpbGVfZG93bmxvYWQvMyIsIGlmIHlvdSBoYXZlIGNs ZWFuIHVybHMgdHVybmVkIG9uLiAgU29tZSBwb2RjYXN0CiMgY2xpZW50cyBnZXQgY29uZnVz ZWQgYnkgdGhlIG51bWJlciAoIjMiKSBhbmQgZG9uJ3Qga25vdyB3aGF0IG5hbWUgdG8gZ2l2 ZSB0aGUgZG93bmxvYWRlZAojIGZpbGUuICAoVFhQIGhhcyBhIGJyb2tlbiBmaWxlLWRvd25s b2FkIGltcGxlbWVudGF0aW9uLikgIEJ5IGRlZmF1bHQsIGlmIHlvdSBoYXZlIGNsZWFuCiMg VVJMcyB0dXJuZWQgb24sIHRydV9wb2RjYXN0IHdpbGwgZ2VuZXJhdGUgbGlua3MgbGlrZSAi L2ZpbGVfZG93bmxvYWQvdGVzdC5tcDMiLiAgSSBoYXZlbid0CiMgb2JzZXJ2ZWQgYW55IG5l Z2F0aXZlIHNpZGUgZWZmZWN0cyBmcm9tIHRoaXMgY2hvaWNlLCBidXQgaWYgeW91IHdhbnQg dHJ1X3BvZGNhc3QgdG8KIyBnZW5lcmF0ZSB0aGUgJ3N0YW5kYXJkJyBVUkxzLCBzd2l0Y2gg dGhpcyBmbGFnIHRvICcwJy4gIE5vdGUgdGhhdCBpVHVuZXMgYW5kIGEgZmV3IG90aGVyCiMg cG9kY2FzdCBjbGllbnRzIHNlZW0gdG8gbWlzYmVoYXZlIGlmIHlvdSBzZXQgdGhpcyB0byAn MCcsIHRob3VnaC4KZGVmaW5lKCdUUlVfUE9EQ0FTVF9VU0VfRklMRU5BTUVTJywgJzEnKTsK CiMgU2V0IHRoaXMgdG8gJzEnIGlmIHlvdSB3YW50IHRydV9wb2RjYXN0IHRvIGdlbmVyYXRl IGRpcmVjdCBsaW5rcyB0byBmaWxlcyB1cGxvYWRlZCB2aWEKIyBUZXh0cGF0dGVybidzICJG aWxlcyIgaW50ZXJmYWNlLCByYXRoZXIgdGhhbiB1c2luZyBUWFAncyBidWlsdC1pbiBmaWxl IGRvd25sb2FkIGZlYXR1cmUuCiMgSWYgeW91J3ZlIHNldCBUUlVfUE9EQ0FTVF9VU0VfRklM RU5BTUVTIHRvICcwJywgeW91IG1pZ2h0IHdhbnQgdG8gc2V0IHRoaXMgdG8gJzEnLgpkZWZp bmUoJ1RSVV9QT0RDQVNUX1VTRV9ESVJFQ1RfTElOS1MnLCAnMCcpOwoKCiMjIyBDT0RFICMj IwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKZnVuY3Rpb24gdHJ1X3BvZGNhc3Rf bGluaygkYXR0cykgewoJJHBvZGNhc3RfdXJsID0gdHJ1X3BvZGNhc3RfZ2V0X3VybCgpOwoJ aWYgKCRwb2RjYXN0X3VybCkgewoJCSRsaW5rdGV4dCA9ICgkYXR0c1snbGlua3RleHQnXSA/ ICRhdHRzWydsaW5rdGV4dCddIDogJHBvZGNhc3RfdXJsKTsKCQl1bnNldCgkYXR0c1snbGlu a3RleHQnXSk7CgoJCSRsaW5rID0gIjxhIGhyZWY9XCIkcG9kY2FzdF91cmxcIiByZWw9XCJl bmNsb3N1cmVcIiI7CgkJZm9yZWFjaCAoJGF0dHMgYXMgJGtleSA9PiAkdmFsdWUpIHsKCQkJ JGxpbmsgLj0gIiAka2V5PVwiJHZhbHVlXCIiOwoJCX0KCQkkbGluayAuPSAiPiRsaW5rdGV4 dDwvYT4iOwoKCQlyZXR1cm4gJGxpbms7Cgl9Cn0KCgpmdW5jdGlvbiB0cnVfcG9kY2FzdF9p Zl9wb2RjYXN0KCRhdHRzLCAkdGhpbmcpIHsKICAgICAgICByZXR1cm4gcGFyc2UoRXZhbEVs c2UoJHRoaW5nLCB0cnVfcG9kY2FzdF9nZXRfdXJsKCkpKTsKfQoKCmZ1bmN0aW9uIHRydV9w b2RjYXN0X2dldF91cmwoJGF0dHMgPSBhcnJheSgpKSB7CglnbG9iYWwgJHRoaXNhcnRpY2xl LCAkcGVybWxpbmtfbW9kZTsKCWV4dHJhY3QobEF0dHMoYXJyYXkoJ2Z1bGwnCQkJPT4gJzAn LAoJCQkJCQknY29udmVydG51bWJlcicJPT4gJzEnLAoJCQkJCQkncHJvdG9jb2wnCQk9PiAn aHR0cDovLycKCQkJCQkJKSwgJGF0dHMsIDApKTsKCgkkdXJsID0gdHJpbSgkdGhpc2FydGlj bGVbJ3RydV9wb2RjYXN0J10pOwoKCWlmICgkY29udmVydG51bWJlciAmJiBpc19udW1lcmlj KCR1cmwpKSB7CgkJJGlkID0gaW50dmFsKCR1cmwpOwoJCSR1cmwgPSBmaWxlX2Rvd25sb2Fk X2xpbmsoYXJyYXkoJ2lkJyA9PiAkaWQpLCAnJyk7CgoJCWlmIChUUlVfUE9EQ0FTVF9VU0Vf RklMRU5BTUVTICYmICRwZXJtbGlua19tb2RlICE9ICdtZXNzeScpIHsKCQkJJHJzID0gc2Fm ZV9yb3coIioiLCAidHhwX2ZpbGUiLCAnaWQ9Jy4kaWQpOwoJCQlpZiAoJHJzKSB7CgkJCQkk cGFydHMgPSBleHBsb2RlKCcvJywgJHVybCk7CgkJCQkkcGFydHNbY291bnQoJHBhcnRzKSAt IDFdID0gJHJzWydmaWxlbmFtZSddOwoJCQkJJHVybCA9IGltcGxvZGUoJy8nLCAkcGFydHMp OwoJCQl9CgkJfQoJfQoKCWlmICgkZnVsbCkgewoJCXJldHVybiB0cnVfcG9kY2FzdF9jbGVh bl91cmwoJHVybCwgJHByb3RvY29sKTsKCX0gZWxzZSB7CgkJcmV0dXJuICR1cmw7Cgl9Cn0K CgpmdW5jdGlvbiB0cnVfcG9kY2FzdF9jbGVhbl91cmwoJHVybCwgJHByb3RvY29sKSB7Cgkk cGFydHMgPSBwYXJzZV91cmwoJHVybCk7CglpZiAoJHBhcnRzWydob3N0J10pIHsKCQlyZXR1 cm4gJHVybDsKCX0gZWxzZSB7CgkJcmV0dXJuICRwcm90b2NvbCAuICRfU0VSVkVSWydIVFRQ X0hPU1QnXSAuICgkcGFydHNbJ3BvcnQnXSA/ICc6Jy4kcGFydHNbJ3BvcnQnXSA6ICcnKSAu ICRwYXJ0c1sncGF0aCddIC4gKCRwYXJ0c1sncXVlcnknXSA/ICc/Jy4kcGFydHNbJ3F1ZXJ5 J10gOiAnJyk7Cgl9Cn0KCgpyZWdpc3Rlcl9jYWxsYmFjaygndHJ1X3BvZGNhc3RfcnNzX2hh bmRsZXJfcnNzJywgJ3Jzc19lbnRyeScpOwpmdW5jdGlvbiB0cnVfcG9kY2FzdF9yc3NfaGFu ZGxlcl9yc3MoJGV2ZW50LCAkc3RlcCl7cmV0dXJuIHRydV9wb2RjYXN0X3Jzc19oYW5kbGVy KGZhbHNlKTt9CnJlZ2lzdGVyX2NhbGxiYWNrKCd0cnVfcG9kY2FzdF9yc3NfaGFuZGxlcl9h dG9tJywgJ2F0b21fZW50cnknKTsKZnVuY3Rpb24gdHJ1X3BvZGNhc3RfcnNzX2hhbmRsZXJf YXRvbSgkZXZlbnQsICRzdGVwKXtyZXR1cm4gdHJ1X3BvZGNhc3RfcnNzX2hhbmRsZXIodHJ1 ZSk7fQoKZnVuY3Rpb24gdHJ1X3BvZGNhc3RfcnNzX2hhbmRsZXIoJGF0b20pCnsKCSRyYXdf dXJsID0gdHJ1X3BvZGNhc3RfZ2V0X3VybChhcnJheSgnY29udmVydG51bWJlcicgPT4gJzAn KSk7CglpZiAoJHJhd191cmwpIHsKCQkkZGlyZWN0X3VybCA9ICRyYXdfdXJsOwoJCWlmIChp c19udW1lcmljKCRyYXdfdXJsKSkgewoJCQkkcnMgPSBzYWZlX3JvdygiKiIsICJ0eHBfZmls ZSIsICdpZD0nLmludHZhbCgkcmF3X3VybCkpOwoJCQlpZiAoJHJzKSB7CgkJCQkkZGlyZWN0 X3VybCA9IFRSVV9QT0RDQVNUX0ZJTEVTX1VSTCAuICRyc1snZmlsZW5hbWUnXTsKCQkJfQoJ CX0KCQkkcG9kY2FzdF91cmwgPSAoVFJVX1BPRENBU1RfVVNFX0RJUkVDVF9MSU5LUyA/ICRk aXJlY3RfdXJsIDogdHJ1X3BvZGNhc3RfZ2V0X3VybChhcnJheSgnZnVsbCcgPT4gJzEnKSkp OwoJCXJldHVybiB0cnVfcG9kY2FzdF9nZW5lcmF0ZV9lbmNsb3N1cmUoJGRpcmVjdF91cmws ICRwb2RjYXN0X3VybCwgJGF0b20pOwoJfSBlbHNlIHsKCQlyZXR1cm47Cgl9Cn0KCgpmdW5j dGlvbiB0cnVfcG9kY2FzdF9nZW5lcmF0ZV9lbmNsb3N1cmUoJGRpcmVjdF91cmwsICRwb2Rj YXN0X3VybCwgJGF0b20pIHsKCSRsZW5ndGggPSAkdHlwZSA9IGZhbHNlOwoKCSRoZWFkZXJz ID0gdHJ1X3BvZGNhc3RfZ2V0X2hlYWRlcnNfZm9yKCRkaXJlY3RfdXJsKTsKCWlmICgkaGVh ZGVycykgewoJCSR0eXBlID0gJGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddOwoJCSRsZW5ndGgg PSAkaGVhZGVyc1snY29udGVudC1sZW5ndGgnXTsKCX0KCgkkeG1sX21pZCA9ICgkdHlwZSA/ ICIgdHlwZT1cIiR0eXBlXCIiIDogIiIpIC4gKCRsZW5ndGggPyAiIGxlbmd0aD1cIiRsZW5n dGhcIiIgOiAiIik7CglpZiAoJGF0b20pCgkJJHhtbCA9ICI8bGluayByZWw9XCJlbmNsb3N1 cmVcIiBocmVmPVwiJHBvZGNhc3RfdXJsXCIiIC4gJHhtbF9taWQgLiAiIC8+IjsKCWVsc2UK CQkkeG1sID0gIjxlbmNsb3N1cmUgdXJsPVwiJHBvZGNhc3RfdXJsXCIiIC4gJHhtbF9taWQg LiAiIC8+IjsKCglyZXR1cm4gJHhtbC5uOwp9CgoKZnVuY3Rpb24gdHJ1X3BvZGNhc3RfZ2V0 X2hlYWRlcnNfZm9yKCR1cmwpIHsKCWdsb2JhbCAkY2FjaGVkX3BsdWdpbl92YWx1ZXM7Cgkk TUFYX1JFRElSRUNUUyA9IDU7CgkkU09DS0VUX0NPTk5FQ1RfVElNRU9VVCA9IDM7CgoJJHJl ZGlyZWN0cyA9IDA7Cgl3aGlsZSAoJHJlZGlyZWN0cysrIDwgJE1BWF9SRURJUkVDVFMpIHsK CQkkcGFydHMgPSBwYXJzZV91cmwoJHVybCk7CgkJJGZpbGUgPSAkcGFydHNbJ3BhdGgnXSAu IChpc3NldCgkcGFydHNbJ3F1ZXJ5J10pID8gJz8nLiRwYXJ0c1sncXVlcnknXSA6ICcnKTsK CQkkaG9zdCA9IChpc3NldCgkcGFydHNbJ2hvc3QnXSkgPyAkcGFydHNbJ2hvc3QnXSA6ICRf U0VSVkVSWydIVFRQX0hPU1QnXSk7CgkJJHBvcnQgPSAoaXNzZXQoJHBhcnRzWydwb3J0J10p ID8gJHBhcnRzWydwb3J0J10gOiA4MCk7CgoJCSRmcCA9IEBmc29ja29wZW4oJGhvc3QsICRw b3J0LCAkZXJyX251bSwgJGVycl9tc2csICRTT0NLRVRfQ09OTkVDVF9USU1FT1VUKTsKCQlp ZiAoISRmcCkKCQkJcmV0dXJuIGZhbHNlOwoKCQkkcmVzcG9uc2UgPSAnJzsKCQkkaGVhZCA9 ICJIRUFEICRmaWxlIEhUVFAvMS4xXHJcbkhPU1Q6ICRob3N0XHJcblVzZXItQWdlbnQ6ICIg LiAkY2FjaGVkX3BsdWdpbl92YWx1ZXNbJ25hbWUnXSAuICIvIiAuICRjYWNoZWRfcGx1Z2lu X3ZhbHVlc1sndmVyc2lvbiddIC4gIlxyXG5cclxuIjsKCQlmcHV0cygkZnAsICRoZWFkKTsK CQl3aGlsZSAoIWZlb2YoJGZwKSAmJiBzdHJwb3MoJHJlc3BvbnNlLCAiXHJcblxyXG4iKSA9 PSBmYWxzZSkKCQkJJHJlc3BvbnNlIC49IGZnZXRzKCRmcCwgMjA0OCk7CgkJZmNsb3NlKCRm cCk7CgoJCS8vdWdseQoJCXByZWdfbWF0Y2goJy8uKihbMC05XXszfSkuKi8nLCAkcmVzcG9u c2UsICRyZXR1cm4pOwoJCSRjb2RlID0gJGhlYWRlcnNbJ3Jlc3BvbnNlJ10gPSAkcmV0dXJu WzFdOyAvLyBIVFRQIHJlc3BvbnNlIGNvZGUKCgkJcHJlZ19tYXRjaF9hbGwoJy8oLio/KTog KC4qKVxyLycsICRyZXNwb25zZSwgJG1hdGNoZXMpOwoJCSRjb3VudCA9IGNvdW50KCRtYXRj aGVzWzFdKTsKCQlmb3IgKCRpID0gMDsgJGkgPCAkY291bnQ7ICRpKyspIHsKCQkJJGtleSA9 IHN0cnRvbG93ZXIoJG1hdGNoZXNbMV1bJGldKTsKCQkJJGhlYWRlcnNbIiRrZXkiXSA9ICRt YXRjaGVzWzJdWyRpXTsKCQl9CgoJCWlmICgoJzMwMicgPT0gJGNvZGUgfHwgJzMwMScgPT0g JGNvZGUpICYmIGlzc2V0KCRoZWFkZXJzWydsb2NhdGlvbiddKSkKCQkJJHVybCA9ICRoZWFk ZXJzWydsb2NhdGlvbiddOwoJCWVsc2UKCQkJcmV0dXJuICRoZWFkZXJzOwoJfQoJcmV0dXJu IGZhbHNlOwp9CgoiO3M6ODoiaGVscF9yYXciO3M6NDAxOiJUbyBsZWFybiBtb3JlIGFib3V0 IHRydV9wb2RjYXN0LCBjaGVjayBvdXQgdGhlICJpbnRyb2R1Y3RvcnkgYXJ0aWNsZSI6aHR0 cDovL3d3dy5yYWluc2tpdC5jb20vYmxvZy81NDIvdHJ1X3BvZGNhc3QtYS1wb2RjYXN0aW5n LXBsdWdpbi1mb3ItdGV4dHBhdHRlcm4sICJyZWxlYXNlcyBwYWdlIjpodHRwOi8vd3d3LnJh aW5za2l0LmNvbS9yZWZlcmVuY2UvNTM5L3RydV9wb2RjYXN0LXJlbGVhc2VzLCAiZmVhdHVy ZSBsaXN0IjpodHRwOi8vd3d3LnJhaW5za2l0LmNvbS9yZWZlcmVuY2UvNTQwL3RydV9wb2Rj YXN0LWZlYXR1cmUtbGlzdCwgYW5kICJ1c2FnZSBpbnN0cnVjdGlvbnMiOmh0dHA6Ly93d3cu cmFpbnNraXQuY29tL3JlZmVyZW5jZS81NDEvdHJ1X3BvZGNhc3QtdXNhZ2UtaW5zdHJ1Y3Rp b25zLiI7czozOiJtZDUiO3M6MzI6IjNlZjQ5YTBiM2MyMmY3OWZmYTkwMGJiOGU5NWIyNmYz Ijt9