Commit Graph

244 Commits

Author SHA1 Message Date
Matt Mascarenhas 525590fa36 cinera.c: Prevent crash when no ProjectInfo->Unit 2018-05-13 17:10:05 +01:00
Matt Mascarenhas d420513e20 cinera_player_pre.js: Allow DOCTYPE html 2018-05-02 00:47:03 +01:00
Matt Mascarenhas e77d208645 cinera.c: Remove spurious file I/O
Don't \-escape anything in the index

Document server's security header (recommended) requirements
2018-05-01 22:05:44 +01:00
Matt Mascarenhas be37ea234a cinera: Replace all inline CSS and JS
We no longer prevent enforcement of strict server security policies (to
be documented)

Add bounds-checking to the Copy string functions, fixing buffer sizes

Fix the marker skipping (e.g. :afk)
2018-04-22 21:57:31 +01:00
Matt Mascarenhas 4a0630beb0 cinera.c: Reference and player tweaks
Different ISBN database, and slightly more flexible BuildReference()
Permit line-breaking on '/' in the references menu

cinera.css and cinera_player*.js:
More subtle "click here to regain focus" - for @insofaras
Persist theatre mode - for @insofaras
Resume in-progress video at previous timecode - for @AsafGartner
2018-04-18 00:05:14 +01:00
Matt Mascarenhas 8d75865cf3 cinera.c: Preserve the case of the markers' text 2018-04-07 06:30:28 +01:00
Matt Mascarenhas 4b9e1a2fa0 cinera.c: Add new reference combination 2018-04-05 22:25:23 +01:00
Matt Mascarenhas 1efd808783 cinera.c: Distinguish speakers from chat comments
It treats co-hosts and guests differently from chat commenters, styling
and categorising annotations for them such that their contributions
don't come under the "Chat comment" medium

Also do some essentially cosmetic code compression of the marker cases
and other things

cinera_player_pre.js: Make the credits menu initially focus the host's
person if they have no support, rather than the first credited person
who has support
2018-04-04 23:39:38 +01:00
Matt Mascarenhas 14afdc044d cinera.c: Add Pseudonym73 credentials 2018-04-02 21:52:45 +01:00
Matt Mascarenhas 33cbb5b05f cinera.c: Support private videos
It merely checks the video's privacy status and, if not public, records
its corresponding HMML base filename privately in the .metadata without
generating a player page or a search / table of contents entry for it.
Every four hours it will loop over the .metadata to recheck the privacy
status of any privately recorded entries, and process newly public ones.

Fix template validation to check that the script comes after both the
player and menus (previously it only specified the player).

Fix relocation code to try and remove only the child directories of the
BaseDir, and no shallower (previously it would try and "recursively"
remove directories all the way back to /, obviously not actually getting
there because it would encounter a non-empty directory along the way).

Add "Modes" to the startup printout.

Flags:
    -g Ignore privacy status
2018-04-01 21:58:53 +01:00
Matt Mascarenhas a27e603e6e cinera.c: Add info for Per and Bitwise 2018-03-23 15:33:37 +00:00
Alex Baines 7034ce096b hmmlib.h: don't include stdbool 2018-03-14 23:01:54 +00:00
Matt Mascarenhas de2c632806 cinera.c: Binary search the .metadata
Also optimise out superfluous searches, and relieve IndexToBuffer() of
the need to string-search the .index

Rewrite the table of contents page after deleting an entry

This commit also retains profiling, as a reminder to me how I used it,
and the old linear search code. The timing blocks and the old code may
be deleted in a future commit
2018-03-06 20:40:12 +00:00
Matt Mascarenhas ab598e37e6 cinera_player_pre.js: Reenable YT interaction
Essentially, the previous change prevented the marker progress code from
firing if the user only interacts with the YouTube player directly.

cinera.c: Try to curl the quotes in, rather than straight up deleting
them, if(ShouldFetchQuotes)
2018-02-28 20:18:11 +00:00
Matt Mascarenhas 2053be1969 README.md: Update 2018-02-28 01:40:53 +00:00
Matt Mascarenhas 23e31df4e2 README.md: Update 2018-02-28 01:40:02 +00:00
Matt Mascarenhas 6f99a50f50 cinera_player_pre.js: Only resume() if playing 2018-02-28 01:25:50 +00:00
Matt Mascarenhas e7aefbada0 cinera.css: Marker and categories style
cinera_player_pre.js: Episode keyboard navigation. Also swap out A for
K, and D for J
cinera_player_pre.js: Handle the case in onRefChanged() in which the
filter_container or filterState is not present
cinera.c: Refetch quotes when processing a set of annotations >60 mins
after the last fetch

Flags:
    -w Force quote cache rebuild
2018-02-28 01:04:06 +00:00
Matt Mascarenhas 2cac3ed03b cinera.c: Add <!-- __CINERA_CUSTOMn__--> tags
Also compress the template code

cinera_player_pre.js: Fix bug in which onRefChanged() tried to call
player.jumpToNextMarker(); before the player was ready. This could
happen if its first marker's timecode is 0:00 and medium is :afk

Enable Theatre mode to work in containers styled with max-width or
max-height
2018-02-23 23:36:42 +00:00
Matt Mascarenhas c5bc487313 cinera.c: Prev / Next Episode Links
Also fix the inotify loop, augment the index (the .metadata files) to
contain data useful for insobot, and futureproof UpgradeDB()

Flags:

    * -e Examine Index
        Just pop an -e on the end of your usual list of flags
    * -u Update Interval (was -U)
2018-02-21 21:50:23 +00:00
Alex Baines bbd1d657a7 hmmlib: add custom attributes 2018-02-21 20:05:03 +00:00
Matt Mascarenhas c7762a0f7d cinera.css: Let cinera__*.css colour the indicator 2018-02-12 22:39:27 +00:00
Matt Mascarenhas 87e63a54e7 cinera.css: Index a:visited style 2018-02-12 21:54:28 +00:00
Matt Mascarenhas 9d9d8a6332 cinera.c: Validate timecode chronology
Also correctly skip .hmml files for credentials-related reasons
2018-02-05 23:57:17 +00:00
Matt Mascarenhas 1603245fad cinera.c: HTTPS for Miblo's HomepageURL 2018-02-04 21:52:32 +00:00
Matt Mascarenhas bd590d4c07 cinera.c: Miblo pledge credentials 2018-02-04 20:04:01 +00:00
Matt Mascarenhas e5d592dc11 cinera_search.js: Remove console.log 2018-01-28 21:57:35 +00:00
Matt Mascarenhas 0f27c96b29 cinera_search.js: Prevent crashes caused by | 2018-01-28 21:56:40 +00:00
Matt Mascarenhas 3d7add5b66 cinera: Handle sorting state separately from UI
Also add user-select: none
2018-01-21 19:30:54 +00:00
Matt Mascarenhas d7d27f59b7 cinera: Sortable index 2018-01-21 18:59:09 +00:00
Matt Mascarenhas b8013133b9 cinera: Fix theatre and add GUI clickable for it 2018-01-17 20:15:00 +00:00
Matt Mascarenhas f270ee2afa cinera: Theatre Mode
This also changes the hardcoded, unintegrated output to wrap cineraMenus
and cineraPlayerContainer in a <div>, as newly reflected in the example
template_player.html
2018-01-15 21:52:24 +00:00
Matt Mascarenhas 5e7029d2b0 cinera: Tweak filter
Introduce nullTopic, visually represent the media in annotations and
default to "exclusive" mode
2018-01-15 00:03:11 +00:00
Matt Mascarenhas 78861a1c78 cinera.css: Better behaving search .css
Keeps the results looking more consistent between various display widths
2018-01-12 23:26:07 +00:00
Matt Mascarenhas 93fa77b055 cinera.c: Correct template buffers
The template buffers no longer contain indentation spaces at the start
or a \n at the end. This removes any weirdness from template composition

Also remove the cleanup code added in 0.5.22
2018-01-08 22:59:36 +00:00
Matt Mascarenhas 6b1156292c cinera.c: Fix index reinsertion bug 2018-01-08 20:04:22 +00:00
Matt Mascarenhas acbe38b01f cinera.c: Fix 0.5.20 more correctly
The actual bug was that MarkerIndex wasn't being incremented for
HMML_CATEGORY markers mid-annotation... (HMML_MEMBER and HMML_PROJECT
were fine.)
2018-01-06 00:00:05 +00:00
Matt Mascarenhas b55f20dcb1 cinera.c: Keep non-topics out of cinera_topics.css
You would find @members and ~projects ending up in cinera_topics.css if
they were preceded by a topic :category in their annotation
2018-01-05 23:47:00 +00:00
Matt Mascarenhas 7d88e3c17d cinera.c: Only build search if != Single Edition 2018-01-05 20:03:02 +00:00
Matt Mascarenhas c1d6c87746 cinera.c: Bespoke template in Single Edition
Also fail gracefully if supplied with an .hmml file containing an
incomplete [video] node, or a template containing tags whose buffers
cannot be populated
2018-01-04 20:55:51 +00:00
Matt Mascarenhas 8f37ce0b76 cinera.c: Video-specific medium and template
Remove environment variable CINERA_INTEGRATE because this is meaningless
now that the default template locations are blank

Flags
    -t Template Directory (was Player Template Location)
    -y Player Template Location

Bug Fixes
    Correctly skip annotation sets that couldn't be processed for
    various reasons
    Fix crash caused by <!-- __CINERA_INDEX__ --> tag in a player
    template, because its buffer was being freed
    Fix 2048 bytes leak per processed set of annotations
2018-01-03 22:16:20 +00:00
Alex Baines 6fe3ed8dad add template + medium to metadata 2017-12-31 15:10:40 +00:00
Matt Mascarenhas f1e39e0513 cinera.c: Namespace .text to .cineraText 2017-12-29 16:00:44 +00:00
Matt Mascarenhas f6b85b5958 cinera.c: Enforce superscription of <sup> elements 2017-12-24 17:16:08 +00:00
Matt Mascarenhas e4c1446256 cinera.c: Call MakeDir() in GenerateTopicColours() 2017-12-24 01:57:11 +00:00
Matt Mascarenhas 120290b398 cinera.c: Support a combination of modes
Specifically, with the addition of MODE_ONESHOT in v0.5.12 we must allow
for the possibility of being in both that mode and MODE_INTEGRATE
2017-12-18 15:10:02 +00:00
Matt Mascarenhas 4a954b6ac6 cinera.c: Add -q flag
This sets cinera to "oneshot mode" which makes a Project Edition instance
quit after syncing from annotation files in project input directory
2017-12-18 14:31:05 +00:00
Matt Mascarenhas 1bbdf5aea4 cinera: Fix bug in image URL prefix construction 2017-12-18 00:15:03 +00:00
Matt Mascarenhas 153d14a810 cinera.c: Update Credentials array 2017-12-17 20:44:00 +00:00
Matt Mascarenhas 0aa585a15d cinera: Allow custom output paths
Relative to the Base:
    -a sets the player location
    -n sets the index location

Tweak flags, and add -B to set Base URL (necessary if setting -a or -n)

New template tags:
    __CINERA_URL__
    __CINERA_VIDEO_ID__

Bump DB version: 2
    index_header now contains the Index and Player Locations
2017-12-12 23:24:10 +00:00