Jukebox/w3tpl: Difference between revisions

From HypertWiki
working code, but need to protect page
 
updated script to work (at least somewhat) with latest w3tpl syntax
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
=The Hypertwin Jukebox=
=The Hypertwin Jukebox Prototype=
''is under construction, but here are all the artists''
This was a prototype written in [[htyp:W3TPL|W3TPL]]; it allowed us to export files over the LAN, but the links were often broken. It is also rather slow, being written in a language being interpreted by a parser written in another interpreted language. I'm leaving it here as an example of working W3TPL code.
<hide><for db=audioferret table="Artists" sort="sort, name" name=ar hide>
<hide>
   <let name=ar_name val="@row.ar.name" />
=====================
===== functions =====
=====================
<func GetArtists>
  <for db=audioferret table="qryArtists_index" sort="name">
    <let name=ar_name val="@row.name" />
    <let name=outFunc append>
* </let>
    <if comp=@row.id with=$doArtist>
      <let name=chosen_artist_name copy=ar_name />
      <let name=outFunc append>'''</let>
      <let name=outFunc append copy=ar_name />
      <let name=outFunc append>'''</let>
    </if><else>
      <let name=outFunc append vars>[{{fullurl:{{PAGENAME}}|artist=[$@row.id$]}} </let>
      <let name=outFunc append copy=ar_name />
      <let name=outFunc append>]</let>
  </for>
</func>
 
<func GetAlbums>
  <let name=sqlFilt vars>idartist=</let>
  <let name=sqlFilt append copy=doArtist />
  <for db=audioferret table="Albums" where=$sqlFilt sort="sort, name">
    <let name=al_name val="@row.name" />
    <let name=outFunc append>
* </let>
    <let name=outFunc append vars>[{{fullurl:{{PAGENAME}}|artist=[$doArtist$]&album=[$@row.id$]}} </let>
    <let name=outFunc append copy=al_name />
    <let name=outFunc append>]</let>
  </for>
</func>
 
<func GetTitles>
  <if flag=doAlbum>
    <let name=sqlFilt vars>album_id=</let>
    <let name=sqlFilt append copy=doAlbum />
  </if><else>
    <let name=sqlFilt vars>artist_id=</let>
    <let name=sqlFilt append copy=doArtist />
  </else>
   <let name=outFunc>
{| </let>
  <for db=audioferret table="qryTitle_Files" where=$sqlFilt sort="track, name">
    <let name=outFunc append>
|-
| '''</let>
    <let name=outFunc append copy=@row.track />
    <let name=outFunc append>'''. </let>
    <let name=outFunc append copy=@row.name />
    <let name=outFunc append> || [</let>
    <let name=outFunc append copy=urlAudio />
    <let name=outFunc append copy=@row.filespec />
    <let name=outFunc append> download]</let>
  </for>
  <let name=outFunc append>
|} </let>
</func>
============================
===== build the output =====
============================
Set up the environment:
-- Turn off page cache:
<w3tpl nocache />
-- base URL for audio files:
<let name=urlAudio>smb://rizzo/shared/sdd/audio/Jukebox/content/</let>
 
Get the input arguments:
<let name=doArtist copy=@query.artist />
<!-- let name=doArtist val=5 / -->
<let name=doAlbum copy=@query.album />
<!-- let name=doAlbum val=131 / -->
 
Always show the artists:
<call GetArtists />
 
<let name=out>
{|
|-
| '''artists'''</let>
<if flag=doArtist>
  <let name=doTitles val=1 />
</if>
<if flag=doArtist>
  <let name=out append vars> || '''albums''': [$chosen_artist_name$]</let>
</if>
<if flag=doTitles>
  <let name=out append> || '''titles''' (only works from our house network)</let>
</if>
<let name=out append>
|-
|
</let>
 
<let name=out append copy=outFunc />
<let name=outFunc null />
 
<if flag=doArtist>
  <call GetAlbums />
  <let name=out append>
| valign=top | </let>
  <let name=out append copy=outFunc />
  <let name=outFunc null />
</if>
 
<if flag=doTitles>
  <call GetTitles />
   <let name=out append>
   <let name=out append>
* </let>
| valign=top | </let>
   <let name=out append copy=ar_name />
   <let name=out append copy=outFunc />
</for>
  <let name=outFunc null />
</if>
 
<let name=out append>
|}</let>
===========================
===== show the output =====
===========================
</hide><get name=out />
</hide><get name=out />

Latest revision as of 01:33, 31 May 2011

The Hypertwin Jukebox Prototype

This was a prototype written in W3TPL; it allowed us to export files over the LAN, but the links were often broken. It is also rather slow, being written in a language being interpreted by a parser written in another interpreted language. I'm leaving it here as an example of working W3TPL code. <hide>

=========
functions
=========

<func GetArtists>

 <for db=audioferret table="qryArtists_index" sort="name">
   <let name=ar_name val="@row.name" />
   <let name=outFunc append>
  • </let>
   <if comp=@row.id with=$doArtist>
     <let name=chosen_artist_name copy=ar_name />
     <let name=outFunc append></let>
     <let name=outFunc append copy=ar_name />
     <let name=outFunc append></let>
   </if><else>
     <let name=outFunc append vars>[$@row.id$ </let>
     <let name=outFunc append copy=ar_name />
     <let name=outFunc append>]</let>
 </for>

</func>

<func GetAlbums>

 <let name=sqlFilt vars>idartist=</let>
 <let name=sqlFilt append copy=doArtist />
 <for db=audioferret table="Albums" where=$sqlFilt sort="sort, name">
   <let name=al_name val="@row.name" />
   <let name=outFunc append>
  • </let>
   <let name=outFunc append vars>[$doArtist$&album=[$@row.id$] </let>
   <let name=outFunc append copy=al_name />
   <let name=outFunc append>]</let>
 </for>

</func>

<func GetTitles>

 <if flag=doAlbum>
   <let name=sqlFilt vars>album_id=</let>
   <let name=sqlFilt append copy=doAlbum />
 </if><else>
   <let name=sqlFilt vars>artist_id=</let>
   <let name=sqlFilt append copy=doArtist />
 </else>
 <let name=outFunc>
<for db=audioferret table="qryTitle_Files" where=$sqlFilt sort="track, name"> <let name=outFunc append>
</let>
   <let name=outFunc append copy=@row.track />
   <let name=outFunc append>. </let>
   <let name=outFunc append copy=@row.name />
   <let name=outFunc append> || [</let>
   <let name=outFunc append copy=urlAudio />
   <let name=outFunc append copy=@row.filespec />
   <let name=outFunc append> download]</let>
 </for>
 <let name=outFunc append>

</let>

</func>

================
build the output
================

Set up the environment: -- Turn off page cache: <w3tpl nocache /> -- base URL for audio files: <let name=urlAudio>smb://rizzo/shared/sdd/audio/Jukebox/content/</let>

Get the input arguments: <let name=doArtist copy=@query.artist /> <let name=doAlbum copy=@query.album />

Always show the artists: <call GetArtists />

<let name=out>

artists</let>

<if flag=doArtist>

 <let name=doTitles val=1 />

</if> <if flag=doArtist>

 <let name=out append vars> || albums: [$chosen_artist_name$]</let>

</if> <if flag=doTitles>

 <let name=out append> || titles (only works from our house network)</let>

</if> <let name=out append>

</let>

<let name=out append copy=outFunc /> <let name=outFunc null />

<if flag=doArtist>

 <call GetAlbums />
 <let name=out append>
</let>
 <let name=out append copy=outFunc />
 <let name=outFunc null />

</if>

<if flag=doTitles>

 <call GetTitles />
 <let name=out append>
</let>
 <let name=out append copy=outFunc />
 <let name=outFunc null />

</if>

<let name=out append>

</let>

===============
show the output
===============

</hide><get name=out />