Chcę uzyskać obrazy z wydań Discogs. Czy mogę to zrobić bez interfejsu Discogs API? Nie mają linków do obrazów w ich zrzutach db.Jak uzyskać obrazy z Discogs?
Odpowiedz
Aby to zrobić bez interfejsu API, należy załadować stronę internetową i wyodrębnić obraz z kodu html z kodem źródłowym. Możesz znaleźć odpowiednią stronę, ładując https://www.discogs.com/release/xxxx
gdzie xxxx
jest numerem wydania. Ponieważ html jest po prostu plikiem tekstowym, możesz teraz wyodrębnić URL jpeg.
Nie wiem, jaki jest twój język programowania, ale jestem pewien, że obsługuje on funkcje String, takie jak indexOf
i subString
. Można wyodrębnić zawartość html do obrazu OG:Image
.
Więc biorąc przykład: https://www.discogs.com/release/8140515
- Znajdź
.indexOf("og:image\" content=\");
startPos
Zapisz jako w pewnym całkowitej. - To 19 znaków, więc następnie wykonaj
.indexOf(".jpg", startPos + 19);
wendPos
.
To pierwsze wystąpienie .jpg po indeksie startPos + 19 dowolnych innych znaków. Teraz wyodrębnić podciąg z tekstu html
img_URL = myHtmlStr.substring(startPos+19, endPos);
Należy skończyć z ciągiem przeczytaniu tak poniżej (wyodrębniony URL):
https://img.discogs.com/_zHBK73yJ5oON197YTDXM7JoBjA=/fit-in/600x600/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/R-8140515-1460073064-5890.jpeg.jpgProces ten może zostać skrócony do znalezienia startPos indeks
https://img.
, następnie znajdź pierwsze wystąpienie.jpg
podczas wyszukiwania od tego indeksu startPos. Wyciąg w tym zakresie długości. To dlatego, że adres URL obrazu jest mowa tylko w kodzie HTML nahttps://img.
Porównaj stronę na: https://www.discogs.com/release/8140515 z ekstrahowanej URL obrazka poniżej.
** Uwaga: ** Być może trzeba dostroić te numery indeksowe Poz. np .: Możesz zmienić z ** + 19 ** na ** + 21 **, aby odciąć cudzysłowy itp (** w razie potrzeby ** przez twoje narzędzie do kodowania). Dowiesz się, kiedy testujesz ... –
Próbujesz pobrać obrazy wielu wydań, czy dyski Discogs nie blokują automatycznego dostępu? – Collector
@Collector, nie sądzę (chyba, że możesz pokazać inaczej). Dostęp nie był zablokowany dla żadnego mojego testowego kodu AS3 lub kodu PHP. Każdy załadowany 5 obrazów tylko do sprawdzenia ścieżek jest poprawnie przetwarzany. –