Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: download part of remote files

by rpc (Monk)
on Mar 08, 2001 at 01:01 UTC ( #62826=note: print w/replies, xml ) Need Help??


in reply to download part of remote files

This is a very vague question.

  1. What kind of server?
  2. What transfer protocol?
  3. Why exactly do you need to do this?

Replies are listed 'Best First'.
Re: Re: download part of remote files
by rmckillen (Novice) on Mar 08, 2001 at 01:55 UTC
    I know that LWP can be used to download files from a remote server, something like:
    $file = HTTP::Request->new(GET => 'http://www.server.com/filename.mp3' +);
    The last 128 bytes of an mp3 contain information about the file such as length, artist, song, etc. I want to download only the last 128 bytes so I can get to this information and store it in a mysql database.

    So I guess my question is, what do I replace that line of code with so it only gets the last 128 bytes?

      RFC2068 (HTTP/1.1) describes a partial-content protocol. If a response comes back with "Accept-Ranges: bytes" then you may ask for "Range: bytes=-128" in a request, and get just the last 128 bytes. That'd be like this:
      my $url = "http://www.server.com/filename.mp3"; use LWP::UserAgent; my $ua = LWP::UserAgent->new; use HTTP::Request::Common; my $response = $ua->simple_request(GET $url, Range => 'bytes=-128'); if ($response->is_success) { print "last 128 bytes is: ", substr($response->content, -128), "\n"; print "(although entire content was retrieved)\n" if length ($respon +se->content) > 128; }
      Note that if the range request is not honored, you'll get back the entire content instead. If you wanted, you can probe first to see if the "Accept-ranges" header is in the response for that particular URL.

      -- Randal L. Schwartz, Perl hacker

      HTTP does not have a facility like FTP's RESTORE afaik. I think you'll have to get the whole thing.

      What rpc says ... if you are on good terms with the people running the server, you might ask them kindly could they do this indexing themselves, and make the mp3 tags available to you. Otherwise, you're going to have to grab the whole thing.

      Update Looky how tye's answer was the one I ended up suggesting =)

      Philosophy can be made out of anything. Or less -- Jerry A. Fodor

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://62826]
help
Chatterbox?
[1nickt]: This is not to suggest that Karl should remove his slogan. Just thoughts of mine... Trust me I believe I am very much more radical than most, and if I had a slogan for every gross injustice in my sig, there would be no more bytes!
Discipulus redskins .. well native american..
[1nickt]: So if I was to offer any editorial advice it would be to (1) make it endure time passing (2) make it positive (3) make it about you and your beliefs
[1nickt]: (Disicpulus The new best choice is maybe "First People"
[karlgoethebier]: Discipulus: This is called "Volksverhetzung" in German which means
[karlgoethebier]: incitement of the people and it is prohibited by law
[1nickt]: The best sign I have sign in a protest march was carried by a kid of about 10 years "If you build a wall my generation will tear it down."
[1nickt]: ... sign I have seen ...
[1nickt]: Now that one made me hopeful! First time not angry in a long time when I saw that kid.
[Discipulus]: i propend for removing: why? because we are so few that we must find i minimal common divisor, this is certainly Perl not our (anyway private) thougths. And i say this still wondering because i love a lot freedom of expression. And i say this not for roho

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (10)
As of 2017-06-22 12:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many monitors do you use while coding?















    Results (519 votes). Check out past polls.