Show
Ignore:
Timestamp:
03.10.2013 01:07:37 (6 years ago)
Author:
davidb
Message:

Added in ability to generate download page

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • gs2-extensions/afrepo/trunk/src/src/AFRepo.GSDLEXT.class.php.in

    r27983 r28351  
    5858 
    5959 
    60     protected function remove_audio_files_prefix($full_filepath) { 
     60    public function remove_audio_files_prefix($full_filepath) { 
    6161#     echo "full filepath = " . $full_filepath . "\n"; 
    6262#     echo "af prefix = " . $this->af_prefix . "\n"; 
     
    285285        return null; 
    286286    } 
     287 
     288 
     289 
     290 
     291    /** 
     292     * extraTriples 
     293     * Return an array of any extra implementation-specific triples should be  
     294     * added to the RDF given the ID of an audiofile 
     295     * 
     296     * This should be an array of triples in Turtle format without the trailing  
     297     * dot. (See generateRDF) 
     298     * It should return triples about all audiofiles of the same song rather  
     299     * than just the one with the ID given. 
     300     */ 
     301    protected function extraTriples($id) { 
     302 
     303        $extra_triples = array(); 
     304 
     305 
     306        // analyze the file, get some metadata 
     307        $structured_metadata = $this->getStructuredMetadata($id); 
     308 
     309        if ($structured_metadata !== false) { 
     310 
     311        } 
     312 
     313        // loop through the audiofiles for this tune 
     314        /* foreach ($ids as $key => $fileid) { */ 
     315 
     316        /*  // some identifiers */ 
     317        /*  $audiofile = "repo:$fileid"; */ 
     318        /*  $digitalsignal = "repo:$fileid#DigitalSignal"; */ 
     319 
     320        /*  // triples about the document */ 
     321        /*  $triples[] = "{$audiofile}_ a foaf:Document; foaf:primaryTopic $audiofile"; */ 
     322 
     323        /*  // this is a mo:AudioFile, which is a mo:MusicalItem */ 
     324        /*  $triples[] = "$audiofile a mo:AudioFile"; */ 
     325 
     326        /*  // this encodes a corresponding digital signal */ 
     327        /*  $triples[] = "$audiofile mo:encodes $digitalsignal"; */ 
     328 
     329        /*  // our digital signal is a mo:DigitalSignal (which is a subclass of  */ 
     330        /*  // mo:Signal, which is a subclass of mo:MusicalExpression) */ 
     331        /*  $triples[] = "$digitalsignal a mo:DigitalSignal"; */ 
     332 
     333        /*  // different logic depending whether this audiofile is the preferred  */ 
     334        /*  // one or not */ 
     335        /*  if ($key == 0) { */ 
     336        /*      // preferred -- if we have an MBID this Signal is derived from  */ 
     337        /*      // the original (that at Musicbrainz) */ 
     338        /*      if (!is_null($mbid)) */ 
     339        /*          $triples[] = "$digitalsignal mo:derived_from " . mbidToSignalURI($mbid); */ 
     340        /*      // otherwise we don't assert that it derives from anything */ 
     341        /*  } else { */ 
     342        /*      // non-preferred -- we assert that it is derived from our  */ 
     343        /*      // preferred audiofile's Signal */ 
     344        /*      $triples[] = "$digitalsignal mo:derived_from repo:" . $ids[0] . "#DigitalSignal"; */ 
     345        /*  } */ 
     346 
     347        /*  // analyze the file, get some metadata */ 
     348        /*  $filemetadata = $this->getFileMetadata($fileid); */ 
     349 
     350        /*  // mo:AudioFile metadata */ 
     351        /*  if (isset($filemetadata["dataformat"])) */ 
     352        /*      $triples[] = "$audiofile mo:encoding \"" . $filemetadata["dataformat"] */ 
     353        /*              . (isset($filemetadata["bitrate"]) ? " @ " . $filemetadata["bitrate"] . "bps" : "") */ 
     354        /*              . (isset($filemetadata["bitrate_mode"]) ? " " . $filemetadata["bitrate_mode"] : "") */ 
     355        /*              . "\""; */ 
     356 
     357        /*  // mo:DigitalSignal metadata */ 
     358        /*  if (isset($filemetadata["playtime_seconds"])) */ 
     359        /*      $triples[] = "$digitalsignal mo:time [ " */ 
     360        /*              . "a time:Interval; " */ 
     361        /*              . "time:seconds \"" . $filemetadata["playtime_seconds"] . "\"^^xsd:float " */ 
     362        /*              . "]"; */ 
     363        /*  if (isset($filemetadata["channels"])) */ 
     364        /*      $triples[] = "$digitalsignal mo:channels \"" . $filemetadata["channels"] . "\"^^xsd:int"; */ 
     365        /*  if (isset($filemetadata["sample_rate"])) */ 
     366        /*      $triples[] = "$digitalsignal mo:sample_rate \"" . $filemetadata["sample_rate"] . "\"^^xsd:float"; */ 
     367        /* } */ 
     368 
     369        return $extra_triples; 
     370 
     371 
     372    } 
     373 
     374 
     375    /** 
     376     * getgetStructuredMetadata 
     377     * Return as a hashmap (keyed by algorithm the structured audio data 
     378     * from the "big crunch" 
     379     */ 
     380    public function getStructuredMetadata($id) { 
     381 
     382      $classifier = new StructuredAudioClassifier(); 
     383 
     384      if ($classifier->available() && $classifier->hasMetadata($id)) { 
     385        return $classifier->loadMetadata($id); 
     386      } 
     387 
     388      return false; 
     389 
     390    } 
     391 
     392 
     393    public function attributionToHtmlByAlgorithm() { 
     394 
     395      $classifier = new StructuredAudioClassifier(); 
     396 
     397      $full_dataset_path = getcwd() . "/" . "datasets"; 
     398 
     399 
     400      $ametadata = $classifier->getAttribution(); 
     401 
     402      $style = "<style>\n"; 
     403      $style .= "  tr:nth-child(even) {background: #DDD}\n"; 
     404      $style .= "  tr:nth-child(odd)  {background: #EEE}\n"; 
     405      $style .= "</style>\n"; 
     406 
     407      $html_str = "$style\n<table>"; 
     408 
     409      foreach ($ametadata as $key => $value) { 
     410 
     411        $html_str .= "<tr>"; 
     412 
     413        $entry = $value; 
     414        $title      = $entry["title"]; 
     415        $year       = $entry["year"]; 
     416        $articleUrl = $entry["articleUrl"]; 
     417        $authorList = $entry["authorList"]; 
     418        $authors    = $entry["authors"]; 
     419   
     420        $opt_linked_title = $title; 
     421 
     422        if ($articleUrl != false) { 
     423          $opt_linked_title = "<a href=\"$articleUrl\">$title</a>"; 
     424        } 
     425 
     426        $desc_entry = "<i>$opt_linked_title</i> ($year)<br />\n"; 
     427 
     428        foreach ($authorList as $author) { 
     429          $author_details = $authors[$author]; 
     430          $organizations  = $author_details["organization"]; 
     431          $email          = $author_details["email"]; 
     432 
     433          $desc_entry .= $author; 
     434          if ($email != false) { 
     435        $email = str_replace("@"," at ",$email); 
     436        $desc_entry .= " (<tt>$email</tt>)"; 
     437          } 
     438 
     439          $desc_entry .= "<br />\n"; 
     440        } 
     441 
     442        $tarfilesize = filesize("$full_dataset_path/$key.tar.gz"); 
     443 
     444        $download_key = "<a href=\"datasets/$key.tar.gz\">Download $key</a> ($tarfilesize bytes)";  
     445        $html_str .= "  <td>$download_key</td><td>$desc_entry</td>\n"; 
     446 
     447        $html_str .= "</tr>\n"; 
     448 
     449      } 
     450      $html_str .= "</table>"; 
     451 
     452      return $html_str; 
     453 
     454    } 
     455 
     456 
     457    public function attributionToHtmlByCollection() { 
     458 
     459##    $classifier = new StructuredAudioClassifier(); 
     460 
     461      $full_dataset_path = getcwd() . "/" . "datasets"; 
     462 
     463 
     464      $cmetadata = array ( 
     465                  "american"  => "American", 
     466                  "classical" => "Classical", 
     467                  "coversong" => "Cover Songs", 
     468                  "dram"      => "Dram", 
     469                  "ehmann"    => "Ehmann", 
     470                  "jamendo"   => "Jameno", 
     471                  "latin"     => "Latin", 
     472                  "magnatune" => "Magnatune", 
     473                  "mazurkas"  => "Mazurkas", 
     474                  "uscrap"    => "US Bargin Bin", 
     475                  "uspop"     => "US Pop" 
     476                  ); 
     477 
     478      $style = "<style>\n"; 
     479      $style .= "  tr:nth-child(even) {background: #DDD}\n"; 
     480      $style .= "  tr:nth-child(odd)  {background: #EEE}\n"; 
     481      $style .= "</style>\n"; 
     482 
     483      $html_str = "$style\n<table>"; 
     484 
     485      foreach ($cmetadata as $key => $value) { 
     486 
     487        $html_str .= "<tr>"; 
     488 
     489        $tarfilesize = filesize("$full_dataset_path/$key.tar.gz"); 
     490 
     491        $download_key = "<a href=\"datasets/$key.tar.gz\">Download $value</a> ($tarfilesize bytes)";  
     492        $html_str .= "  <td>$download_key</td>\n"; 
     493 
     494        $html_str .= "</tr>\n"; 
     495 
     496      } 
     497      $html_str .= "</table>"; 
     498 
     499      return $html_str; 
     500 
     501    } 
     502 
     503 
    287504} 
    288505