Risk-Aware AI Code Review for Business-Critical Systems
LiveReview LiveReview Explore LiveReview

Net::UPnP - Perl extension for UPnP

Author

Description

       This package provides some functions to control UPnP devices.

       Currently, the package provides only functions for the control point.  To control UPnP devices, see
       Net::UPnP::ControlPoint.

       As a sample of the control point, the package provides Net::UPnP::AV::MediaServer to control the devices
       such as DLNA media servers. As the example, please dms2vodcast.pl that converts from the MPEG2 movies to
       the MPEG4 one and outputs the RSS file for Vodcasting.

Name

       Net::UPnP - Perl extension for UPnP

See Also

       Net::UPnP::ControlPoint

       Net::UPnP::AV::MediaServer

Synopsis

           use Net::UPnP::ControlPoint;

           my $obj = Net::UPnP::ControlPoint->new();

           @dev_list = $obj->search(st =>'upnp:rootdevice', mx => 3);

           $devNum= 0;
           foreach $dev (@dev_list) {
               $device_type = $dev->getdevicetype();
               if  ($device_type ne 'urn:schemas-upnp-org:device:MediaServer:1') {
                   next;
               }
               print "[$devNum] : " . $dev->getfriendlyname() . "\n";
               unless ($dev->getservicebyname('urn:schemas-upnp-org:service:ContentDirectory:1')) {
                   next;
               }
               $condir_service = $dev->getservicebyname('urn:schemas-upnp-org:service:ContentDirectory:1');
               unless (defined(condir_service)) {
                   next;
               }
               %action_in_arg = (
                       'ObjectID' => 0,
                       'BrowseFlag' => 'BrowseDirectChildren',
                       'Filter' => '*',
                       'StartingIndex' => 0,
                       'RequestedCount' => 0,
                       'SortCriteria' => '',
                   );
               $action_res = $condir_service->postcontrol('Browse', \%action_in_arg);
               unless ($action_res->getstatuscode() == 200) {
                       next;
               }
               $actrion_out_arg = $action_res->getargumentlist();
               unless ($actrion_out_arg->{'Result'}) {
                   next;
               }
               $result = $actrion_out_arg->{'Result'};
               while ($result =~ m/<dc:title>(.*?)<\/dc:title>/sgi) {
                   print "\t$1\n";
               }
               $devNum++;
           }

See Also