Pokazywanie postów oznaczonych etykietą jQuery. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą jQuery. Pokaż wszystkie posty

wtorek, 13 sierpnia 2013

Szybki projekt flv2mp3.pl

Witam.

niedawno rozwinąłem wraz z bratem nowy szybki projekt pod szyldem Flv2mp3. Jest to strona internetowa na której po podaniu linku do serwisu YouTube otrzymujemy link do pobrania mp3.

Projekt jest banalny w wykonaniu i składa się z kilku kroków. Potrzebujemy serwera dedykowanego i następujących bibliotek.
- youtube-dl
- lame
- ffmpeg

W mojej konfiguracji serwera był pewien problem z biblioteką lame ponieważ jest była ona dla mojego serwera z nieznanego repozytorium dlatego potrzebowałem dodać je i pobrać dostępne paczki przy pomocy apt-get update.

Bibliotekę lame wykorzystuje do ustawienia tytułu oraz okładki każdej mp3.

Po wypuszczeniu strony w wersji testowej w trakcie użytkowania pojawił się problem. Silnik youtbue-dl wymagał aktualizacji, youtube zmienił coś w swoim działaniu. Aby zapobiec temu na przyszłość dodałem zadanie Cron które wykonuje się codziennie "youtube-dl -U" i aktualizuje silnik pobierania z YouTube.

Zapraszam do zabawy ze stroną i testowania mechanizmu.


sobota, 26 stycznia 2013

Pobieranie treści ze strony. Przykład filmweb.

Wstęp... Czyli coś co możesz pominąć >>


Pobieranie treści strony to musi być wcale mozolne jeśli użyjemy do tego głowy. Widziałem wiele przykładów, które wykorzystują wyrażenia regularne, sam kiedyś ich używałem, tak więc sprawdziłem to empirycznie. Jest to bardzo skomplikowany sposób, łatwo się w nim pogubić, ponieważ wszystkie elementy DOM strony traktujemy jako ciąg znaków. Zaprezentuje wam alternatywną metodę, która wykorzystuje jQuery i porusza się po elementach DOM strony (jest wiele wiele szybsza). Nie pokaże wam jak robi się to przy pomocy wyrażeń regularnych ponieważ szkoda mi czasu, poza tym przestałem ich używać.

Krok pierwszy

Pierwszą rzeczą jaką musimy zrobić to załadować stronę z której chcemy wyciągnąć informacje do iframe. Tutaj ważna uwaga, aby dostać się do treści iframe adres musi być na tej samej domenie. Jak to zrobić skoro nasza domena to naszadomena.pl, a treść strony, którą chcemy pobrać znajduje się pod adresem filmweb.pl? Istnieje prosta metoda (Cross-Domain), musimy zrobić plik pobierz.php na naszym serwerze, który pobierze treść filmweb.


<?php

$after = $_GET['after'];

// Pobiera filmweb z parametrami after. 
$file = file_get_contents('http://www.filmweb.pl/'.$after, false);

echo $file;
?>

korzystanie z tego pliku będzie następujące.
Adres http://www.filmweb.pl/film/Niemo%C5%BCliwe-2012-586390 
odpowiada adresowi http://twojadomena.pl/?after=film/Niemo%C5%BCliwe-2012-586390

Przygotowanie Html

Gdy przygotujemy nasz plik zabieramy się za stworzenie pliku ładującego naszego iframa oraz przeglądającego jego zawartość. W tym miejscu musimy dodać do naszego pliku w sekcji head bibliotekę jQuery.

<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>

Następnie w sekcji body dodajemy iframe ze stroną, która chcemy pobrać.


<iframe src="http://naszadomena.pl/pobierz.php?after=film/Niemo%C5%BCliwe-2012-586390" style="display:none;"></iframe>

Przygotowanie JavaScirpt

Oraz kod Java Scirpt, który czeka na załadowanie iframe, a następnie przeszukuje go pod kątem potrzebnych nam informacji. W tym przykładzie wykorzystałem selektory jQuery oraz funkcję contents(), która pozwala mi dobrać się do wnętrza iframe. 

<script>
window.onload = function() {
$iframe = $('iframe').contents();

alert( $iframe.find('div.posterLightbox > a > img').attr('src') ); //adres miniatury
alert( $iframe.find('div.filmTitle h1 > a').text() ); // tytuł
alert( $iframe.find('span#filmYear').text() ); // rok wydania
alert( $iframe.find('div.pageBox > p.text.longText').text() + $iframe.find('div.pageBox > span.fullText hide').text() ); // pełen opis filmu
alert( parseFloat($iframe.find('span.filmRate > strong').text()) ); // ocena filmu

}
</script>



PS. nie wiem w jakiej czasoprzestrzeni będziesz czytał ten post... Dlatego uprzedzam się, że selektory mogą się zmienić dla wszystkich tych danych. Selektory napisałem w dniu (2013 - 01 - 26). Ich aktualizacja jest znacznie prostsza i szybsza niż w przypadku wyrażeń regularnych. Wierze, że z odrobiną determinacji sobie poradzisz. Pytania zostaw w komentarzu.