Skip to content

Commit

Permalink
Paginas duplicadas mangáhost. Conversor PNG
Browse files Browse the repository at this point in the history
- Esse commit basicamente faz o trabalho da mangá host e nao baixa paginas obviamente duplicadas
- Dá prefencia a imagens PNG e também agora converte pra PNG, preferi por qualidade em vez de tamanho de arquivo.
- Pequenas mudanças na sáida.
  • Loading branch information
samuelhnrq committed Mar 9, 2017
1 parent 771f90d commit 1196900
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 11 deletions.
19 changes: 10 additions & 9 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@ package main
import (
"flag"
"fmt"
"image/png"
"io"
"log"
"net/http"
"os"
"strconv"
"strings"

"image/jpeg"

"github.com/samosaara/gomanga/providers"
"golang.org/x/image/webp"
)
Expand Down Expand Up @@ -126,9 +125,9 @@ func search(manga string, src providers.Provedor) {
for i, v := range results {
fmt.Printf(" - %02d) %s\n", i+1, v)
}
fmt.Printf("Especifique esse provedor com a opcao -site")
fmt.Printf("Especifique esse provedor com a opcao -site\n")
} else {
fmt.Printf("Nenhum mangá encontrado em %s\n", provid)
fmt.Printf("Nenhum mangá encontrado em %s\n\n", provid)
}
}
}
Expand Down Expand Up @@ -198,17 +197,18 @@ func download() {

//Novos edge-cases de extensões diferenciadas podem ser adicionadas sem alterar muito do código
if originalExt == ".webp" {
destFilename += ".jpg"
fFile, isNew := createIfNotExists(destPath + ".jpg")
destFilename += ".png"
fFile, isNew := createIfNotExists(destPath + ".png")

if isNew {
img, err := http.Get(imgURL)
handle(err)
log.Println("Página está em .webp baixando e convertendo antes de escrever ao disco.")
webpImg, err := webp.Decode(img.Body)
handle(err)
jpeg.Encode(fFile, webpImg, nil)
log.Printf("%s convertida para JPG e escrita no disco com sucesso. Iniciando download da prox. pagina.", destFilename)
png.Encode(fFile, webpImg)
log.Printf("%s convertida para PNG e escrita no disco com sucesso.", destFilename)
log.Println("Iniciando download da prox. pagina.")
img.Body.Close()
fFile.Close()
continue
Expand All @@ -233,7 +233,8 @@ func download() {
continue
}
if !isNew && !Substituir {
log.Printf("Arquivo %s já existe. Ignorando. Adicione -r para substituir.\n", destFilename)
log.Printf("Arquivo %s já existe. Ignorando.", destFilename)
log.Println("Adicione -r para substituir.")
}
}
}
34 changes: 32 additions & 2 deletions providers/mangahost.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,21 +82,51 @@ func (u *mangaHost) ListImgURL() []string {
}
if line[:len(bullseye)] == bullseye {
bullseye = line[15 : len(line)-3]
bullseye = strings.Replace(bullseye, "\",\"", " \n", -1)
break
}
}
resh, err = goquery.NewDocumentFromReader(bytes.NewReader([]byte(bullseye)))
handle(err)
paginas := resh.Find("img[id]")
log.Println(paginas.Length(), "páginas encontradas, disponiveis pra download")
log.Println(paginas.Length(), "páginas encontradas, disponiveis, possiveis duplicadas. Filtrando.")
uniqPages := make(map[string]string)
paginas = paginas.Each(func(a int, sel *goquery.Selection) {
imgURL, exis := sel.Attr("src")
if !exis {
log.Panic("Mudança no layout. propriedadade src nao contem mais a URL no MangaHost. Mande um commit com isso")
return
}
urls = append(urls, imgURL)
// Filtra a URL pra pegar o nome do arquivo sem qualquer extenção
noExtName := imgURL[strings.LastIndex(imgURL, "/")+1:]
noExtName = noExtName[:strings.Index(noExtName, ".")]
// Se o arquivo nao está no mapa ou é um PNG
if uniqPages[noExtName] == "" {
uniqPages[noExtName] = imgURL
} else if strings.Contains(imgURL, noExtName+".png") {
old := uniqPages[noExtName]
uniqPages[noExtName] = imgURL
// Se nao for um numero já adiciona diretamente
_, err := strconv.Atoi(noExtName)
if err != nil {
urls = append(urls, imgURL)
for l := 0; l < len(imgURL); l++ {
if urls[l] == old {
urls = append(urls[:l], urls[l+1:]...)
}
}
}
}
})
for k := 1; k <= len(uniqPages); k++ {
if uniqPages[fmt.Sprintf("%02d", k)] != "" {
urls = append(urls, uniqPages[fmt.Sprintf("%02d", k)])
}
}
if paginas.Length() != len(urls) {
log.Printf("%d duplicadas encontradas e filtradas. %d paginas totais. \n",
(paginas.Length() - len(uniqPages)), len(urls))
}
return urls
}

Expand Down

0 comments on commit 1196900

Please sign in to comment.