{"id":5795,"date":"2026-05-31T01:29:15","date_gmt":"2026-05-31T04:29:15","guid":{"rendered":"https:\/\/contraluzarte.com\/?page_id=5795"},"modified":"2026-05-31T02:00:47","modified_gmt":"2026-05-31T05:00:47","slug":"biblioteca-contraluz","status":"publish","type":"page","link":"https:\/\/contraluzarte.com\/esp\/biblioteca-contraluz\/","title":{"rendered":"Biblioteca ContraLuz"},"content":{"rendered":"\n<div class=\"wp-block-cover alignfull is-light\" style=\"border-style:none;border-width:0px;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-100 has-background-dim\" style=\"background-color:#fffbf0\"><\/span><div class=\"wp-block-cover__inner-container has-global-padding is-layout-constrained wp-block-cover-is-layout-constrained\">\n<section id=\"acervo-videos\" class=\"clz-video-archive\">\n\n\n\n<section class=\"clz-video-archive\">\n\n    <div class=\"clz-video-container\">\n\n        <div class=\"clz-video-label\">\n            Biblioteca ContraLuz\n        <\/div>\n\n        <h1 class=\"clz-video-title\">\n            Acervo de V\u00eddeos\n        <\/h1>\n\n        <p class=\"clz-video-intro\">\n            Aulas abertas, encontros com fot\u00f3grafxs, conversas com especialistas e registros de atividades do ContraLuz sobre arte e fotografia na Am\u00e9rica Latina.\n        <\/p>\n\n        <div id=\"clz-youtube-videos\" class=\"clz-video-grid\">\n            Carregando v\u00eddeos&#8230;\n        <\/div>\n\n    <\/div>\n\n<\/section>\n\n<style>\n\n.clz-video-archive{\n    background:#fffbf0;\n    padding:100px 40px;\n    color:#1e4e5f;\n}\n\n.clz-video-container{\n    max-width:1200px;\n    margin:0 auto;\n}\n\n.clz-video-label{\n    color:#802929;\n    text-transform:uppercase;\n    letter-spacing:.14em;\n    font-size:14px;\n    font-weight:700;\n    margin-bottom:18px;\n}\n\n.clz-video-title{\n    color:#802929;\n    font-size:78px;\n    line-height:1;\n    margin:0 0 28px 0;\n}\n\n.clz-video-intro{\n    color:#1e4e5f;\n    font-size:22px;\n    line-height:1.6;\n    max-width:850px;\n    margin-bottom:60px;\n}\n\n.clz-video-grid{\n    display:grid;\n    grid-template-columns:repeat(2,1fr);\n    gap:42px 34px;\n}\n\n.clz-video-card{\n    display:block;\n    text-decoration:none;\n    color:#1e4e5f;\n    transition:.25s ease;\n}\n\n.clz-video-card:hover{\n    transform:translateY(-4px);\n    opacity:.9;\n}\n\n.clz-video-thumb{\n    aspect-ratio:16\/9;\n    overflow:hidden;\n    background:#1e4e5f;\n    margin-bottom:18px;\n}\n\n.clz-video-thumb img{\n    width:100%;\n    height:100%;\n    object-fit:cover;\n    display:block;\n}\n\n.clz-video-meta{\n    display:flex;\n    gap:10px;\n    align-items:center;\n    margin-bottom:10px;\n}\n\n.clz-video-type{\n    color:#802929;\n    text-transform:uppercase;\n    letter-spacing:.12em;\n    font-size:12px;\n    font-weight:700;\n}\n\n.clz-video-lang{\n    display:inline-block;\n    padding:5px 10px;\n    border-radius:999px;\n    font-size:11px;\n    font-weight:700;\n    letter-spacing:.08em;\n    color:#fffbf0;\n}\n\n.clz-video-lang.port{\n    background:#802929;\n}\n\n.clz-video-lang.esp{\n    background:#1e4e5f;\n}\n\n.clz-video-card h2{\n    color:#1e4e5f;\n    font-size:24px;\n    line-height:1.25;\n    margin:0;\n    font-weight:500;\n}\n\n@media(max-width:900px){\n\n    .clz-video-archive{\n        padding:70px 20px;\n    }\n\n    .clz-video-title{\n        font-size:46px;\n    }\n\n    .clz-video-intro{\n        font-size:18px;\n    }\n\n    .clz-video-grid{\n        grid-template-columns:1fr;\n    }\n\n    .clz-video-card h2{\n        font-size:22px;\n        font-weight:500;\n    }\n\n}\n\n<\/style>\n\n<script>\n\nconst channelId = \"UC7XbmGZnw1WVZupH6_U5oaQ\";\nconst feedUrl = \"https:\/\/www.youtube.com\/feeds\/videos.xml?channel_id=\" + channelId;\nconst apiUrl = \"https:\/\/api.rss2json.com\/v1\/api.json?rss_url=\" + encodeURIComponent(feedUrl);\n\nfunction limparTitulo(titulo){\n    return titulo\n        .replace(\/\\[PORT\\]\/gi,'')\n        .replace(\/\\[PT\\]\/gi,'')\n        .replace(\/\\[ESP\\]\/gi,'')\n        .replace(\/\\[ES\\]\/gi,'')\n        .replace(\/Aula Aberta:\/gi,'')\n        .replace(\/Aula aberta:\/gi,'')\n        .replace(\/Encontro:\/gi,'')\n        .replace(\/Conversa:\/gi,'')\n        .trim();\n}\n\nfunction detectarIdioma(titulo){\n\n    const t = titulo.toLowerCase();\n\n    if(\n        t.includes('[esp]') ||\n        t.includes('[es]') ||\n        t.includes('espanhol') ||\n        t.includes('espa\u00f1ol') ||\n        t.includes('charlas') ||\n        t.includes('cubanxs')\n    ){\n        return {\n            texto:'ESP',\n            classe:'esp'\n        };\n    }\n\n    return {\n        texto:'PORT',\n        classe:'port'\n    };\n}\n\nfetch(apiUrl)\n.then(response => response.json())\n.then(data => {\n\n    const container = document.getElementById(\"clz-youtube-videos\");\n\n    if(!data.items || data.items.length === 0){\n        container.innerHTML = \"Nenhum v\u00eddeo encontrado no momento.\";\n        return;\n    }\n\n    let html = \"\";\n\n    data.items.forEach(video => {\n\n        const videoId = video.link.split(\"v=\")[1];\n        const thumbnail = \"https:\/\/img.youtube.com\/vi\/\" + videoId + \"\/hqdefault.jpg\";\n\n        const idioma = detectarIdioma(video.title);\n        const tituloLimpo = limparTitulo(video.title);\n\n        html += `\n\n            <a class=\"clz-video-card\" href=\"${video.link}\" target=\"_blank\">\n\n                <div class=\"clz-video-thumb\">\n                    <img decoding=\"async\" src=\"${thumbnail}\" alt=\"${tituloLimpo}\">\n                <\/div>\n\n                <div class=\"clz-video-meta\">\n\n                    <div class=\"clz-video-type\">\n                        V\u00eddeo\n                    <\/div>\n\n                    <div class=\"clz-video-lang ${idioma.classe}\">\n                        ${idioma.texto}\n                    <\/div>\n\n                <\/div>\n\n                <h2>\n                    ${tituloLimpo}\n                <\/h2>\n\n            <\/a>\n\n        `;\n\n    });\n\n    container.innerHTML = html;\n\n})\n.catch(error => {\n\n    document.getElementById(\"clz-youtube-videos\").innerHTML =\n        \"N\u00e3o foi poss\u00edvel carregar os v\u00eddeos no momento.\";\n\n});\n\n<\/script>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"class_list":["post-5795","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/contraluzarte.com\/esp\/wp-json\/wp\/v2\/pages\/5795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contraluzarte.com\/esp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/contraluzarte.com\/esp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/contraluzarte.com\/esp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/contraluzarte.com\/esp\/wp-json\/wp\/v2\/comments?post=5795"}],"version-history":[{"count":11,"href":"https:\/\/contraluzarte.com\/esp\/wp-json\/wp\/v2\/pages\/5795\/revisions"}],"predecessor-version":[{"id":5810,"href":"https:\/\/contraluzarte.com\/esp\/wp-json\/wp\/v2\/pages\/5795\/revisions\/5810"}],"wp:attachment":[{"href":"https:\/\/contraluzarte.com\/esp\/wp-json\/wp\/v2\/media?parent=5795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}