Git Product home page Git Product logo

vdr-plugin-live's People

Contributors

cwieninger avatar dis90 avatar dnwe avatar flell avatar herpoi avatar idl0r avatar jasmin-j avatar jwakely avatar madmartin avatar markuseh avatar mdritchie avatar norwayfun avatar reelcoder avatar rofafor avatar seife avatar tmn505 avatar wirbel-at-vdr-portal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

vdr-plugin-live's Issues

Tag 3.1.11 got lost?

I just tried to build the latest version but the recent release 3.1.11 seems to be missing now.

streaming a stored record won't support jump back/forward in difference to vdradmin-am

Have I missed a settings toggle somewhere or is streaming of a stored record not supporting jump back/forward so far?

Can this be related to how the stream is accessed?

vdradmin.m3u8 (using streamserver port directly, jump back/forward working well in vlc):

http://192.168.x.x:3000/20**:216929****.rec

playlist.m3u8 (vlc is not able to jump forward/back)

http://192.168.x.x:8008/recstream.html?recid=recording_********52139A68D
77B23BD********

Thank you for any hints.

vdr-live-1.3.7 - compilation fails on Fedora 35 with vdr-2.4.7

Hi,

compiling vdr-live-1.3.7 with vdr-2.4.7 on fedora 35 fails with this error message:

ar: creating libjavascript.a
g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11 -fPIC -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"live"' -DTNTVERSION=30000 -DCXXTOOLVER=30000 -DDISABLE_TEMPLATES_COLLIDING_WITH_STL -DHAVE_PCRE2  i18n.cpp
g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=gnu++11 -fPIC -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"live"' -DTNTVERSION=30000 -DCXXTOOLVER=30000 -DDISABLE_TEMPLATES_COLLIDING_WITH_STL -DHAVE_PCRE2  recman.cpp
recman.cpp: In member function 'vdrlive::RecordingsItemPtr vdrlive::RecordingsItem::addDirIfNotExists(const string&)':
recman.cpp:453:59: error: no matching function for call to 'std::set<std::shared_ptr<vdrlive::RecordingsItem>, vdrlive::cmpRecordingsItemPtr>::find(const string&)'
  453 |           RecordingDirsMap::iterator iter = m_subdirs.find(dirName);
      |                                             ~~~~~~~~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/11/set:61,
                 from /usr/include/cxxtools/serializationinfo.h:34,
                 from tools.h:15,
                 from recman.h:6,
                 from recman.cpp:2:
/usr/include/c++/11/bits/stl_set.h:794:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::find(const key_type&) [with _Key = std::shared_ptr<vdrlive::RecordingsItem>; _Compare = vdrlive::cmpRecordingsItemPtr; _Alloc = std::allocator<std::shared_ptr<vdrlive::RecordingsItem> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree<std::shared_ptr<vdrlive::RecordingsItem>, std::shared_ptr<vdrlive::RecordingsItem>, std::_Identity<std::shared_ptr<vdrlive::RecordingsItem> >, vdrlive::cmpRecordingsItemPtr, std::allocator<std::shared_ptr<vdrlive::RecordingsItem> > >::const_iterator; std::set<_Key, _Compare, _Alloc>::key_type = std::shared_ptr<vdrlive::RecordingsItem>]'
  794 |       find(const key_type& __x)
      |       ^~~~
/usr/include/c++/11/bits/stl_set.h:794:28: note:   no known conversion for argument 1 from 'const string' {aka 'const std::__cxx11::basic_string<char>'} to 'const key_type&' {aka 'const std::shared_ptr<vdrlive::RecordingsItem>&'}
  794 |       find(const key_type& __x)
      |            ~~~~~~~~~~~~~~~~^~~

complete logfile

Repository description is wrong

The current repository description is

Mirror of https://projects.vdr-developer.org/git/vdr-plugin-live.git and a Collection of Patches from https://www.vdr-portal.de/

which is misleading, because https://projects.vdr-developer.org does not exist any more.
Please edit to something meaningful.

Add input field for native svdrp commands

Would it be possible to add an input field somewhere in live for executing SVDRP commands (such as hitk Power or mesg "hello")?
vdradmin has this functionality and it is really usefull if you don't have access to a shell console but can access the live web page.

Syntax Error in line 11 of Makefile with GNU Make 4.2.1

Hello,
I get an syntax error if I try to build the latest version of vdr-plugin-live on Ubuntu 20.04 with GNU Make 4.2.1:

$ git clone https://github.com/MarkusEh/vdr-plugin-live
Klone nach 'vdr-plugin-live' …
remote: Enumerating objects: 9096, done.
remote: Counting objects: 100% (1389/1389), done.
remote: Compressing objects: 100% (364/364), done.
remote: Total 9096 (delta 1021), reused 1348 (delta 1016), pack-reused 7707
Empfange Objekte: 100% (9096/9096), 5.89 MiB | 2.97 MiB/s, fertig.
Löse Unterschiede auf: 100% (6735/6735), fertig.
$ cd vdr-plugin-live
$ make
Makefile:11: *** Nicht beendeter Aufruf der Funktion „shell“: „)“ fehlt.  Schluss.

According to https://stackoverflow.com/a/53837400 the hashtag needs to be escaped (which works with Make 4.2.1), but this doesn't work with GNU Make 4.3 because the escaped hashtag is forwarded to awk:

$ make
awk: cmd. line:1: warning: regexp escape sequence `\#' is not a known regexp operator

Validation error at create timer discards all fields

When a validation error occurs while crating a new timer all input fields are cleared to their default value.
If the title field is empty (likely for channels w/o EPG) and save is pressed an error occurs (correctly), but at the same time all (other?) input fields are reset to their default value when creating a new timer. The latter is unexpected and error prone. The user might not notice the change and create a timer that records some arbitrary channel immediately.

Bildschirmfoto_2023-12-31_10-11-24

A similar issue applies to existing timers. When editing causes a validation error (less likely, of course), all possibly changed fields are reset to the last saved value.

I will try to provide a fix in the next week.

Add web based channel list editor

The whole "channels.conf" concept was and is something I never liked about VDR.

What VDR really is missing is some kind of user friendly way to edit the channel list. And I would prefer being able to do it in a web browser. So at least for me it seems like integrating one inside the live plugin would be a perfect fit.

vdr-plugin-live stop building with make 4.4

Hi,

vdr-plugin-live stop building and due to make getting stuck in loop
and complaining with:

`server1:/usr/local/src/vdr/PLUGINS/src/live # make -d
GNU Make 4.4
Built for x86_64-suse-linux-gnu
Copyright (C) 1988-2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later https://gnu.org/licenses/gpl.html

This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Reading makefile 'Makefile'...
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Reading makefile 'global.mk' (search path) (no ~ expansion)...
Makefile:27: not recursively expanding CFLAGS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:28: not recursively expanding CXXFLAGS to export to shell function
Makefile:27: not recursively expanding CFLAGS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:27: not recursively expanding CFLAGS to export to shell function
Makefile:44: not recursively expanding CXXFLAGS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:44: not recursively expanding CXXFLAGS to export to shell function
Makefile:27: not recursively expanding CFLAGS to export to shell function
Makefile:44: not recursively expanding CXXFLAGS to export to shell function
Makefile:44: not recursively expanding CXXFLAGS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:66: not recursively expanding CXXFLAGS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:66: not recursively expanding CXXFLAGS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:66: not recursively expanding CXXFLAGS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:66: not recursively expanding CXXFLAGS to export to shell function
Reading makefile '.dependencies' (search path) (don't care) (no ~ expansion)...
Updating makefiles....
Considering target file 'Makefile'.
Looking for an implicit rule for 'Makefile'.
Trying pattern rule '%: %.o' with stem 'Makefile'.
Directory . cache invalidated (count 1 != command 19)
Trying implicit prerequisite 'Makefile.o'.
Not found 'Makefile.o'.
Trying pattern rule '%: %.c' with stem 'Makefile'.
Trying implicit prerequisite 'Makefile.c'.

...

No need to remake target 'global.mk'.
Considering target file '.dependencies'.
Pruning file 'Makefile'.
Finished prerequisites of target file '.dependencies'.
Prerequisite 'Makefile' is newer than target '.dependencies'.
Must remake target '.dependencies'.
Makefile:14: not recursively expanding HAVE_PCRE2 to export to shell function
Makefile:14: not recursively expanding HAVE_PCRE2 to export to shell function
Makefile:62: not recursively expanding LIBS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:14: not recursively expanding HAVE_PCRE2 to export to shell function
Makefile:62: not recursively expanding LIBS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:54: not recursively expanding CXXTOOLVER to export to shell function
Makefile:14: not recursively expanding HAVE_PCRE2 to export to shell function
Makefile:62: not recursively expanding LIBS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:54: not recursively expanding CXXTOOLVER to export to shell function
Makefile:86: not recursively expanding DEFINES to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:43: not recursively expanding TNTVERSION to export to shell function
Makefile:66: not recursively expanding CXXFLAGS to export to shell function
Makefile:54: not recursively expanding CXXTOOLVER to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Directory pages cache invalidated (count 19 != command 20)
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:14: not recursively expanding HAVE_PCRE2 to export to shell function
Makefile:62: not recursively expanding LIBS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:54: not recursively expanding CXXTOOLVER to export to shell function
Makefile:43: not recursively expanding TNTVERSION to export to shell function
Makefile:54: not recursively expanding CXXTOOLVER to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:43: not recursively expanding TNTVERSION to export to shell function
Makefile:66: not recursively expanding CXXFLAGS to export to shell function
Makefile:66: not recursively expanding CXXFLAGS to export to shell function
Makefile:14: not recursively expanding HAVE_PCRE2 to export to shell function
Makefile:62: not recursively expanding LIBS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function
Makefile:14: not recursively expanding HAVE_PCRE2 to export to shell function
Makefile:62: not recursively expanding LIBS to export to shell function
Makefile:18: not recursively expanding PKGCFG to export to shell function

...`

Hints:
https://lists.gnu.org/archive/html/info-gnu/2022-10/msg00008.html

https://lists.opensuse.org/archives/list/[email protected]/thread/FPNDORIL6NDJD3HFQ76LQBIRBCWVG6TV/

live-make.tar.gz

Please show EndTime in EPG info tooltip as well

In most views (like whats_on) the main elements and tables contain both start and end times, but the tooltip (reached by clicking the more link on whats_on or the title on most others) only shows the start time. In the timers view this can be more than a bit annoying if you want to know the time frame the program is supposed to run vs. the time frame currently set for recording.

I have the following PoC diff implementing this for me, but that doesn't handle date switches (neither does whats_on; perhaps that is a feature), whats_on has similar code, doesn't handle empty times (can they be?), it doesn't rename the variable, manual std::string building, … the list of imperfections goes on, hence not a PR.

diff --git a/pages/epginfo.ecpp b/pages/epginfo.ecpp
index 6c5c505..8bcd4c4 100644
--- a/pages/epginfo.ecpp
+++ b/pages/epginfo.ecpp
@@ -133,7 +133,8 @@ using namespace vdrlive;
        if (epgEvent) {
                std::string start(epgEvent->StartTime("%a,") + std::string(" ")
                                + epgEvent->StartTime(tr("%b %d %y")) + std::string(" ")
-                               + epgEvent->StartTime(tr("%I:%M %p")));
+                               + epgEvent->StartTime(tr("%I:%M %p")) + std::string(" - ")
+                               + epgEvent->EndTime(tr("%I:%M %p")));
                std::string tools_component;
                if (recordings) {
                        tools_component = epgEvent->Archived().empty() ? "recordings.rec_tools" : "recordings.archived_disc" ;

Add a "headless only" mode

"Live" has several buttons which only make sense if you are remote controlling a VDR system which also has some kind of output plugin installed. This includes stuff like playback of a recording in the recording list or tuning to a channel.

I think it would be useful to allow disabling/hiding all this either by a setup parameter or probably even (if possible) by auto detecting that the VDR system does not have any output available.

Compiler error with Debian Buster

In file included from tools.h:24,
                 from live.cpp:10:
stringhelpers.h: In member function ‘cToSv::operator std::string_view() const’:
stringhelpers.h:640:54: error: call of overloaded ‘cSv(const cToSv&)’ is ambiguous
     operator std::string_view() const { return (cSv)*this; }

The problem is caused by the redundant conversion operator in the last line:

class cToSv {
  public:
    cToSv() {}
// not intended for copy
// you can copy the cSv of this class (from  operator cSv() )
    cToSv(const cToSv&) = delete;
    cToSv &operator= (const cToSv &) = delete;
    virtual ~cToSv() {}
    virtual operator cSv() const = 0;
    operator std::string_view() const { return (cSv)*this; } // <--- HERE
};

cSv is std::string_view, so the second conversion operator is superfluous.

Removing the last operator fixes the issue.

EPG Info broken

With this commit b0459ff the EPG subwindow position is broken.
Opening EPG Info at the top of the channel or timer list works, With each line down of the list, the EPG windows opens more on the buttom of the screen or do no longer open.

Plugin crashes if locale not installed

The plugin crashes VDR if the locale VDR is started with is not installed on the Linux system.

Reproduce:

  • Install Debian Bookworm with only en_US.utf8 selected
  • Start VDR with live plugin with this environment:
LANG=de_DE.UTF-8
VDR_LANG=de_DE.UTF-8
LC_ALL=de_DE.UTF-8
  • VDR crashes on start with these journal messages:
[40535] loading plugin: /usr/local/lib/vdr/libvdr-live.so.2.6.3
terminate called after throwing an instance of 'std::runtime_error'
  what():  locale::facet::_S_create_c_locale name not valid

The crash does not occur any more if de_DE.utf8 is installed via dpkg-reconfigure locales.

Would be great if the plugin would fallback to English if the locale is not installed.

no close buttom of recording details from very long recording names

I have a minor issue of the recording details info box for very long recording names.
You can reproduce it if you name a recording "Rückkehr in die Antarktis Doku-Reihe, USA 2019 Altersfreigabe: ab 12 (WH vom Dienstag, 15.06.2021, 20:15 Uhr)" and click on the recording for details. The info box opens with a two lines header and no "x" to close the window. Please excuse: html is not my core competence, so only a issue and no PR.

Error 500 - character conversion failed

With tntnet-3 the plugin fails to show records.

console message:
"WARN tntnet.worker - http-Error: 500 character conversion failed"

Solution, add in pages/recordings.ecpp:308

#if TNTVERSION >= 30000
++ shortDescr = CorrectNonUTF8(&shortDescr); // cleanup invalid UTF-8 characters
description = CorrectNonUTF8(&description); // cleanup invalid UTF-8 characters
// Tntnet30 throw: tntnet.worker - http-Error: 500 character conversion failed
#endif

can't compile vdr-plugin-live-3.0.4 with new version of tntnet and cxxtools-3.0.0

Hi,

when compiling vdr-plugin-live-3.0.4 on Fedora 33 with the new version of tntnet-3.0.0 and cxxtools-3.0.0
i get the following error messages:

recordings.ecpp: In member function 'virtual unsigned int {anonymous}::_component_::operator()(tnt::HttpRequest&, tnt::HttpReply&, tnt::QueryParams&)':
recordings.ecpp:76:6: error: 'deletions_type' has not been declared
   76 | for (deletions_type::const_iterator it = deletions.begin(); it != deletions.end(); ++it) {
      |      ^~~~~~~~~~~~~~
recordings.ecpp:76:61: error: 'it' was not declared in this scope; did you mean 'int'?
   76 | for (deletions_type::const_iterator it = deletions.begin(); it != deletions.end(); ++it) {
      |                                                             ^~
      |                                                             int
recordings.ecpp: In member function 'virtual unsigned int {anonymous}::_component_::recordings_item_type::operator()(tnt::HttpRequest&, tnt::HttpReply&, tnt::QueryParams&)':
recordings.ecpp:250:8: error: 'path_type' has not been declared
  250 |   for (path_type::const_iterator i = path.begin(); i != path.end(); ++i) {
      |        ^~~~~~~~~
recordings.ecpp:250:52: error: 'i' was not declared in this scope
  250 |   for (path_type::const_iterator i = path.begin(); i != path.end(); ++i) {
      |                                                    ^
make[1]: *** [Makefile:34: recordings.o] Error 1
make: *** [Makefile:191: pages] Error 2

so that vdr-live recognizes the new version tntnet-3, i use the attached patch.
vdr-live-tntnet3-Makefile.patch.txt
cxxtools-3.0-1.fc33.src.rpm
tntnet-3.0-1.fc33.src.rpm

I asked about this bug on the Fedora development mailing list and received the following response:

firstly "ecppc" program (in tntnet) converts *.ecpp file to
*.cpp file, then converted .cpp file is compiled by g++. recordings.cpp
generated with ecppc (in tntnet 2.2.1) actually contains the definition for

type "deletions_type" .

I guess in *.ecpp file, "deletions_type" means the type of "deletions" variable,
so "ecppc" 2.2.1 defines "deletions_type" as such in generated cxx source.

So I guess ecppc in tntnet 3 is somehow broken. I guess you can check the actually generated
"recordings.cpp" file. (Note that generated "recordings.cpp" contains something like

...
#line 1 "recordings.ecpp"

so while g++ actually compiles recordings.cpp, the error messages looks like errors
happened on the original .ecpp file.)

[root@fc33 built_with_tntnet2]# grep deletions_type *
recordings.cpp:typedef std::vector<string> deletions_type; recordings.cpp:deletions_type deletions; recordings.cpp:for (deletions_type::const_iterator it = deletions.begin(); it != deletions.end(); ++it) { recordings.ecpp:for (deletions_type::const_iterator it = deletions.begin(); it != deletions.end(); ++it) {

[root@fc33 built_with_tntnet3]# grep deletions_type *
recordings.cpp:for (deletions_type::const_iterator it = deletions.begin(); it != deletions.end(); ++it) { recordings.ecpp:for (deletions_type::const_iterator it = deletions.begin(); it != deletions.end(); ++it) {

it would be nice if vdr-live could also compile with the new versions of cxxtools / tntnet-3.

Compiler error with VDR 2.4.7

Hello,
I get an compiler error with vdr-2.,4.7:

*** Plugin live:
ECPP pages/ menu.cpp
ecppc: symbol lookup error: ecppc: undefined symbol: _ZNSt8numpunctIN8cxxtools4CharEE2idE
make[2]: *** Keine Regel vorhanden, um das Ziel „menu.cpp“, 
  benötigt von „menu.o“, zu erstellen.  Schluss.
make[1]: *** [Makefile:203: pages] Fehler 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.