Slashdot Mirror


Would You Rent a Song For a Dime?

An anonymous reader writes "What's worse than a padlocking every song so that they will only play on certain devices? How about selling (renting) you songs that work on no devices? Astonishingly, this is what the music industry thinks we need. Warner Music is spending $20 million to back Lala, a startup devising a service to convince people to 'buy' 'web songs' for 10 cents each; these are then kept for safekeeping only by Lala with no download privileges. Industry insider Michael Robertson leaks the facts on this scheme, along with a seekrit URL so you can try it out."

4 of 580 comments (clear)

  1. Imaginary Property by NoobixCube · · Score: 4, Interesting

    So now we're meant to pay ten cents for the right to imagine we have imaginary property?

    --
    Admit it. You post strawman arguments as AC so you get modded Insightful for refuting them, rather than Troll
  2. Doesn't seem so bad... by pirodude · · Score: 5, Interesting

    So they're letting you listen to a digital copy one time? Time to start firing up the flash ripper and start scraping the site. Chances are they're not sticking stupid DRM or watermarking in their own 'secure' player.

    Granted having your entire music collection in fla is annoying, you can probably can convert it to something a little more usable.

    Sounds like a great source for large volumes of music.

    1. Re:Doesn't seem so bad... by Anonymous Coward · · Score: 5, Interesting

      To expand on that previous finding, here's a script that lets you download any song you want:

      #!/usr/bin/perl

      use strict;
      use LWP::Simple;
      use Data::Dumper;
      use JSON;
      $|=1;

      die "$0 <search param>" unless $ARGV[0];
      my $root_url = "http://next.lala.com/api/AutoComplete/songAutoComplete";
      my $content = get "$root_url?prefix=$ARGV[0]";
      my $ref = from_json($content);
      my $num = 0;
      foreach (@{$ref->{data}->{list}}) {
        print "$num : $_->{artist} - $_->{title}\n";
        $num++;
      }
      print "Download which? > ";
      my $req = <STDIN>;
      die "not valid" if ($req < 0 or $req > $num);
      my $download_url = "http://next.lala.com/api/Player/getTrackUrls?flash=true&webSrc=lala&widgetId=LalaHeadlessPlayer&T=" . $ref->{data}->{list}->[$req]->{playToken};
      my $play_url = get $download_url;
      my $play_ref = from_json($play_url);
      my $download_link = $play_ref->{data}->[0]->{url};
      print "Getting: $download_link\n";
      my $filename = $ref->{data}->{list}->[$req]->{artist} ."-" . $ref->{data}->{list}->[$req]->{title} . ".mp3";
      print "Downloading to $filename\n";
      system("wget -O '$filename' $download_link");

      It's quick, it's dirty, but it works:

      perl download.pl tiesto
      0 : Tiesto - Ten Seconds Before Sunrise
      1 : Ti&#195;&#171;sto - Forever Today
      Download which? > 0
      Getting: http://cfs-listen-52.lala.com/contentfs/content?t=NjU1MzVVNDM2OTE1OQ%3D%3D-vSOzDPPcV8VwbKW6Bwdv%2FQ%3D%3D
      Downloading to Tiesto-Ten Seconds Before Sunrise.mp3
      --2008-05-27 18:16:09--  http://cfs-listen-52.lala.com/contentfs/content?t=NjU1MzVVNDM2OTE1OQ%3D%3D-vSOzDPPcV8VwbKW6Bwdv%2FQ%3D%3D
      Resolving cfs-listen-52.lala.com... 209.237.235.158
      Connecting to cfs-listen-52.lala.com|209.237.235.158|:80... connected.
      HTTP request sent, awaiting response... 200 OK
      Length: 3609494 (3.4M) [audio/x-mpeg]
      Saving to: `Tiesto-Ten Seconds Before Sunrise.mp3'

    2. Re:Doesn't seem so bad... by Anonymous Coward · · Score: 4, Interesting

      Here's a better version that gets many more results from a different webservice.  Apparently the front page one is very limited:

      This one will do paging, use n/p to go next/previous  when prompted.

      #!/usr/bin/perl

      use strict;
      use LWP::Simple;
      use Data::Dumper;
      use JSON;
      $|=1;

      die "$0 <search param>" unless $ARGV[0];
      my $ref;
      my $offset;
      my $req;
      while(1) {
        $req = "";
        my $root_url = "http://next.lala.com/api/SearchUtils/search/v19.110.0-24?Q=$ARGV[0]&sortKey=relevance&sortDir=desc&Nb=100&Sk=$offset&webSrc=lala";
        my $content = get $root_url;
        $content =~ s/new Date\((\d+)\)/$1/g;
        $ref = from_json($content);

        my $num = 0;
        foreach (@{$ref->{data}->{songs}->{list}}) {
          print "$num : $_->{artist} - $_->{title}\n";
          $num++;
        }

        print "Download which? > ";
        chomp($req = <STDIN>);
        if ($req =~ /n/) {
          $offset+=100;
          next;
        }
        if ($req =~ /p/) {
          $offset-=100;
          $offset=0 if $offset<0;
          next;
        }
        if ($req !~ /\d+/ or $req < 0 or $req > $num) {
          print "Invalid!\n";
          next;
        }
        last;
      }
      my $download_url = "http://next.lala.com/api/Player/getTrackUrls?flash=true&webSrc=lala&widgetId=LalaHeadlessPlayer&T=" . $ref->{data}->{songs}->{list}->[$req]->{playToken};
      my $play_url = get $download_url;
      my $play_ref = from_json($play_url);
      my $download_link = $play_ref->{data}->[0]->{url};
      print "Getting: $download_link\n";
      my $filename = $ref->{data}->{list}->[$req]->{artist} ."-" . $ref->{data}->{list}->[$req]->{title} . ".mp3";
      print "Downloading to $filename\n";
      system("wget -O '$filename' $download_link");