voussoir
491992b606
Some linting.
2021-08-20 22:59:17 -07:00
voussoir
46fc9ecef3
Define color_primary which was previously not set.
2021-06-25 23:05:06 -07:00
voussoir
b90618a93b
Fix leftover imports.
2021-06-07 14:56:54 -07:00
voussoir
f2a81720bd
Move make_json_response to voussoirkit.flasktools.
2021-06-04 21:50:09 -07:00
voussoir
d2af56c3f0
Reduce excessive hash spacer.
2021-06-04 21:41:46 -07:00
voussoir
d76d592501
Add endpoint /all_channels.json to facilitate future autocomplete.
2021-06-04 21:41:30 -07:00
voussoir
8b4edad9f2
Replace single quotes with double quotes.
2021-06-04 21:37:10 -07:00
voussoir
83672736d5
Remove unnecessary intermediate variable ip.
2021-06-04 21:34:05 -07:00
voussoir
742034d287
Replace margin with grid-row-gap.
2021-06-04 20:48:51 -07:00
voussoir
67619c506e
Replace #000 with black.
2021-06-04 20:47:54 -07:00
voussoir
a697fabfff
Give class channel_card to both pending and not.
2021-06-04 20:44:57 -07:00
voussoir
c74b9523e4
Don't sort channels from get_channels, use get_things.
2021-06-04 20:35:17 -07:00
voussoir
00917f585e
Turn off hotkeys.js logging every press.
2021-06-04 13:03:05 -07:00
voussoir
b9019095e2
Synchronize with Etiquette.
2021-06-01 18:18:08 -07:00
voussoir
16be502991
Add explanation to common.css --wide --narrow.
2021-05-19 23:43:21 -07:00
voussoir
74d4a55d32
Rename import bot -> youtube_credentials.
...
In the days of making reddit bots I always put creds into bot.py.
But for this project it wouldn't make any sense to newcomers.
2021-04-25 18:02:26 -07:00
voussoir
8a6f33851e
Pass skip_failures=True from frontend button.
2021-04-21 21:31:03 -07:00
voussoir
991bafb46e
Use let for video_cards assignment.
2021-04-16 16:53:09 -07:00
voussoir
d185a3f451
Update requirements.txt.
2021-04-04 11:17:11 -07:00
voussoir
9b6af96b95
Use voussoirkit.flasktools for gzip_response.
2021-04-02 18:31:04 -07:00
voussoir
e00bfa368b
Update docstring "launch ycdl_flask_dev, _prod".
2021-04-02 18:00:01 -07:00
voussoir
fa363a33c7
Improve handling of livestreams, premieres with live_broadcast attr.
2021-03-31 17:24:57 -07:00
voussoir
cfad775a0a
Move published_string to a property of the Video object.
2021-03-24 20:29:15 -07:00
voussoir
b134a8783b
Remove unnecessary query_string argument.
2021-03-24 20:09:23 -07:00
voussoir
9c5fb4fec1
Move jsonify methods to the objects instead of separate file.
2021-02-25 19:46:00 -08:00
voussoir
65fdae97da
Store request.is_localhost like Etiquette.
2021-02-25 19:45:11 -08:00
voussoir
6db7fe9a24
Punctuate pid line.
2021-01-30 04:34:46 -08:00
voussoir
69ae0280f4
Wrap Channel RSS link in div so a-tag doesn't stretch all the way.
2021-01-30 04:31:54 -08:00
voussoir
acf29b9e9f
Show pid when server starts.
2021-01-30 04:31:48 -08:00
voussoir
5bedabdc66
Move site.debug to _dev, _prod launchers.
2021-01-28 16:46:54 -08:00
voussoir
d3555dfbf3
Sync with Etiquette.
2021-01-11 15:36:16 -08:00
voussoir
4bf27d4458
Sync with Etiquette.
2021-01-02 16:54:20 -08:00
voussoir
56dfb6db19
Add the state filter's name into the "X items" line.
2020-11-26 18:24:15 -08:00
voussoir
083e9dd2ee
Add (p) link to pending videos from generic listing page.
2020-11-21 11:25:46 -08:00
voussoir
8de342b054
Set log level by argv.
2020-11-20 16:23:36 -08:00
voussoir
ced16d9063
Don't traceback.print_exc.
2020-11-15 21:10:01 -08:00
voussoir
ca8a2a2d55
Add channel's RSS link to the settings tab.
2020-11-15 17:57:23 -08:00
voussoir
e4b769336b
Set ytrss log level during flask launch.
2020-11-15 17:57:07 -08:00
voussoir
11414b4088
Add log_level param to constructor, like Etq.
2020-11-09 20:22:54 -08:00
voussoir
8cdf18b987
Wrap long line.
2020-11-09 20:20:45 -08:00
voussoir
5841279f9e
Sync common.js with Etiquette.
2020-11-08 19:32:04 -08:00
voussoir
be7c5982e9
Don't use a default refresh rate. User must provide --refresh_rate.
2020-11-03 00:04:32 -08:00
voussoir
4b1fde386d
Add some docstrings to the request code.
2020-11-03 00:03:59 -08:00
voussoir
e09153c5e3
Alert response if download/ignore/pending action fails.
2020-10-29 16:14:58 -07:00
voussoir
42417ed008
Sync common.js with Etiquette.
2020-10-23 07:44:18 -07:00
voussoir
c5c67b9c69
Let select_all, deselect_all ignore hidden cards.
...
So that ctrl+a after filtering only selects the filter results.
2020-10-11 18:43:47 -07:00
voussoir
67a3472aad
Avoid creating emptystring promptclass.
2020-10-04 16:53:27 -07:00
voussoir
14ab3f3b06
Reorganize a bunch of functions and other indulgences.
2020-10-02 19:46:36 -07:00
voussoir
ed3942b943
Let response status be 0 even if request didn't complete.
...
Since meta.status would be undefined for an incomplete request,
I would have to check response.completed && response.meta.status,
which is too much burden. Let's set the status immediately, and
if a callback wants to do further diving we'll use completed then.
2020-10-02 19:43:25 -07:00
voussoir
94e3bcd21d
Set tabbed_container data-active-tab-id on tab change.
2020-10-02 13:17:38 -07:00
voussoir
0f9fbfa6e8
Add synchronized hotkeys.js from Etiquette; add ctrl+a, ctrl+d.
2020-10-02 13:17:08 -07:00
voussoir
d1b42b71cb
Enforce keyword-only args, alphabetize args.
2020-09-30 15:17:27 -07:00
voussoir
bb72c40c53
Add option --localhost_only.
2020-09-30 15:15:30 -07:00
voussoir
038ce9cffb
Rename flask launchers -> _dev, _prod.
...
I want to reduce some complexity around here, part of which is that
launch imported entrypoint imported backend, all to do some proxy
wrapping which isn't necessary for the dev case anyway. Less
layers of wrapping and importing is good. Plus I think this naming
is more clear.
Additionally, I realized that the entrypoint aka prod launcher was
never updated to init the ycdldb as that was only done by the argparse
launcher. Now it's hardcoded and I'll consider adding a config file.
2020-09-30 15:03:29 -07:00
voussoir
f77809e793
Add top docstring and log format like Etiquette.
2020-09-30 14:47:05 -07:00
voussoir
fb1d5d3e6e
Add select_all.
2020-09-29 10:55:04 -07:00
voussoir
ede7eab80b
Replace this loop with a nice map.
2020-09-29 10:54:58 -07:00
voussoir
16dc6066df
Leverage live HTMLCollection for selections instead of separate array.
2020-09-29 10:54:31 -07:00
voussoir
898be91538
Spread video embed string over multiple lines.
2020-09-29 01:17:05 -07:00
voussoir
572612a282
Replace variable swap with a one-liner.
2020-09-29 01:16:35 -07:00
voussoir
e584e05f5e
Move color definitions from common.css to ycdl.css.
2020-09-25 16:25:39 -07:00
voussoir
4f6080859a
Synchronize Etiquette and YCDL.
2020-09-22 02:59:17 -07:00
voussoir
69c1dd92e9
Synchronize --wide, --narrow with Etiquette.
2020-09-19 10:42:31 -07:00
voussoir
34aafedf46
Synchronize with Etiquette.
2020-09-18 16:35:02 -07:00
voussoir
741cddc2e4
Add set_queuefile_extension method, endpoint, and ui.
2020-09-16 10:23:38 -07:00
voussoir
223d3d01fb
Rename automark_hook -> _form; use more const.
2020-09-16 10:22:33 -07:00
voussoir
76b1504353
Synchronize with Etiquette.
2020-09-15 15:04:50 -07:00
voussoir
ec19301bcc
Rewrite entry_with_history hook and use keydown instead of keyup.
2020-09-12 10:14:52 -07:00
voussoir
f4455f5a82
Add return to onchange.
2020-09-12 10:14:06 -07:00
voussoir
cd5106df59
Rename color_3d_shadow -> color_shadow.
2020-09-09 15:58:04 -07:00
voussoir
0116d80740
Mark the current state and orderby links in bold.
2020-09-05 17:49:04 -07:00
voussoir
d0e803aa66
Supply the orderby argument to channel.html template.
2020-09-05 17:48:29 -07:00
voussoir
d140a580c3
Add .bold class.
2020-09-05 17:47:53 -07:00
voussoir
37df5a6443
Remove spacer <p>s and embrace the grid-gap.
2020-09-05 09:31:37 -07:00
voussoir
339fa6649f
Remove useless one-tab container for sub box by better if placement.
2020-09-05 09:31:13 -07:00
voussoir
e5910c55f2
Rename database column `download` to `state`.
2020-09-04 15:55:48 -07:00
voussoir
0ae041f001
Add whitelist/blacklist functionality to merge_params.
2020-09-04 15:10:58 -07:00
voussoir
7d3a9fe03e
Add explanation of data-prompt-class et al.
...
I think I left these blank because I felt they should be obvious.
But I'd rather have it explicit.
2020-09-04 14:50:30 -07:00
voussoir
fc4aebc4a4
Fix double "return return".
2020-09-04 14:48:50 -07:00
voussoir
98fae96a8a
Add spinner.BAIL for cancelling spinner without launching callback.
2020-09-04 11:24:08 -07:00
voussoir
0518765f33
Add css/js class entry_with_history to automate adding the hook.
2020-09-04 11:18:41 -07:00
voussoir
26704c238e
Fix catch ytapi.ChannelNotFound and return json 404.
2020-09-04 10:48:08 -07:00
voussoir
4af4985ac5
Add return to all onclicks, and ; to other javascript hooks.
2020-09-04 10:37:49 -07:00
voussoir
afcea49135
Fine-tune use of let/const in spinner.js.
2020-09-03 15:57:07 -07:00
voussoir
03c366fff8
Replace var with let/const.
2020-09-03 15:44:58 -07:00
voussoir
2a5983b124
Change #content_body width from 95% to 98%.
2020-09-03 12:06:35 -07:00
voussoir
a524249ab4
Improve color of tab buttons active/inactive/hover.
2020-09-03 12:03:53 -07:00
voussoir
3a455d377b
Rewrite channel.html as tabbed container, separate videos/settings.
2020-09-03 11:54:51 -07:00
voussoir
f103447807
Add css/js class tabbed_container.
2020-09-03 11:54:00 -07:00
voussoir
b8c25f217d
Synchronize Etiquette common.css and YCDL common.css.
2020-09-03 11:52:51 -07:00
voussoir
d4cad47b78
Add docstring to init_enable_on_pageload.
2020-09-03 11:51:30 -07:00
voussoir
8dd7fb987d
Add placeholder text to new_channel_textbox.
2020-09-03 11:44:49 -07:00
voussoir
c37cd60d4d
Compress responses with gzip.
2020-08-28 16:43:02 -07:00
voussoir
65e0d58576
Disable filter textbox until pageload.
...
For channels with many thousands of videos, it can be a while
before the DOM is fully parsed and ready to go. It is annoying
to type in the box and find that it doesn't work yet, since the
script tag comes after body.
Why not move the script above body? Because I don't want to,
and because you'd be filtering from an incomplete list of
videos anyway.
2020-08-28 16:21:42 -07:00
voussoir
25e9975926
Add css/js class enable_on_pageload.
2020-08-28 16:18:51 -07:00
voussoir
25a611e39e
Add 200ms timeout before filtering while you type your query.
2020-08-27 17:11:52 -07:00
voussoir
7b197c867b
Speed up filtering by hiding #video_cards first.
...
On large channels, filter_video_cards is painfully slow because of all
the forced reflows. I'm currently trying to find a better solution.
In the meantime, hiding the containing div does prevent those reflows
until the end, but itself is also quite slow.
2020-08-27 16:53:51 -07:00
voussoir
412d324352
Remove unused parameter event.
2020-08-20 15:09:37 -07:00
voussoir
e083223cfc
Add button_with_spinner class to add channel button.
2020-08-20 15:09:23 -07:00
voussoir
17cd98fa50
Let image thumbnails lazy load.
2020-08-15 22:28:53 -07:00