# tru_podcast v1.1 # 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 IjEuMSI7czo2OiJhdXRob3IiO3M6MTM6Ik5hdGhhbiBBcnRodXIiO3M6MTA6ImF1dGhvcl91 cmkiO3M6MjI6Imh0dHA6Ly93d3cudHJ1aXN0LmNvbS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjM0OiJQb2RjYXN0aW5nIHN1cHBvcnQgZm9yIFRleHRwYXR0ZXJuIjtzOjE1OiJhbGxvd19o dG1sX2hlbHAiO2k6MDtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6NDQ5OiIJPHA+VG8g bGVhcm4gbW9yZSBhYm91dCB0cnVfcG9kY2FzdCwgY2hlY2sgb3V0IHRoZSA8YSBocmVmPSJo dHRwOi8vd3d3LnRydWlzdC5jb20vYmxvZy81NDIvdHJ1X3BvZGNhc3QtYS1wb2RjYXN0aW5n LXBsdWdpbi1mb3ItdGV4dHBhdHRlcm4iPmludHJvZHVjdG9yeSBhcnRpY2xlPC9hPiwgPGEg aHJlZj0iaHR0cDovL3d3dy50cnVpc3QuY29tL3JlZmVyZW5jZS81MzkvdHJ1X3BvZGNhc3Qt cmVsZWFzZXMiPnJlbGVhc2VzIHBhZ2U8L2E+LCA8YSBocmVmPSJodHRwOi8vd3d3LnRydWlz dC5jb20vcmVmZXJlbmNlLzU0MC90cnVfcG9kY2FzdC1mZWF0dXJlLWxpc3QiPmZlYXR1cmUg bGlzdDwvYT4sIGFuZCA8YSBocmVmPSJodHRwOi8vd3d3LnRydWlzdC5jb20vcmVmZXJlbmNl LzU0MS90cnVfcG9kY2FzdC11c2FnZS1pbnN0cnVjdGlvbnMiPnVzYWdlIGluc3RydWN0aW9u czwvYT4uPC9wPiI7czo0OiJjb2RlIjtzOjU4MzU6IgojQ29weXJpZ2h0IDIwMDcgTmF0aGFu IEFydGh1cgojUmVsZWFzZWQgdW5kZXIgdGhlIEdOVSBQdWJsaWMgTGljZW5zZSwgc2VlIGh0 dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvZ3BsLWxpY2Vuc2UucGhwIGZvciBk ZXRhaWxzCiNUaGlzIHdvcmsgaXMgYmFzZWQgcGFydGlhbGx5IG9uIFdvcmRQcmVzcyBjb2Rl OyBzZWUgaHR0cDovL3RyYWMud29yZHByZXNzLm9yZy9icm93c2VyL3RydW5rL3dwLWluY2x1 ZGVzL2Z1bmN0aW9ucy5waHA/cmV2PTQ3MjUKCgojIyMgQ09ORklHVVJBVElPTiAjIyMKIyMj IyMjIyMjIyMjIyMjIyMjIyMjCgojU2VlIGh0dHA6Ly93d3cudHJ1aXN0LmNvbS9yZWZlcmVu Y2UvNTQxL3RydV9wb2RjYXN0LXVzYWdlLWluc3RydWN0aW9ucyBmb3IgaW5zdHJ1Y3Rpb25z CgojIFNldCB0aGlzIHRvIHRoZSB3ZWItYWNjZXNzaWJsZSBVUkwgb2YgVGV4dHBhdHRlcm4n cyAiZmlsZXMiIGRpcmVjdG9yeQojIElmIHlvdSBoYXZlbid0IGN1c3RvbWl6ZWQgeW91ciAi RmlsZSBkaXJlY3RvcnkgcGF0aCIgc2V0dGluZywgdGhpcyBzaG91bGQgYmUgcmlnaHQgYWxy ZWFkeQpkZWZpbmUoJ1RSVV9QT0RDQVNUX0ZJTEVTX1VSTCcsIGh1IC4gJ2ZpbGVzLycpOwoK IyBXaGVuIHlvdSB1cGxvYWQgYSBmaWxlIHZpYSBUWFAncyAiRmlsZXMiIGludGVyZmFjZSwg VFhQLWdlbmVyYXRlZCBVUkxzIHRoYXQgcG9pbnQgdG8gdGhhdAojIGZpbGUgYWx3YXlzIGxv b2sgbGlrZSAiL2ZpbGVfZG93bmxvYWQvMyIsIGlmIHlvdSBoYXZlIGNsZWFuIHVybHMgdHVy bmVkIG9uLiAgU29tZSBwb2RjYXN0CiMgY2xpZW50cyBnZXQgY29uZnVzZWQgYnkgdGhlIG51 bWJlciAoIjMiKSBhbmQgZG9uJ3Qga25vdyB3aGF0IG5hbWUgdG8gZ2l2ZSB0aGUgZG93bmxv YWRlZAojIGZpbGUuICAoVFhQIGhhcyBhIGJyb2tlbiBmaWxlLWRvd25sb2FkIGltcGxlbWVu dGF0aW9uLikgIEJ5IGRlZmF1bHQsIGlmIHlvdSBoYXZlIGNsZWFuCiMgVVJMcyB0dXJuZWQg b24sIHRydV9wb2RjYXN0IHdpbGwgZ2VuZXJhdGUgbGlua3MgbGlrZSAiL2ZpbGVfZG93bmxv YWQvdGVzdC5tcDMiLiAgSSBoYXZlbid0CiMgb2JzZXJ2ZWQgYW55IG5lZ2F0aXZlIHNpZGUg ZWZmZWN0cyBmcm9tIHRoaXMgY2hvaWNlLCBidXQgaWYgeW91IHdhbnQgdHJ1X3BvZGNhc3Qg dG8KIyBnZW5lcmF0ZSB0aGUgJ3N0YW5kYXJkJyBVUkxzLCBzd2l0Y2ggdGhpcyBmbGFnIHRv ICcwJy4gIE5vdGUgdGhhdCBpVHVuZXMgYW5kIGEgZmV3IG90aGVyCiMgcG9kY2FzdCBjbGll bnRzIHNlZW0gdG8gbWlzYmVoYXZlIGlmIHlvdSBzZXQgdGhpcyB0byAnMCcsIHRob3VnaC4K ZGVmaW5lKCdUUlVfUE9EQ0FTVF9VU0VfRklMRU5BTUVTJywgJzEnKTsKCiMgU2V0IHRoaXMg dG8gJzEnIGlmIHlvdSB3YW50IHRydV9wb2RjYXN0IHRvIGdlbmVyYXRlIGRpcmVjdCBsaW5r cyB0byBmaWxlcyB1cGxvYWRlZCB2aWEKIyBUZXh0cGF0dGVybidzICJGaWxlcyIgaW50ZXJm YWNlLCByYXRoZXIgdGhhbiB1c2luZyBUWFAncyBidWlsdC1pbiBmaWxlIGRvd25sb2FkIGZl YXR1cmUuCiMgSWYgeW91J3ZlIHNldCBUUlVfUE9EQ0FTVF9VU0VfRklMRU5BTUVTIHRvICcw JywgeW91IG1pZ2h0IHdhbnQgdG8gc2V0IHRoaXMgdG8gJzEnLgpkZWZpbmUoJ1RSVV9QT0RD QVNUX1VTRV9ESVJFQ1RfTElOS1MnLCAnMCcpOwoKCiMjIyBDT0RFICMjIwojIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwoKZnVuY3Rpb24gdHJ1X3BvZGNhc3RfbGluaygkYXR0cykg ewoJJHBvZGNhc3RfdXJsID0gdHJ1X3BvZGNhc3RfZ2V0X3VybCgpOwoJaWYgKCRwb2RjYXN0 X3VybCkgewoJCSRsaW5rdGV4dCA9ICgkYXR0c1snbGlua3RleHQnXSA/ICRhdHRzWydsaW5r dGV4dCddIDogJHBvZGNhc3RfdXJsKTsKCQl1bnNldCgkYXR0c1snbGlua3RleHQnXSk7CgoJ CSRsaW5rID0gIjxhIGhyZWY9XCIkcG9kY2FzdF91cmxcIiByZWw9XCJlbmNsb3N1cmVcIiI7 CgkJZm9yZWFjaCAoJGF0dHMgYXMgJGtleSA9PiAkdmFsdWUpIHsKCQkJJGxpbmsgLj0gIiAk a2V5PVwiJHZhbHVlXCIiOwoJCX0KCQkkbGluayAuPSAiPiRsaW5rdGV4dDwvYT4iOwoKCQly ZXR1cm4gJGxpbms7Cgl9Cn0KCgpmdW5jdGlvbiB0cnVfcG9kY2FzdF9pZl9wb2RjYXN0KCRh dHRzLCAkdGhpbmcpIHsKICAgICAgICByZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCB0 cnVfcG9kY2FzdF9nZXRfdXJsKCkpKTsKfQoKCmZ1bmN0aW9uIHRydV9wb2RjYXN0X2dldF91 cmwoJGF0dHMgPSBhcnJheSgpKSB7CglnbG9iYWwgJHRoaXNhcnRpY2xlLCAkcGVybWxpbmtf bW9kZTsKCWV4dHJhY3QobEF0dHMoYXJyYXkoJ2Z1bGwnCQkJPT4gJzAnLAoJCQkJCQknY29u dmVydG51bWJlcicJPT4gJzEnLAoJCQkJCQkncHJvdG9jb2wnCQk9PiAnaHR0cDovLycKCQkJ CQkJKSwgJGF0dHMsIDApKTsKCgkkdXJsID0gdHJpbSgkdGhpc2FydGljbGVbJ3RydV9wb2Rj YXN0J10pOwoKCWlmICgkY29udmVydG51bWJlciAmJiBpc19udW1lcmljKCR1cmwpKSB7CgkJ JGlkID0gaW50dmFsKCR1cmwpOwoJCSR1cmwgPSBmaWxlX2Rvd25sb2FkX2xpbmsoYXJyYXko J2lkJyA9PiAkaWQpLCAnJyk7CgoJCWlmIChUUlVfUE9EQ0FTVF9VU0VfRklMRU5BTUVTICYm ICRwZXJtbGlua19tb2RlICE9ICdtZXNzeScpIHsKCQkJJHJzID0gc2FmZV9yb3coIioiLCAi dHhwX2ZpbGUiLCAnaWQ9Jy4kaWQpOwoJCQlpZiAoJHJzKSB7CgkJCQkkcGFydHMgPSBleHBs b2RlKCcvJywgJHVybCk7CgkJCQkkcGFydHNbY291bnQoJHBhcnRzKSAtIDFdID0gJHJzWydm aWxlbmFtZSddOwoJCQkJJHVybCA9IGltcGxvZGUoJy8nLCAkcGFydHMpOwoJCQl9CgkJfQoJ fQoKCWlmICgkZnVsbCkgewoJCXJldHVybiB0cnVfcG9kY2FzdF9jbGVhbl91cmwoJHVybCwg JHByb3RvY29sKTsKCX0gZWxzZSB7CgkJcmV0dXJuICR1cmw7Cgl9Cn0KCgpmdW5jdGlvbiB0 cnVfcG9kY2FzdF9jbGVhbl91cmwoJHVybCwgJHByb3RvY29sKSB7CgkkcGFydHMgPSBwYXJz ZV91cmwoJHVybCk7CglpZiAoJHBhcnRzWydob3N0J10pIHsKCQlyZXR1cm4gJHVybDsKCX0g ZWxzZSB7CgkJcmV0dXJuICRwcm90b2NvbCAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICgk cGFydHNbJ3BvcnQnXSA/ICc6Jy4kcGFydHNbJ3BvcnQnXSA6ICcnKSAuICRwYXJ0c1sncGF0 aCddIC4gKCRwYXJ0c1sncXVlcnknXSA/ICc/Jy4kcGFydHNbJ3F1ZXJ5J10gOiAnJyk7Cgl9 Cn0KCgpyZWdpc3Rlcl9jYWxsYmFjaygndHJ1X3BvZGNhc3RfcnNzX2hhbmRsZXJfcnNzJywg J3Jzc19lbnRyeScpOwpmdW5jdGlvbiB0cnVfcG9kY2FzdF9yc3NfaGFuZGxlcl9yc3MoJGV2 ZW50LCAkc3RlcCl7cmV0dXJuIHRydV9wb2RjYXN0X3Jzc19oYW5kbGVyKGZhbHNlKTt9CnJl Z2lzdGVyX2NhbGxiYWNrKCd0cnVfcG9kY2FzdF9yc3NfaGFuZGxlcl9hdG9tJywgJ2F0b21f ZW50cnknKTsKZnVuY3Rpb24gdHJ1X3BvZGNhc3RfcnNzX2hhbmRsZXJfYXRvbSgkZXZlbnQs ICRzdGVwKXtyZXR1cm4gdHJ1X3BvZGNhc3RfcnNzX2hhbmRsZXIodHJ1ZSk7fQoKZnVuY3Rp b24gdHJ1X3BvZGNhc3RfcnNzX2hhbmRsZXIoJGF0b20pCnsKCSRyYXdfdXJsID0gdHJ1X3Bv ZGNhc3RfZ2V0X3VybChhcnJheSgnY29udmVydG51bWJlcicgPT4gJzAnKSk7CglpZiAoJHJh d191cmwpIHsKCQkkZGlyZWN0X3VybCA9ICRyYXdfdXJsOwoJCWlmIChpc19udW1lcmljKCRy YXdfdXJsKSkgewoJCQkkcnMgPSBzYWZlX3JvdygiKiIsICJ0eHBfZmlsZSIsICdpZD0nLmlu dHZhbCgkcmF3X3VybCkpOwoJCQlpZiAoJHJzKSB7CgkJCQkkZGlyZWN0X3VybCA9IFRSVV9Q T0RDQVNUX0ZJTEVTX1VSTCAuICRyc1snZmlsZW5hbWUnXTsKCQkJfQoJCX0KCQkkcG9kY2Fz dF91cmwgPSAoVFJVX1BPRENBU1RfVVNFX0RJUkVDVF9MSU5LUyA/ICRkaXJlY3RfdXJsIDog dHJ1X3BvZGNhc3RfZ2V0X3VybChhcnJheSgnZnVsbCcgPT4gJzEnKSkpOwoJCXJldHVybiB0 cnVfcG9kY2FzdF9nZW5lcmF0ZV9lbmNsb3N1cmUoJGRpcmVjdF91cmwsICRwb2RjYXN0X3Vy bCwgJGF0b20pOwoJfSBlbHNlIHsKCQlyZXR1cm47Cgl9Cn0KCgpmdW5jdGlvbiB0cnVfcG9k Y2FzdF9nZW5lcmF0ZV9lbmNsb3N1cmUoJGRpcmVjdF91cmwsICRwb2RjYXN0X3VybCwgJGF0 b20pIHsKCSRsZW5ndGggPSAkdHlwZSA9IGZhbHNlOwoKCSRoZWFkZXJzID0gdHJ1X3BvZGNh c3RfZ2V0X2hlYWRlcnNfZm9yKCRkaXJlY3RfdXJsKTsKCWlmICgkaGVhZGVycykgewoJCSR0 eXBlID0gJGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddOwoJCSRsZW5ndGggPSAkaGVhZGVyc1sn Y29udGVudC1sZW5ndGgnXTsKCX0KCgkkeG1sX21pZCA9ICgkdHlwZSA/ICIgdHlwZT1cIiR0 eXBlXCIiIDogIiIpIC4gKCRsZW5ndGggPyAiIGxlbmd0aD1cIiRsZW5ndGhcIiIgOiAiIik7 CglpZiAoJGF0b20pCgkJJHhtbCA9ICI8bGluayByZWw9XCJlbmNsb3N1cmVcIiBocmVmPVwi JHBvZGNhc3RfdXJsXCIiIC4gJHhtbF9taWQgLiAiIC8+IjsKCWVsc2UKCQkkeG1sID0gIjxl bmNsb3N1cmUgdXJsPVwiJHBvZGNhc3RfdXJsXCIiIC4gJHhtbF9taWQgLiAiIC8+IjsKCgly ZXR1cm4gJHhtbC5uOwp9CgoKZnVuY3Rpb24gdHJ1X3BvZGNhc3RfZ2V0X2hlYWRlcnNfZm9y KCR1cmwpIHsKCSRNQVhfUkVESVJFQ1RTID0gNTsKCSRTT0NLRVRfQ09OTkVDVF9USU1FT1VU ID0gMzsKCgkkcmVkaXJlY3RzID0gMDsKCXdoaWxlICgkcmVkaXJlY3RzKysgPCAkTUFYX1JF RElSRUNUUykgewoJCSRwYXJ0cyA9IHBhcnNlX3VybCgkdXJsKTsKCQkkZmlsZSA9ICRwYXJ0 c1sncGF0aCddIC4gKCRwYXJ0c1sncXVlcnknXSA/ICc/Jy4kcGFydHNbJ3F1ZXJ5J10gOiAn Jyk7CgkJJGhvc3QgPSAoJHBhcnRzWydob3N0J10gPyAkcGFydHNbJ2hvc3QnXSA6ICRfU0VS VkVSWydIVFRQX0hPU1QnXSk7CgkJJHBvcnQgPSAoaXNzZXQoJHBhcnRzWydwb3J0J10pID8g JHBhcnRzWydwb3J0J10gOiA4MCk7CgoJCSRmcCA9IEBmc29ja29wZW4oJGhvc3QsICRwb3J0 LCAkZXJyX251bSwgJGVycl9tc2csICRTT0NLRVRfQ09OTkVDVF9USU1FT1VUKTsKCQlpZiAo ISRmcCkKCQkJcmV0dXJuIGZhbHNlOwoKCQkkcmVzcG9uc2UgPSAnJzsKCQkkaGVhZCA9ICJI RUFEICRmaWxlIEhUVFAvMS4xXHJcbkhPU1Q6ICRob3N0XHJcblVzZXItQWdlbnQ6ICIgLiAk cGx1Z2luWyduYW1lJ10gLiAiLyIgLiAkcGx1Z2luWyd2ZXJzaW9uJ10gLiAiXHJcblxyXG4i OwoJCWZwdXRzKCRmcCwgJGhlYWQpOwoJCXdoaWxlICghZmVvZigkZnApICYmIHN0cnBvcygk cmVzcG9uc2UsICJcclxuXHJcbiIpID09IGZhbHNlKQoJCQkkcmVzcG9uc2UgLj0gZmdldHMo JGZwLCAyMDQ4KTsKCQlmY2xvc2UoJGZwKTsKCgkJLy91Z2x5CgkJcHJlZ19tYXRjaCgnLy4q KFswLTldezN9KS4qLycsICRyZXNwb25zZSwgJHJldHVybik7CgkJJGNvZGUgPSAkaGVhZGVy c1sncmVzcG9uc2UnXSA9ICRyZXR1cm5bMV07IC8vIEhUVFAgcmVzcG9uc2UgY29kZQoKCQlw cmVnX21hdGNoX2FsbCgnLyguKj8pOiAoLiopXHIvJywgJHJlc3BvbnNlLCAkbWF0Y2hlcyk7 CgkJJGNvdW50ID0gY291bnQoJG1hdGNoZXNbMV0pOwoJCWZvciAoJGkgPSAwOyAkaSA8ICRj b3VudDsgJGkrKykgewoJCQkka2V5ID0gc3RydG9sb3dlcigkbWF0Y2hlc1sxXVskaV0pOwoJ CQkkaGVhZGVyc1siJGtleSJdID0gJG1hdGNoZXNbMl1bJGldOwoJCX0KCgkJaWYgKCgnMzAy JyA9PSAkY29kZSB8fCAnMzAxJyA9PSAkY29kZSkgJiYgaXNzZXQoJGhlYWRlcnNbJ2xvY2F0 aW9uJ10pKQoJCQkkdXJsID0gJGhlYWRlcnNbJ2xvY2F0aW9uJ107CgkJZWxzZQoJCQlyZXR1 cm4gJGhlYWRlcnM7Cgl9CglyZXR1cm4gZmFsc2U7Cn0KCiI7czo4OiJoZWxwX3JhdyI7czoz OTM6IlRvIGxlYXJuIG1vcmUgYWJvdXQgdHJ1X3BvZGNhc3QsIGNoZWNrIG91dCB0aGUgImlu dHJvZHVjdG9yeSBhcnRpY2xlIjpodHRwOi8vd3d3LnRydWlzdC5jb20vYmxvZy81NDIvdHJ1 X3BvZGNhc3QtYS1wb2RjYXN0aW5nLXBsdWdpbi1mb3ItdGV4dHBhdHRlcm4sICJyZWxlYXNl cyBwYWdlIjpodHRwOi8vd3d3LnRydWlzdC5jb20vcmVmZXJlbmNlLzUzOS90cnVfcG9kY2Fz dC1yZWxlYXNlcywgImZlYXR1cmUgbGlzdCI6aHR0cDovL3d3dy50cnVpc3QuY29tL3JlZmVy ZW5jZS81NDAvdHJ1X3BvZGNhc3QtZmVhdHVyZS1saXN0LCBhbmQgInVzYWdlIGluc3RydWN0 aW9ucyI6aHR0cDovL3d3dy50cnVpc3QuY29tL3JlZmVyZW5jZS81NDEvdHJ1X3BvZGNhc3Qt dXNhZ2UtaW5zdHJ1Y3Rpb25zLiI7czozOiJtZDUiO3M6MzI6IjQ2MTM5NDVhOWQ3OWU1YTQ2 NTQwNzFjNWJmMTI1ZGVlIjt9