Hi Martin,

thanks for this coding example.
If you allow I would like to reuse this one.

Furthermore this usecase and its solution could be a part of the liquidsoap 
online help.

BR, Peter


Am 26.08.2011 15:34, schrieb Martin Hamant:
>
> Le 26/08/2011 14:41, Martin Hamant a écrit :
>> I was totally far from it.
>> Found the trick !
>>
>>
>>      x = insert_metadata(s0)
>>      insert = fst(x)
>>      s = snd(x)
>>
>>      # A reference to the latest metadata
>>      latest_meta = ref []
>>
>>      # A function to update metadata
>>      def update_meta() =
>>        data = http.get("bla/titles")
>>         m = [("title", snd(data))] #<= this is the right type of m !!
>>        if m != !latest_meta then
>>          latest_meta := m
>>          insert(m)
>>          print("new metadata !")
>>        end
>>        # Restart in 10. seconds
>>        10.
>>      end
>>
>>      # Start polling now
>>      add_timeout(0., update_meta)
>>
>> :D
> Now... I have to put all of this into a conditional :)
> I was thinking of:
>
>
>       s0 =
>       if source_device == "pulse" then
>             input.pulseaudio(client='#{stream_name}')
>       else
>           input.alsa(device="#{source_device}")
>       end
>
>       s =
>       if stream_metasource != "disabled" then
>
>           # Attach metadata insertion hooks
>           x = insert_metadata(s0)
>           insert = fst(x)
>           s = snd(x)
>
>           # A reference to the latest metadata
>           latest_meta = ref []
>           #list.append(["coucou"], !latest_meta)
>
>           # A function to update metadata
>           def update_meta() =
>             data = http.get("http://martin-virtualbox/titles";)
>             m = [("title", snd(data))]
>             print(m)
>             if m != !latest_meta then
>               latest_meta := m
>               insert(m)
>               print("new metadata !")
>             end
>             # Restart in 10. seconds
>             10.
>           end
>
>           # Start polling now
>           add_timeout(0., update_meta)
>           s
>       else
>           s0
>       end
>
> (...)
>
>     # The output
>     output = out(id="#{stream_id}", host="#{stream_host}",
> port=int_of_string("#{stream_port}"), password="#{stream_password}",
> genre="#{stream_genre}", url="#{stream_url}", s)
>
>
> The problem is the iteration part where I return "s",  else s0 ... which
> leads to the error:
>     this value has type
>       (...)->source(_)
>     but it should be a subtype of
>       (...)->active_source(_)
>
> Am I close to it ?
>
> ------------------------------------------------------------------------------
> EMC VNX: the world's simplest storage, starting under $10K
> The only unified storage solution that offers unified management
> Up to 160% more powerful than alternatives and 25% more efficient.
> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
> _______________________________________________
> Savonet-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/savonet-users
>


------------------------------------------------------------------------------
Special Offer -- Download ArcSight Logger for FREE!
Finally, a world-class log management solution at an even better 
price-free! And you'll get a free "Love Thy Logs" t-shirt when you
download Logger. Secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsisghtdev2dev
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to