{"id":39919143,"url":"https://github.com/gabriersdev/link-pra-download-drive","last_synced_at":"2026-01-18T17:07:36.572Z","repository":{"id":321861154,"uuid":"1087444784","full_name":"gabriersdev/link-pra-download-drive","owner":"gabriersdev","description":"Cria link para download ou visualização a partir de link de compartilhamento ou id do Google Drive.","archived":false,"fork":false,"pushed_at":"2025-10-31T23:41:17.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-01T01:16:50.694Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gabriersdev.github.io/link-pra-download-drive","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gabriersdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-31T23:31:28.000Z","updated_at":"2025-10-31T23:41:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gabriersdev/link-pra-download-drive","commit_stats":null,"previous_names":["gabriersdev/link-pra-download-drive"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/gabriersdev/link-pra-download-drive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriersdev%2Flink-pra-download-drive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriersdev%2Flink-pra-download-drive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriersdev%2Flink-pra-download-drive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriersdev%2Flink-pra-download-drive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabriersdev","download_url":"https://codeload.github.com/gabriersdev/link-pra-download-drive/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabriersdev%2Flink-pra-download-drive/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28543823,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T14:59:57.589Z","status":"ssl_error","status_checked_at":"2026-01-18T14:59:46.540Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-18T17:07:34.776Z","updated_at":"2026-01-18T17:07:36.565Z","avatar_url":"https://github.com/gabriersdev.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Link para Download - Google Drive\n\nFerramenta simples para gerar links de download ou visualização diretos a partir de links de compartilhamento ou IDs do Google Drive, usando apenas HTML, CSS e JavaScript puro (sem frameworks).\n\n## 📋 Sobre o Projeto\n\nEste projeto fornece uma solução básica para converter links de compartilhamento do Google Drive em links diretos de download ou visualização. Ideal para facilitar o acesso a arquivos compartilhados sem a necessidade de abrir a interface do Google Drive.\n\n## 🎯 Funcionalidades\n\n- ✅ Converter link de compartilhamento do Google Drive em link de download direto\n- ✅ Converter link de compartilhamento do Google Drive em link de visualização direto\n- ✅ Extrair ID do arquivo a partir de diferentes formatos de URL do Google Drive\n- ✅ Interface simples usando apenas HTML, CSS e JavaScript\n- ✅ Sem dependências de frameworks ou bibliotecas externas\n\n## 🚀 Como Funciona\n\n### Formatos de Link do Google Drive\n\nO Google Drive usa diferentes formatos de URL para compartilhamento:\n\n```\nhttps://drive.google.com/file/d/FILE_ID/view?usp=sharing\nhttps://drive.google.com/open?id=FILE_ID\nhttps://drive.google.com/uc?id=FILE_ID\n```\n\n### Conversão para Links Diretos\n\n**Link de Download Direto:**\n```\nhttps://drive.google.com/uc?export=download\u0026id=FILE_ID\n```\n\n**Link de Visualização Direta:**\n```\nhttps://drive.google.com/uc?export=view\u0026id=FILE_ID\n```\n\n**Link de Preview (Visualização Embutida):**\n```\nhttps://drive.google.com/file/d/FILE_ID/preview\n```\n\n## 💻 Implementação Básica\n\n### HTML\n\n```html\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"pt-BR\"\u003e\n\u003chead\u003e\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003ctitle\u003eGerador de Link - Google Drive\u003c/title\u003e\n    \u003clink rel=\"stylesheet\" href=\"style.css\"\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n    \u003cdiv class=\"container\"\u003e\n        \u003ch1\u003eGerador de Link do Google Drive\u003c/h1\u003e\n        \n        \u003cdiv class=\"input-group\"\u003e\n            \u003clabel for=\"driveLink\"\u003eCole o link ou ID do Google Drive:\u003c/label\u003e\n            \u003cinput type=\"text\" id=\"driveLink\" placeholder=\"https://drive.google.com/file/d/... ou apenas o ID\"\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"button-group\"\u003e\n            \u003cbutton onclick=\"generateDownloadLink()\"\u003eGerar Link de Download\u003c/button\u003e\n            \u003cbutton onclick=\"generateViewLink()\"\u003eGerar Link de Visualização\u003c/button\u003e\n            \u003cbutton onclick=\"generatePreviewLink()\"\u003eGerar Link de Preview\u003c/button\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv id=\"result\" class=\"result\"\u003e\u003c/div\u003e\n    \u003c/div\u003e\n    \n    \u003cscript src=\"script.js\"\u003e\u003c/script\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\n### CSS (style.css)\n\n```css\n* {\n    margin: 0;\n    padding: 0;\n    box-sizing: border-box;\n}\n\nbody {\n    font-family: Arial, sans-serif;\n    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n    min-height: 100vh;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    padding: 20px;\n}\n\n.container {\n    background: white;\n    padding: 40px;\n    border-radius: 10px;\n    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);\n    max-width: 600px;\n    width: 100%;\n}\n\nh1 {\n    color: #333;\n    margin-bottom: 30px;\n    text-align: center;\n}\n\n.input-group {\n    margin-bottom: 20px;\n}\n\nlabel {\n    display: block;\n    margin-bottom: 8px;\n    color: #555;\n    font-weight: bold;\n}\n\ninput[type=\"text\"] {\n    width: 100%;\n    padding: 12px;\n    border: 2px solid #ddd;\n    border-radius: 5px;\n    font-size: 14px;\n    transition: border-color 0.3s;\n}\n\ninput[type=\"text\"]:focus {\n    outline: none;\n    border-color: #667eea;\n}\n\n.button-group {\n    display: flex;\n    gap: 10px;\n    flex-wrap: wrap;\n    margin-bottom: 20px;\n}\n\nbutton {\n    flex: 1;\n    min-width: 150px;\n    padding: 12px 20px;\n    background: #667eea;\n    color: white;\n    border: none;\n    border-radius: 5px;\n    font-size: 14px;\n    cursor: pointer;\n    transition: background 0.3s;\n}\n\nbutton:hover {\n    background: #5568d3;\n}\n\n.result {\n    padding: 15px;\n    background: #f5f5f5;\n    border-radius: 5px;\n    min-height: 50px;\n    word-wrap: break-word;\n}\n\n.result.success {\n    background: #d4edda;\n    border: 1px solid #c3e6cb;\n    color: #155724;\n}\n\n.result.error {\n    background: #f8d7da;\n    border: 1px solid #f5c6cb;\n    color: #721c24;\n}\n\n.result a {\n    color: #667eea;\n    text-decoration: none;\n    font-weight: bold;\n}\n\n.result a:hover {\n    text-decoration: underline;\n}\n```\n\n### JavaScript (script.js)\n\n```javascript\n/**\n * Extrai o ID do arquivo do Google Drive de diferentes formatos de URL\n * @param {string} input - Link do Google Drive ou ID direto\n * @returns {string|null} - ID do arquivo ou null se não encontrado\n */\nfunction extractFileId(input) {\n    // Remove espaços em branco\n    input = input.trim();\n    \n    // Se for apenas o ID (string alfanumérica)\n    if (/^[a-zA-Z0-9_-]+$/.test(input)) {\n        return input;\n    }\n    \n    // Padrões de URL do Google Drive\n    const patterns = [\n        /\\/file\\/d\\/([a-zA-Z0-9_-]+)/,           // /file/d/ID\n        /id=([a-zA-Z0-9_-]+)/,                   // id=ID\n        /\\/folders\\/([a-zA-Z0-9_-]+)/,           // /folders/ID\n        /^([a-zA-Z0-9_-]+)$/                     // apenas ID\n    ];\n    \n    for (const pattern of patterns) {\n        const match = input.match(pattern);\n        if (match \u0026\u0026 match[1]) {\n            return match[1];\n        }\n    }\n    \n    return null;\n}\n\n/**\n * Gera link de download direto\n */\nfunction generateDownloadLink() {\n    const input = document.getElementById('driveLink').value;\n    const fileId = extractFileId(input);\n    \n    if (!fileId) {\n        showResult('Erro: Não foi possível extrair o ID do arquivo. Verifique o link ou ID fornecido.', 'error');\n        return;\n    }\n    \n    const downloadLink = `https://drive.google.com/uc?export=download\u0026id=${fileId}`;\n    showResult(`Link de download gerado com sucesso!\u003cbr\u003e\u003cbr\u003e\u003ca href=\"${downloadLink}\" target=\"_blank\"\u003e${downloadLink}\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e\u003cbutton onclick=\"copyToClipboard('${downloadLink}')\"\u003eCopiar Link\u003c/button\u003e`, 'success');\n}\n\n/**\n * Gera link de visualização direta\n */\nfunction generateViewLink() {\n    const input = document.getElementById('driveLink').value;\n    const fileId = extractFileId(input);\n    \n    if (!fileId) {\n        showResult('Erro: Não foi possível extrair o ID do arquivo. Verifique o link ou ID fornecido.', 'error');\n        return;\n    }\n    \n    const viewLink = `https://drive.google.com/uc?export=view\u0026id=${fileId}`;\n    showResult(`Link de visualização gerado com sucesso!\u003cbr\u003e\u003cbr\u003e\u003ca href=\"${viewLink}\" target=\"_blank\"\u003e${viewLink}\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e\u003cbutton onclick=\"copyToClipboard('${viewLink}')\"\u003eCopiar Link\u003c/button\u003e`, 'success');\n}\n\n/**\n * Gera link de preview (visualização embutida)\n */\nfunction generatePreviewLink() {\n    const input = document.getElementById('driveLink').value;\n    const fileId = extractFileId(input);\n    \n    if (!fileId) {\n        showResult('Erro: Não foi possível extrair o ID do arquivo. Verifique o link ou ID fornecido.', 'error');\n        return;\n    }\n    \n    const previewLink = `https://drive.google.com/file/d/${fileId}/preview`;\n    showResult(`Link de preview gerado com sucesso!\u003cbr\u003e\u003cbr\u003e\u003ca href=\"${previewLink}\" target=\"_blank\"\u003e${previewLink}\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e\u003cbutton onclick=\"copyToClipboard('${previewLink}')\"\u003eCopiar Link\u003c/button\u003e`, 'success');\n}\n\n/**\n * Exibe o resultado na tela\n * @param {string} message - Mensagem a ser exibida\n * @param {string} type - Tipo da mensagem (success ou error)\n */\nfunction showResult(message, type) {\n    const resultDiv = document.getElementById('result');\n    resultDiv.innerHTML = message;\n    resultDiv.className = `result ${type}`;\n}\n\n/**\n * Copia texto para a área de transferência\n * @param {string} text - Texto a ser copiado\n */\nfunction copyToClipboard(text) {\n    navigator.clipboard.writeText(text).then(() =\u003e {\n        alert('Link copiado para a área de transferência!');\n    }).catch(err =\u003e {\n        console.error('Erro ao copiar:', err);\n        alert('Erro ao copiar o link. Por favor, copie manualmente.');\n    });\n}\n```\n\n## 📖 Como Usar\n\n1. **Clone ou baixe este repositório**\n   ```bash\n   git clone https://github.com/gabriersdev/link-pra-download-drive.git\n   ```\n\n2. **Abra o arquivo `index.html` no navegador**\n   - Não é necessário servidor web\n   - Funciona diretamente abrindo o arquivo HTML\n\n3. **Cole um link ou ID do Google Drive**\n   - Exemplo de link: `https://drive.google.com/file/d/1ABC123xyz/view?usp=sharing`\n   - Exemplo de ID: `1ABC123xyz`\n\n4. **Clique no botão desejado:**\n   - **Gerar Link de Download**: Para baixar o arquivo diretamente\n   - **Gerar Link de Visualização**: Para visualizar o arquivo no navegador\n   - **Gerar Link de Preview**: Para visualizar o arquivo embutido (útil para iframes)\n\n5. **Copie o link gerado** e use onde precisar\n\n## 🔍 Exemplos de Uso\n\n### Exemplo 1: Converter Link de Compartilhamento\n\n**Entrada:**\n```\nhttps://drive.google.com/file/d/1a2b3c4d5e6f7g8h9i0j/view?usp=sharing\n```\n\n**Saída (Download):**\n```\nhttps://drive.google.com/uc?export=download\u0026id=1a2b3c4d5e6f7g8h9i0j\n```\n\n### Exemplo 2: Usar Apenas o ID\n\n**Entrada:**\n```\n1a2b3c4d5e6f7g8h9i0j\n```\n\n**Saída (Visualização):**\n```\nhttps://drive.google.com/uc?export=view\u0026id=1a2b3c4d5e6f7g8h9i0j\n```\n\n### Exemplo 3: Preview para Iframe\n\n**Entrada:**\n```\nhttps://drive.google.com/open?id=1a2b3c4d5e6f7g8h9i0j\n```\n\n**Saída (Preview):**\n```\nhttps://drive.google.com/file/d/1a2b3c4d5e6f7g8h9i0j/preview\n```\n\n**Uso em iframe:**\n```html\n\u003ciframe src=\"https://drive.google.com/file/d/1a2b3c4d5e6f7g8h9i0j/preview\" width=\"640\" height=\"480\"\u003e\u003c/iframe\u003e\n```\n\n## ⚠️ Limitações e Considerações\n\n- **Permissões**: O arquivo no Google Drive deve estar configurado como \"Qualquer pessoa com o link\" para que os links diretos funcionem\n- **Tamanho do arquivo**: Arquivos muito grandes podem exigir confirmação adicional do Google Drive\n- **Tipo de arquivo**: Alguns tipos de arquivo podem não suportar visualização direta\n- **Quota do Google**: Downloads massivos podem atingir limites de quota do Google Drive\n\n## 🛠️ Tecnologias Utilizadas\n\n- **HTML5**: Estrutura da página\n- **CSS3**: Estilização e design responsivo\n- **JavaScript (ES6+)**: Lógica de extração de ID e geração de links\n- **Sem frameworks**: Código puro, sem dependências externas\n\n## 📁 Estrutura do Projeto\n\n```\nlink-pra-download-drive/\n│\n├── index.html          # Página principal\n├── style.css           # Estilos CSS\n├── script.js           # Lógica JavaScript\n└── README.md           # Documentação\n```\n\n## 🤝 Contribuindo\n\nContribuições são bem-vindas! Sinta-se à vontade para:\n\n1. Fazer um fork do projeto\n2. Criar uma branch para sua feature (`git checkout -b feature/NovaFuncionalidade`)\n3. Commit suas mudanças (`git commit -m 'Adiciona nova funcionalidade'`)\n4. Push para a branch (`git push origin feature/NovaFuncionalidade`)\n5. Abrir um Pull Request\n\n## 📝 Licença\n\nEste projeto é open source e está disponível para uso livre.\n\n## 👨‍💻 Autor\n\nDesenvolvido com ❤️ para facilitar o compartilhamento de arquivos do Google Drive.\n\n**Nota**: Este projeto é uma ferramenta educacional e de utilidade. Certifique-se de respeitar as políticas de uso do Google Drive e os direitos autorais dos arquivos compartilhados.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabriersdev%2Flink-pra-download-drive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabriersdev%2Flink-pra-download-drive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabriersdev%2Flink-pra-download-drive/lists"}