home / github

Menu
  • Search all tables
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

10 rows where issue = 453846217 sorted by updated_at descending

✖
✖

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: created_at (date), updated_at (date)

user 2

  • simonw 9
  • Gagravarr 1

author_association 2

  • OWNER 9
  • NONE 1

issue 1

  • Option to display binary data · 10 ✖
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions issue performed_via_github_app
500903287 https://github.com/simonw/datasette/issues/506#issuecomment-500903287 https://api.github.com/repos/simonw/datasette/issues/506 MDEyOklzc3VlQ29tbWVudDUwMDkwMzI4Nw== simonw 9599 2019-06-11T15:48:27Z 2019-06-11T15:48:27Z OWNER

Calling out to Tika does make me a little nervous, but that's why Datasette has plugins! A plugin that calls Tika (and caches the results) could be really interesting.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Option to display binary data 453846217  
500238035 https://github.com/simonw/datasette/issues/506#issuecomment-500238035 https://api.github.com/repos/simonw/datasette/issues/506 MDEyOklzc3VlQ29tbWVudDUwMDIzODAzNQ== Gagravarr 1059677 2019-06-09T19:21:18Z 2019-06-09T19:21:18Z NONE

If you don't mind calling out to Java, then Apache Tika is able to tell you what a load of "binary stuff" is, plus render it to XHTML where possible.

There's a python wrapper around the Apache Tika server, but for a more typical datasette usecase you'd probably just want to grab the Tika CLI jar, and call it with --detect and/or --xhtml to process the unknown binary blob

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Option to display binary data 453846217  
500224864 https://github.com/simonw/datasette/issues/506#issuecomment-500224864 https://api.github.com/repos/simonw/datasette/issues/506 MDEyOklzc3VlQ29tbWVudDUwMDIyNDg2NA== simonw 9599 2019-06-09T16:07:39Z 2019-06-09T16:07:39Z OWNER

Shipped 0.1 of the plugin! I'm pretty happy with this display format:

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Option to display binary data 453846217  
500220862 https://github.com/simonw/datasette/issues/506#issuecomment-500220862 https://api.github.com/repos/simonw/datasette/issues/506 MDEyOklzc3VlQ29tbWVudDUwMDIyMDg2Mg== simonw 9599 2019-06-09T15:25:18Z 2019-06-09T15:26:23Z OWNER

I'm going to call this datasette-render-binary: https://github.com/simonw/datasette-render-binary

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Option to display binary data 453846217  
500220646 https://github.com/simonw/datasette/issues/506#issuecomment-500220646 https://api.github.com/repos/simonw/datasette/issues/506 MDEyOklzc3VlQ29tbWVudDUwMDIyMDY0Ng== simonw 9599 2019-06-09T15:22:12Z 2019-06-09T15:22:12Z OWNER

New idea: show essentially this but differentiate the escape sequences in some way. Maybe wrap them in <code> or put the non-escape sequences in bold?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Option to display binary data 453846217  
500183948 https://github.com/simonw/datasette/issues/506#issuecomment-500183948 https://api.github.com/repos/simonw/datasette/issues/506 MDEyOklzc3VlQ29tbWVudDUwMDE4Mzk0OA== simonw 9599 2019-06-09T04:22:58Z 2019-06-09T04:26:53Z OWNER

This is quite nice:

$ od -c /tmp/Thumb64Segment_11.data | head -n 10 0000000 \0 \0 @ \0 \0 \0 005 5 X T S F \0 \0 \0 001 0000020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0010000 025 030 . 377 026 032 . 377 027 033 - 377 031 035 0 377 0010020 032 036 1 377 036 5 377 037 ! 8 377 036 " : 377 0010040 036 8 377 $ : 377 ! & ; 377 $ * ? 377 0010060 ' - ? 377 % * < 377 % , > 377 - 3 E 377 0010100 6 ; M 377 : @ O 377 = C R 377 @ G V 377 0010120 @ I X 377 < B Q 377 8 @ N 377 8 @ P 377 0010140 : C T 377 ; C U 377 : C V 377 9 C W 377

Here's a rough Python equivalent http://code.activestate.com/recipes/579120-data_dumppy-like-the-unix-od-octal-dump-command/

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Option to display binary data 453846217  
500183106 https://github.com/simonw/datasette/issues/506#issuecomment-500183106 https://api.github.com/repos/simonw/datasette/issues/506 MDEyOklzc3VlQ29tbWVudDUwMDE4MzEwNg== simonw 9599 2019-06-09T03:59:12Z 2019-06-09T03:59:12Z OWNER

Another cheap trick is the equivalent of the Unix strings command - https://stackoverflow.com/questions/6804582/extract-strings-from-a-binary-file-in-python

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Option to display binary data 453846217  
500183002 https://github.com/simonw/datasette/issues/506#issuecomment-500183002 https://api.github.com/repos/simonw/datasette/issues/506 MDEyOklzc3VlQ29tbWVudDUwMDE4MzAwMg== simonw 9599 2019-06-09T03:56:06Z 2019-06-09T03:56:06Z OWNER

What are some other interesting tricks we can use to make binary data a bit more interesting to look at?

https://martin.varela.fi/2017/09/09/simple-binary-data-visualization/ has some really clever visualization tricks - probably a bit much for this plugin though. See also https://codisec.com/binary-visualization-explained/

https://github.com/tryexceptpass/perceptio is some much simpler code for rendering an image for a binary.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Option to display binary data 453846217  
500173881 https://github.com/simonw/datasette/issues/506#issuecomment-500173881 https://api.github.com/repos/simonw/datasette/issues/506 MDEyOklzc3VlQ29tbWVudDUwMDE3Mzg4MQ== simonw 9599 2019-06-08T23:55:52Z 2019-06-08T23:55:52Z OWNER

Possible plugin direction:

```python import filetype # https://pypi.org/project/filetype/

@hookimpl(trylast=True) def render_cell(value): if isinstance(value, bytes): info = repr(value) # May still want to truncate this on table view (but not on row page) guess = filetype.guess(value) if guess is not None: # Need jinja2 markup here for \n to display info = "Guess: mime={}, extension={}\n\n{}".format( guess.mime, guess.extension, info ) return info

return None

```

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Option to display binary data 453846217  
500173464 https://github.com/simonw/datasette/issues/506#issuecomment-500173464 https://api.github.com/repos/simonw/datasette/issues/506 MDEyOklzc3VlQ29tbWVudDUwMDE3MzQ2NA== simonw 9599 2019-06-08T23:44:59Z 2019-06-08T23:44:59Z OWNER

This could also be handled by a plugin.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Option to display binary data 453846217  

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issue_comments] (
   [html_url] TEXT,
   [issue_url] TEXT,
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [created_at] TEXT,
   [updated_at] TEXT,
   [author_association] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [issue] INTEGER REFERENCES [issues]([id])
, [performed_via_github_app] TEXT);
CREATE INDEX [idx_issue_comments_issue]
                ON [issue_comments] ([issue]);
CREATE INDEX [idx_issue_comments_user]
                ON [issue_comments] ([user]);
Powered by Datasette · Queries took 26.663ms · About: github-to-sqlite
  • Sort ascending
  • Sort descending
  • Facet by this
  • Hide this column
  • Show all columns
  • Show not-blank rows