home / github

Menu
  • Search all tables
  • GraphQL API

issues

Table actions
  • GraphQL API for issues

158 rows where author_association = "MEMBER", state = "closed" and user = 9599 sorted by updated_at descending

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: milestone, comments, created_at (date), updated_at (date), closed_at (date)

repo 10

  • github-to-sqlite 46
  • twitter-to-sqlite 42
  • dogsheep-beta 22
  • dogsheep-photos 16
  • healthkit-to-sqlite 10
  • swarm-to-sqlite 7
  • evernote-to-sqlite 5
  • apple-notes-to-sqlite 5
  • pocket-to-sqlite 4
  • hacker-news-to-sqlite 1

type 2

  • issue 153
  • pull 5

state 1

  • closed · 158 ✖
id node_id number title user state locked assignee milestone comments created_at updated_at ▲ closed_at author_association pull_request body repo type active_lock_reason performed_via_github_app reactions draft state_reason
1795187493 I_kwDODLZ_YM5rAGMl 12 Switch to pyproject.toml simonw 9599 closed 0     2 2023-07-09T01:06:56Z 2023-07-09T01:19:43Z 2023-07-09T01:19:42Z MEMBER  

First of my CLI tools to use https://til.simonwillison.net/python/pyproject

pocket-to-sqlite 213286752 issue    
{
    "url": "https://api.github.com/repos/dogsheep/pocket-to-sqlite/issues/12/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1661617056 I_kwDODD6af85jCkOg 15 ambiguous column name: createdAt - on checkin_details view simonw 9599 closed 0     0 2023-04-11T01:07:47Z 2023-04-11T03:16:37Z 2023-04-11T03:16:37Z MEMBER  

It looks like Swarm changed their schema and now both venues and checkins have createdAt fields.

Which breaks this view: https://github.com/dogsheep/swarm-to-sqlite/blob/719b6e96a016d0ca8b316d3bed9c2a7a0cb499ee/swarm_to_sqlite/utils.py#L171-L188

swarm-to-sqlite 205429375 issue    
{
    "url": "https://api.github.com/repos/dogsheep/swarm-to-sqlite/issues/15/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1617769847 I_kwDOJHON9s5gbTV3 7 Folder support simonw 9599 closed 0     6 2023-03-09T18:21:33Z 2023-03-09T20:48:18Z 2023-03-09T20:48:18Z MEMBER  

Notes can live in folders. These relationships should be exported too.

apple-notes-to-sqlite 611552758 issue    
{
    "url": "https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/7/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1617962395 I_kwDOJHON9s5gcCWb 10 Include schema in README simonw 9599 closed 0     0 2023-03-09T20:38:59Z 2023-03-09T20:48:18Z 2023-03-09T20:48:18Z MEMBER  

As seen in other tools like https://github.com/simonw/git-history

apple-notes-to-sqlite 611552758 issue    
{
    "url": "https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/10/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1616354999 I_kwDOJHON9s5gV563 2 First working version simonw 9599 closed 0     7 2023-03-09T03:53:00Z 2023-03-09T05:10:22Z 2023-03-09T05:10:22Z MEMBER  

It's going to shell out to osascript as seen in: - #1

I'm going with that option because https://appscript.sourceforge.io/status.html warns against the other potential methods:

Apple eliminated its Mac Automation department in 2016. The future of AppleScript and its related technologies is unclear. Caveat emptor.

But osascript looks pretty stable to me.

apple-notes-to-sqlite 611552758 issue    
{
    "url": "https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/2/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1616422013 I_kwDOJHON9s5gWKR9 3 `apple-notes-to-sqlite --dump` option simonw 9599 closed 0     0 2023-03-09T05:05:49Z 2023-03-09T05:06:14Z 2023-03-09T05:06:14Z MEMBER  

Option that doesn't write to the database at all, it just outputs all the notes to stdout as newline-delimited JSON.

apple-notes-to-sqlite 611552758 issue    
{
    "url": "https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/3/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1616347574 I_kwDOJHON9s5gV4G2 1 Initial proof of concept with ChatGPT simonw 9599 closed 0     3 2023-03-09T03:44:39Z 2023-03-09T03:51:55Z 2023-03-09T03:51:55Z MEMBER  

I'm using ChatGPT to figure out enough AppleScript to get at my notes data.

apple-notes-to-sqlite 611552758 issue    
{
    "url": "https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/1/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
520508502 MDU6SXNzdWU1MjA1MDg1MDI= 31 "friends" command (similar to "followers") simonw 9599 closed 0     2 2019-11-09T20:20:20Z 2022-09-20T05:05:03Z 2020-02-07T07:03:28Z MEMBER  

Current list of commands: followers Save followers for specified user (defaults to... followers-ids Populate followers table with IDs of account followers friends-ids Populate followers table with IDs of account friends Obvious omission here is friends, which would be powered by https://api.twitter.com/1.1/friends/list.json: https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-friends-list

twitter-to-sqlite 206156866 issue    
{
    "url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/31/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1308461063 I_kwDODFdgUs5N_YgH 74 500 error in github-to-sqlite demo simonw 9599 closed 0     5 2022-07-18T19:39:32Z 2022-07-18T21:16:18Z 2022-07-18T21:14:22Z MEMBER  

https://github-to-sqlite.dogsheep.net/github/issue_comments throws a 500:

cannot import name 'etree' from 'markdown.util' (/usr/local/lib/python3.8/site-packages/markdown/util.py)

https://console.cloud.google.com/run/detail/us-central1/github-to-sqlite/metrics?project=datasette-222320 suggests this started happening 3 days ago.

github-to-sqlite 207052882 issue    
{
    "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/74/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
978743426 MDU6SXNzdWU5Nzg3NDM0MjY= 13 xml.etree.ElementTree.ParseError: not well-formed (invalid token) simonw 9599 closed 0     4 2021-08-25T05:48:21Z 2021-08-26T18:45:13Z 2021-08-26T18:45:13Z MEMBER  

Got this error today: (evernote-to-sqlite) /tmp % evernote-to-sqlite enex evernote.db simonwillison\'s\ notebook.enex Importing from ENEX [######------------------------------] 17% Traceback (most recent call last): File "/Users/simon/.local/bin/evernote-to-sqlite", line 8, in <module> sys.exit(cli()) File "/Users/simon/.local/pipx/venvs/evernote-to-sqlite/lib/python3.9/site-packages/click/core.py", line 1137, in __call__ return self.main(*args, **kwargs) File "/Users/simon/.local/pipx/venvs/evernote-to-sqlite/lib/python3.9/site-packages/click/core.py", line 1062, in main rv = self.invoke(ctx) File "/Users/simon/.local/pipx/venvs/evernote-to-sqlite/lib/python3.9/site-packages/click/core.py", line 1668, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/Users/simon/.local/pipx/venvs/evernote-to-sqlite/lib/python3.9/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/Users/simon/.local/pipx/venvs/evernote-to-sqlite/lib/python3.9/site-packages/click/core.py", line 763, in invoke return __callback(*args, **kwargs) File "/Users/simon/.local/pipx/venvs/evernote-to-sqlite/lib/python3.9/site-packages/evernote_to_sqlite/cli.py", line 31, in enex save_note(db, note) File "/Users/simon/.local/pipx/venvs/evernote-to-sqlite/lib/python3.9/site-packages/evernote_to_sqlite/utils.py", line 36, in save_note content = ET.tostring(ET.fromstring(content_xml)).decode("utf-8") File "/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/xml/etree/ElementTree.py", line 1347, in XML parser.feed(text) xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 2, column 132

evernote-to-sqlite 303218369 issue    
{
    "url": "https://api.github.com/repos/dogsheep/evernote-to-sqlite/issues/13/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
975158266 MDU6SXNzdWU5NzUxNTgyNjY= 19 table activity_summary has no column named appleMoveTime simonw 9599 closed 0     0 2021-08-20T00:46:44Z 2021-08-20T00:54:34Z 2021-08-20T00:54:34Z MEMBER  

Got this error today against a fresh export:

table activity_summary has no column named appleMoveTime
healthkit-to-sqlite 197882382 issue    
{
    "url": "https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/19/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
919733213 MDU6SXNzdWU5MTk3MzMyMTM= 33 Searching for whitespace throws an error simonw 9599 closed 0     0 2021-06-13T06:57:57Z 2021-06-13T14:36:39Z 2021-06-13T14:36:39Z MEMBER  

https://datasette.io/-/beta?q=+ returns a 500

fts5: syntax error near ""

dogsheep-beta 197431109 issue    
{
    "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/33/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
612151767 MDU6SXNzdWU2MTIxNTE3Njc= 15 Expose scores from ZCOMPUTEDASSETATTRIBUTES simonw 9599 closed 0     7 2020-05-04T20:36:07Z 2020-12-20T04:44:22Z 2020-05-05T00:11:45Z MEMBER  

The Apple Photos database has a ZCOMPUTEDASSETATTRIBUTES that looks absurdly interesting... it has calculated scores for every photo:

dogsheep-photos 256834907 issue    
{
    "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/15/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
615474990 MDU6SXNzdWU2MTU0NzQ5OTA= 21 bpylist.archiver.CircularReference: archive has a cycle with uid(13) simonw 9599 closed 0     11 2020-05-10T20:58:06Z 2020-12-19T07:44:49Z 2020-05-10T21:57:13Z MEMBER  

``` % python -i $(which photos-to-sqlite) apple-photos photos.db
Traceback (most recent call last): File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/osxphotos/photoinfo.py", line 611, in place return self._place # pylint: disable=access-member-before-definition AttributeError: 'PhotoInfo' object has no attribute '_place'

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/bin/photos-to-sqlite", line 11, in <module> load_entry_point('photos-to-sqlite', 'console_scripts', 'photos-to-sqlite')() File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/click/core.py", line 829, in call return self.main(args, kwargs) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, ctx.params) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/click/core.py", line 610, in invoke return callback(args, **kwargs) File "/Users/simon/Dropbox/Development/photos-to-sqlite/photos_to_sqlite/cli.py", line 249, in apple_photos photo_row = osxphoto_to_row(sha256, photo) File "/Users/simon/Dropbox/Development/photos-to-sqlite/photos_to_sqlite/utils.py", line 91, in osxphoto_to_row place = photo.place File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/osxphotos/photoinfo.py", line 614, in place self._place = PlaceInfo5(self._info["reverse_geolocation"]) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/osxphotos/placeinfo.py", line 505, in init self._plrevgeoloc = archiver.unarchive(revgeoloc_bplist) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 16, in unarchive return Unarchive(plist).top_object() File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 256, in top_object return self.decode_object(self.top_uid) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 247, in decode_object obj = klass.decode_archive(ArchivedObject(raw_obj, self)) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/osxphotos/placeinfo.py", line 126, in decode_archive mapItem = archive.decode("mapItem") File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 140, in decode return self._unarchiver.decode_key(self._object, key) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 216, in decode_key return self.decode_object(val) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 247, in decode_object obj = klass.decode_archive(ArchivedObject(raw_obj, self)) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/osxphotos/placeinfo.py", line 180, in decode_archive sortedPlaceInfos = archive.decode("sortedPlaceInfos") File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 140, in decode return self._unarchiver.decode_key(self._object, key) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 216, in decode_key return self.decode_object(val) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 247, in decode_object obj = klass.decode_archive(ArchivedObject(raw_obj, self)) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 112, in decode_archive return [archive._decode_index(index) for index in uids] File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 112, in <listcomp> return [archive._decode_index(index) for index in uids] File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 137, in _decode_index return self._unarchiver.decode_object(index) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 247, in decode_object obj = klass.decode_archive(ArchivedObject(raw_obj, self)) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/osxphotos/placeinfo.py", line 217, in decode_archive placeType = archive.decode("placeType") File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 140, in decode return self._unarchiver.decode_key(self._object, key) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 216, in decode_key return self.decode_object(val) File "/Users/simon/.local/share/virtualenvs/photos-to-sqlite-0uGSHd6e/lib/python3.8/site-packages/bpylist/archiver.py", line 227, in decode_object raise CircularReference(index) bpylist.archiver.CircularReference: archive has a cycle with uid(13) In the debugger I traced this back to: 178 @staticmethod 179 def decode_archive(archive): 180 -> sortedPlaceInfos = archive.decode("sortedPlaceInfos") 181 finalPlaceInfos = archive.decode("finalPlaceInfos") 182 return PLRevGeoMapItem(sortedPlaceInfos, finalPlaceInfos) ```

dogsheep-photos 256834907 issue    
{
    "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/21/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
771316301 MDU6SXNzdWU3NzEzMTYzMDE= 31 Searching for "github-to-sqlite" throws an error simonw 9599 closed 0     4 2020-12-19T06:07:20Z 2020-12-19T06:18:07Z 2020-12-19T06:18:07Z MEMBER  

https://datasette.io/-/beta?q=github-to-sqlite&sort=relevance&type=blog.db%2Fentries - "no such column: to"

dogsheep-beta 197431109 issue    
{
    "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/31/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
769282206 MDU6SXNzdWU3NjkyODIyMDY= 30 Upgrade to sqlite-utils 3.0 (tests are failing) simonw 9599 closed 0     0 2020-12-16T21:25:15Z 2020-12-16T21:27:11Z 2020-12-16T21:27:10Z MEMBER  

``` results = beta_db["search_index"].search("run") if use_porter: assert results == [ ( "dogs.db/dogs", "1", "Cleo", "2020-08-22 04:41:33", 1, 0, "running", None, None, ) ] else:

      assert results == []

E assert <generator ob...x7f3c080a3e08> == [] E +<generator object Table.search at 0x7f3c080a3e08> E -[] E Full diff: E - [] E + <generator object Table.search at 0x7f3c080a3e08> ``` This was caused by a backwards incompatible change in sqlite-utils 3.0: https://sqlite-utils.readthedocs.io/en/stable/changelog.html#v3-0

dogsheep-beta 197431109 issue    
{
    "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/30/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
769150394 MDU6SXNzdWU3NjkxNTAzOTQ= 58 Readme HTML has broken internal links simonw 9599 closed 0     2 2020-12-16T17:58:11Z 2020-12-16T19:20:14Z 2020-12-16T19:20:14Z MEMBER  

From https://github.com/simonw/datasette.io/issues/46 ```html

  • Filtering tables
  • ...

    <svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>Filtering tables

    ``` So this is a bug in GitHub's API, but we need to work around it.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/58/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    758944006 MDU6SXNzdWU3NTg5NDQwMDY= 57 --readme throws 404 error if README does not exist in repo simonw 9599 closed 0     0 2020-12-07T23:58:49Z 2020-12-16T18:17:54Z 2020-12-16T18:17:54Z MEMBER  

    It should fail silently (populate the column with a null) instead.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/57/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    753122082 MDU6SXNzdWU3NTMxMjIwODI= 56 Link to example tables from the README simonw 9599 closed 0     0 2020-11-30T04:01:51Z 2020-11-30T04:10:27Z 2020-11-30T04:10:27Z MEMBER  

    Would help demonstrate how the tool works.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/56/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    753026388 MDU6SXNzdWU3NTMwMjYzODg= 55 github-to-sqlite workflows does not correctly replace existing records simonw 9599 closed 0     0 2020-11-29T21:58:43Z 2020-11-29T23:48:50Z 2020-11-29T23:48:50Z MEMBER  

    Following #54 - see this TODO: https://github.com/dogsheep/github-to-sqlite/blob/1b23ce11953f9f59c0161ea1f99188b55b5ea11c/github_to_sqlite/utils.py#L700

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/55/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    753026003 MDU6SXNzdWU3NTMwMjYwMDM= 54 github-to-sqlite workflows command simonw 9599 closed 0     3 2020-11-29T21:56:42Z 2020-11-29T22:08:46Z 2020-11-29T21:57:17Z MEMBER  

    A command that fetches the YAML workflows for different repos, parses them and stores them in relational tables would be really useful for maintaining larger numbers of workflows.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/54/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    724264574 MDU6SXNzdWU3MjQyNjQ1NzQ= 52 Option to fetch README and/or HTML-rendered README for repos simonw 9599 closed 0     0 2020-10-19T05:10:24Z 2020-10-19T05:33:42Z 2020-10-19T05:33:42Z MEMBER  

    I'm thinking:

    github-to-sqlite repos ... --readme # Populates readme column with raw text
    github-to-sqlite repos ... --readme-html # Populates readme_html column with raw HTML
    

    https://developer.github.com/v3/repos/contents/#get-a-repository-readme

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/52/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    723861683 MDU6SXNzdWU3MjM4NjE2ODM= 28 Switch to using datasette.client simonw 9599 closed 0     1 2020-10-17T22:42:26Z 2020-10-17T23:00:47Z 2020-10-17T23:00:47Z MEMBER  

    datasette.client is designed for this kind of thing, to replace this code: https://github.com/dogsheep/dogsheep-beta/blob/bed9df2b3ef68189e2e445427721a28f4e9b4887/dogsheep_beta/init.py#L223-L232

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/28/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    718949182 MDU6SXNzdWU3MTg5NDkxODI= 6 Better handling of OCR data simonw 9599 closed 0     2 2020-10-11T23:20:52Z 2020-10-12T00:04:10Z 2020-10-12T00:04:10Z MEMBER  

    I haven't done the FTS on OCR yet. I'm going to move that to another ticket because it requires more thought.

    Originally posted by @simonw in https://github.com/dogsheep/evernote-to-sqlite/issues/4#issuecomment-706784028

    evernote-to-sqlite 303218369 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/evernote-to-sqlite/issues/6/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    718938508 MDU6SXNzdWU3MTg5Mzg1MDg= 4 Configure FTS + add an index on the date columns simonw 9599 closed 0     2 2020-10-11T22:14:40Z 2020-10-11T23:41:29Z 2020-10-11T23:41:29Z MEMBER  

    Sort by date descending is likely the most common way of sorting, so that column should be indexed.

    Also add FTS configuration for both notes and the OCR column on resources.

    evernote-to-sqlite 303218369 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/evernote-to-sqlite/issues/4/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    718938321 MDU6SXNzdWU3MTg5MzgzMjE= 3 Use a content hash for the note IDs simonw 9599 closed 0     0 2020-10-11T22:13:46Z 2020-10-11T23:15:04Z 2020-10-11T23:15:04Z MEMBER  

    Without a GUID note IDs are pretty ineffective, but using a hash of the contents will at least avoid creating identical duplicates in the future.

    https://sqlite-utils.readthedocs.io/en/stable/python-api.html#setting-an-id-based-on-the-hash-of-the-row-contents

    evernote-to-sqlite 303218369 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/evernote-to-sqlite/issues/3/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    718938046 MDU6SXNzdWU3MTg5MzgwNDY= 2 Convert dates to a better format simonw 9599 closed 0     0 2020-10-11T22:12:33Z 2020-10-11T23:15:03Z 2020-10-11T23:15:03Z MEMBER  

    They currently look like this:

    https://github.com/dogsheep/evernote-to-sqlite/blob/9d8efd17580f6ddf76745c145d1e69dd24e52b64/tests/test_evernote_to_sqlite.py#L35-L36

    evernote-to-sqlite 303218369 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/evernote-to-sqlite/issues/2/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    703970713 MDU6SXNzdWU3MDM5NzA3MTM= 23 Sort option should persist between multiple searches simonw 9599 closed 0     0 2020-09-17T23:21:26Z 2020-09-18T22:39:12Z 2020-09-18T22:39:12Z MEMBER  

    Following #21

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/23/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    703970814 MDU6SXNzdWU3MDM5NzA4MTQ= 24 the JSON object must be str, bytes or bytearray, not 'Undefined' simonw 9599 closed 0     8 2020-09-17T23:21:41Z 2020-09-18T22:33:32Z 2020-09-18T22:33:32Z MEMBER  

    Got this on a search results page.

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/24/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    704685890 MDU6SXNzdWU3MDQ2ODU4OTA= 25 template_debug mechanism simonw 9599 closed 0     2 2020-09-18T22:11:09Z 2020-09-18T22:12:21Z 2020-09-18T22:12:03Z MEMBER  

    I'd prefer it if errors in these template fragments were displayed as errors inline where the fragment should have been inserted, rather than 500ing the whole page - especially since the template fragments are user-provided and could have all kinds of odd errors in them which should be as easy to debug as possible. Originally posted by @simonw in https://github.com/dogsheep/dogsheep-beta/issues/24#issuecomment-694554584

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/25/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    703962917 MDU6SXNzdWU3MDM5NjI5MTc= 22 Bug: UI says sorted by relevance in timeline view simonw 9599 closed 0     0 2020-09-17T23:02:07Z 2020-09-17T23:13:14Z 2020-09-17T23:13:14Z MEMBER  

    In regular timeline view sort defaults to newest, not relevance - so this UI is incorrect:

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/22/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    703951918 MDU6SXNzdWU3MDM5NTE5MTg= 21 Option to sort search results by date simonw 9599 closed 0     0 2020-09-17T22:32:39Z 2020-09-17T22:55:35Z 2020-09-17T22:55:35Z MEMBER  

    Sometimes I want to sort by date, not by relevance.

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/21/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    694500679 MDU6SXNzdWU2OTQ1MDA2Nzk= 17 Rename "table" to "type" simonw 9599 closed 0     2 2020-09-06T19:34:41Z 2020-09-09T03:03:22Z 2020-09-09T03:03:22Z MEMBER  

    I think "table" is the wrong name for the concept I'm using it for here.

    Two reasons: firstly, table is a reserved word in SQLite. More importantly, it turns out there's not a direct mapping from tables to types of search result. In particular, for GitHub I ended up having two different "tables" of repositories - one for repos created by me, another for repos that I have starred.

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/17/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    693318095 MDU6SXNzdWU2OTMzMTgwOTU= 14 On FTS exception rerun the query with quoting simonw 9599 closed 0     0 2020-09-04T15:44:18Z 2020-09-05T16:23:01Z 2020-09-05T16:23:01Z MEMBER  

    Searching for eg #dogfest currently throws an FTS exception - but I want to support advanced FTS query tricks as seen in #13.

    https://dogsheep.simonwillison.net/-/beta?q=%23dogfest

    fts5: syntax error near "#"

    Idea: catch that error and re-run the query with FTS escaping applied!

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/14/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    692386625 MDU6SXNzdWU2OTIzODY2MjU= 13 Support advanced FTS queries simonw 9599 closed 0     1 2020-09-03T21:29:56Z 2020-09-03T21:40:51Z 2020-09-03T21:40:51Z MEMBER  

    simon willison NOT screenshot for example.

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/13/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    691521965 MDU6SXNzdWU2OTE1MjE5NjU= 9 Mechanism for defining custom display of results simonw 9599 closed 0     8 2020-09-03T00:14:07Z 2020-09-03T21:12:14Z 2020-09-03T21:09:55Z MEMBER  

    Part of #3 - in particular I want to make sure my photos are displayed with a thumbnail.

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/9/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    689810340 MDU6SXNzdWU2ODk4MTAzNDA= 3 Datasette plugin to provide custom page for running faceted, ranked searches simonw 9599 closed 0     3 2020-09-01T05:00:22Z 2020-09-03T21:01:41Z 2020-09-03T21:01:41Z MEMBER  

    This will be a page at /-/beta which renders using a custom template.

    It will offer a default timeline view plus search and facet by type/date.

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/3/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    689847361 MDU6SXNzdWU2ODk4NDczNjE= 5 Add a context column that's not searchable simonw 9599 closed 0     1 2020-09-01T06:13:42Z 2020-09-03T18:43:50Z 2020-09-03T18:43:50Z MEMBER  

    I sometimes like to configure titles that are things like "Comment on issue X" or "Photo in Golden Gate Park" - these shouldn't be included in the search index but should be stored so they can be displayed to provide context.

    Add a column for this - probably called context - and make it so it can be populated.

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/5/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    691557547 MDU6SXNzdWU2OTE1NTc1NDc= 10 Category 3: received simonw 9599 closed 0     1 2020-09-03T01:40:36Z 2020-09-03T17:38:51Z 2020-09-03T17:38:51Z MEMBER  

    A category for things that were sent to me: DMs, emails etc. Follows #7.

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/10/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    692125110 MDU6SXNzdWU2OTIxMjUxMTA= 11 Public / Private mechanism simonw 9599 closed 0     1 2020-09-03T16:47:03Z 2020-09-03T17:33:52Z 2020-09-03T17:33:52Z MEMBER  

    Some of the data in Dogsheep is stuff that was written publicly - tweets, blog posts, GitHub commits to public repos.

    Some of it is private data - emails, photos, direct messages, Swarm checkins, commits to private repos.

    Being able to filter for just one or the other (or both) would be useful. Especially when giving demos!

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/11/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    691265198 MDU6SXNzdWU2OTEyNjUxOTg= 7 Mechanism for differentiating between "by me" and "liked by me" simonw 9599 closed 0     6 2020-09-02T17:44:37Z 2020-09-02T21:06:28Z 2020-09-02T21:06:28Z MEMBER  

    Some of the content I'm indexing is by me - photos I've taken, tweets I wrote, commits, comments I posted.

    Some of it is stuff that I've "liked" or "bookmarked" in some way - favourited tweets, Pocket articles, starred GitHub repos.

    It woud be useful to be able to differentiate between the two.

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/7/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    691369691 MDU6SXNzdWU2OTEzNjk2OTE= 8 Create a view for running faceted searches simonw 9599 closed 0     1 2020-09-02T19:44:07Z 2020-09-02T19:50:47Z 2020-09-02T19:50:47Z MEMBER  

    sql select search_index_fts.rank, search_index.rowid, search_index.[table], search_index.key, search_index.title, search_index.timestamp, search_index.search_1 from search_index join search_index_fts on search_index.rowid = search_index_fts.rowid order by search_index_fts.rank, search_index.timestamp desc

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/8/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    689809225 MDU6SXNzdWU2ODk4MDkyMjU= 2 Apply porter stemming simonw 9599 closed 0     2 2020-09-01T04:57:55Z 2020-09-01T20:42:00Z 2020-09-01T20:40:24Z MEMBER  

    This can be on by default. You can turn it off for a table in the config file using stemming: none - or maybe tokenize: none to match the terminology used by SQLite and sqlite-utils: https://sqlite-utils.readthedocs.io/en/stable/python-api.html#enabling-full-text-search

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/2/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    689839399 MDU6SXNzdWU2ODk4MzkzOTk= 4 Optimize the FTS table simonw 9599 closed 0     1 2020-09-01T05:58:17Z 2020-09-01T06:10:08Z 2020-09-01T06:10:08Z MEMBER  
    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/4/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    689800307 MDU6SXNzdWU2ODk4MDAzMDc= 1 Add an index on the timestamp column simonw 9599 closed 0     0 2020-09-01T04:33:37Z 2020-09-01T04:49:23Z 2020-09-01T04:49:23Z MEMBER  

    Since default view will likely be ordered by timestamp descending.

    dogsheep-beta 197431109 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/1/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    681086659 MDU6SXNzdWU2ODEwODY2NTk= 47 emojis command simonw 9599 closed 0     1 2020-08-18T14:26:26Z 2020-08-18T14:52:13Z 2020-08-18T14:52:13Z MEMBER  

    For fun - it can import https://api.github.com/emojis - maybe with an option to fetch the binary representations in addition to the URLs.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/47/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    613777056 MDU6SXNzdWU2MTM3NzcwNTY= 39 issues foreign key to repo isn't working simonw 9599 closed 0     1 2020-05-07T05:11:48Z 2020-08-18T14:24:46Z 2020-08-18T14:23:56Z MEMBER  

    https://github-to-sqlite.dogsheep.net/github/issues?_facet=repo

    If the foreign key was working those would be repository names.

    From the schema at the bottom of the page: [repo] TEXT, That's the wrong type and not a foreign key.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/39/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    663976976 MDU6SXNzdWU2NjM5NzY5NzY= 48 Add a table of contents to the README simonw 9599 closed 0     3 2020-07-22T18:54:33Z 2020-07-23T17:46:07Z 2020-07-22T19:03:02Z MEMBER  

    Using https://github.com/jonschlinkert/markdown-toc

    twitter-to-sqlite 206156866 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/48/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    660355904 MDU6SXNzdWU2NjAzNTU5MDQ= 43 github-to-sqlite tags command for fetching tags simonw 9599 closed 0     4 2020-07-18T20:14:12Z 2020-07-18T23:05:56Z 2020-07-18T21:52:15Z MEMBER  

    Fetches paginated data from https://api.github.com/repos/simonw/datasette/tags

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/43/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    660429601 MDU6SXNzdWU2NjA0Mjk2MDE= 45 Fix the demo - it breaks because of the tags table change simonw 9599 closed 0     5 2020-07-18T22:49:32Z 2020-07-18T23:03:14Z 2020-07-18T23:03:13Z MEMBER  

    https://github.com/dogsheep/github-to-sqlite/runs/885773677 File "/home/runner/work/github-to-sqlite/github-to-sqlite/github_to_sqlite/utils.py", line 476, in save_tags db["tags"].insert_all( File "/opt/hostedtoolcache/Python/3.8.3/x64/lib/python3.8/site-packages/sqlite_utils/db.py", line 1145, in insert_all result = self.db.conn.execute(query, params) sqlite3.OperationalError: table tags has no column named repo That's because I changed the name in #44. I thought this would be safe since no-one else could possibly be using this yet (it hadn't shipped in a release) but turns out I broke my demo!

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/45/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    660413281 MDU6SXNzdWU2NjA0MTMyODE= 44 Rename tags.repo_id column to tags.repo simonw 9599 closed 0     0 2020-07-18T22:13:46Z 2020-07-18T22:15:12Z 2020-07-18T22:15:12Z MEMBER  

    For improved consistency with other tables. https://observablehq.com/@simonw/datasette-table-diagram

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/44/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    654405302 MDU6SXNzdWU2NTQ0MDUzMDI= 42 Option for importing just specific repos simonw 9599 closed 0     0 2020-07-09T23:20:15Z 2020-07-09T23:25:35Z 2020-07-09T23:25:35Z MEMBER  

    For if you know which specific repos you care about, as opposed to loading everything owned by the authenticated user.

    github-to-sqlite repos specific.db -r simonw/datasette -r simonw/github-contents
    
    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/42/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    651159727 MDU6SXNzdWU2NTExNTk3Mjc= 41 Demo is failing to deploy simonw 9599 closed 0     7 2020-07-05T22:40:33Z 2020-07-06T01:07:03Z 2020-07-06T01:07:02Z MEMBER  

    https://github.com/dogsheep/github-to-sqlite/runs/837714622?check_suite_focus=true ``` Creating Revision.........................................................................................................................................failed Deployment failed ERROR: (gcloud.run.deploy) Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information. Traceback (most recent call last): File "/opt/hostedtoolcache/Python/3.8.3/x64/bin/datasette", line 8, in <module> sys.exit(cli()) File "/opt/hostedtoolcache/Python/3.8.3/x64/lib/python3.8/site-packages/click/core.py", line 829, in call return self.main(args, kwargs) File "/opt/hostedtoolcache/Python/3.8.3/x64/lib/python3.8/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/opt/hostedtoolcache/Python/3.8.3/x64/lib/python3.8/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/opt/hostedtoolcache/Python/3.8.3/x64/lib/python3.8/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/opt/hostedtoolcache/Python/3.8.3/x64/lib/python3.8/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, ctx.params) File "/opt/hostedtoolcache/Python/3.8.3/x64/lib/python3.8/site-packages/click/core.py", line 610, in invoke return callback(args, **kwargs) File "/opt/hostedtoolcache/Python/3.8.3/x64/lib/python3.8/site-packages/datasette/publish/cloudrun.py", line 138, in cloudrun check_call( File "/opt/hostedtoolcache/Python/3.8.3/x64/lib/python3.8/subprocess.py", line 364, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command 'gcloud run deploy --allow-unauthenticated --platform=managed --image gcr.io/datasette-222320/datasette github-to-sqlite' returned non-zero exit status 1.

    [error]Process completed with exit code 1.

    ```

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/41/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    637899539 MDU6SXNzdWU2Mzc4OTk1Mzk= 40 Demo deploy is broken simonw 9599 closed 0     2 2020-06-12T17:20:17Z 2020-06-12T18:06:48Z 2020-06-12T18:06:48Z MEMBER  

    https://github.com/dogsheep/github-to-sqlite/runs/766180404?check_suite_focus=true

    ``` The following NEW packages will be installed: sqlite3 0 upgraded, 1 newly installed, 0 to remove and 11 not upgraded. Need to get 752 kB of archives. After this operation, 2482 kB of additional disk space will be used. Ign:1 http://azure.archive.ubuntu.com/ubuntu bionic-updates/main amd64 sqlite3 amd64 3.22.0-1ubuntu0.3 Err:1 http://security.ubuntu.com/ubuntu bionic-updates/main amd64 sqlite3 amd64 3.22.0-1ubuntu0.3 404 Not Found [IP: 52.177.174.250 80] E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/s/sqlite3/sqlite3_3.22.0-1ubuntu0.3_amd64.deb 404 Not Found [IP: 52.177.174.250 80] E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

    [error]Process completed with exit code 100.

    ```

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/40/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    613006393 MDU6SXNzdWU2MTMwMDYzOTM= 20 Ability to serve thumbnailed Apple Photo from its place on disk simonw 9599 closed 0     10 2020-05-06T02:17:50Z 2020-05-25T20:14:22Z 2020-05-25T20:09:41Z MEMBER  

    A custom Datasette plugin that can be run locally on a Mac laptop which knows how to serve photos such that they can be seen in the browser.

    Originally posted by @simonw in https://github.com/dogsheep/photos-to-sqlite/issues/19#issuecomment-624406285

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/20/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    621332242 MDU6SXNzdWU2MjEzMzIyNDI= 25 Create a public demo simonw 9599 closed 0     5 2020-05-19T22:47:20Z 2020-05-21T22:26:16Z 2020-05-20T05:54:18Z MEMBER  

    So I can show people what this does, using some of my photos.

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/25/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    621444763 MDU6SXNzdWU2MjE0NDQ3NjM= 26 Rename project to dogsheep-photos simonw 9599 closed 0     8 2020-05-20T04:12:34Z 2020-05-20T04:31:02Z 2020-05-20T04:30:40Z MEMBER  

    photos-to-sqlite doesn't really capture the full scope of this project anymore.

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/26/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    621280529 MDU6SXNzdWU2MjEyODA1Mjk= 23 create-subset command for creating a publishable subset of a photos database simonw 9599 closed 0     1 2020-05-19T20:58:20Z 2020-05-19T22:32:48Z 2020-05-19T22:32:37Z MEMBER  

    I want to share a subset of my photos, without sharing everything. Idea:

    $ photos-to-sqlite create-subset photos.db public.db "select sha256 from ... where ..."
    

    So the command takes a SQL query that returns sha256 hashes, then creates a new file called public.db containing just the data corresponding to those photos.

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/23/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    613002220 MDU6SXNzdWU2MTMwMDIyMjA= 19 apple-photos command should work even if upload has not run simonw 9599 closed 0     1 2020-05-06T02:02:25Z 2020-05-19T20:59:59Z 2020-05-19T20:59:59Z MEMBER  

    I want people to be able to query their Apple Photos metadata without having to first run upload to upload all of their files to their own S3 bucket.

    To do this I can have apple-photos calculate SHA256 hashes of each photo if the uploads table does not yet exist (or does not contain that photo).

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/19/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    612860531 MDU6SXNzdWU2MTI4NjA1MzE= 17 Only install osxphotos if running on macOS simonw 9599 closed 0     3 2020-05-05T20:03:26Z 2020-05-05T20:20:05Z 2020-05-05T20:11:23Z MEMBER  

    The build is broken right now because you can't pip install osxphotos on Ubuntu.

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/17/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    610408908 MDU6SXNzdWU2MTA0MDg5MDg= 34 Command for retrieving dependents for a repo simonw 9599 closed 0     6 2020-04-30T21:47:51Z 2020-05-03T15:53:01Z 2020-05-03T15:53:01Z MEMBER  

    I really, really want to start grabbing this data: https://github.com/simonw/datasette/network/dependents

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/34/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    493670730 MDU6SXNzdWU0OTM2NzA3MzA= 4 Command to fetch stargazers for one or more repos simonw 9599 closed 0     8 2019-09-14T21:58:22Z 2020-05-02T21:30:27Z 2020-05-02T21:30:27Z MEMBER  

    Maybe this:

    $ github-to-sqlite stargazers github.db simonw/datasette
    

    It could accept more than one repos.

    Maybe have options similar to --sql in twitter-to-sqlite so you can e.g. fetch all stargazers for all of the repos you have fetched into the database already (or all of the repos belonging to owner X)

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/4/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    516763727 MDExOlB1bGxSZXF1ZXN0MzM1OTgwMjQ2 8 stargazers command, refs #4 simonw 9599 closed 0     5 2019-11-03T00:37:36Z 2020-05-02T20:00:27Z 2020-05-02T20:00:26Z MEMBER dogsheep/github-to-sqlite/pulls/8

    Needs tests. Refs #4.

    github-to-sqlite 207052882 pull    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/8/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
    0  
    520756546 MDU6SXNzdWU1MjA3NTY1NDY= 12 Add this view for seeing new releases simonw 9599 closed 0     5 2019-11-11T06:00:12Z 2020-05-02T18:58:18Z 2020-05-02T18:58:17Z MEMBER  

    sql CREATE VIEW recent_releases AS select json_object("label", repos.full_name, "href", repos.html_url) as repo, json_object( "href", releases.html_url, "label", releases.name ) as release, substr(releases.published_at, 0, 11) as date, releases.body as body_markdown, releases.published_at from releases join repos on repos.id = releases.repo order by releases.published_at desc

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/12/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    610511450 MDU6SXNzdWU2MTA1MTE0NTA= 35 Create index on issue_comments(user) and other foreign keys simonw 9599 closed 0     3 2020-05-01T02:06:56Z 2020-05-02T18:26:24Z 2020-05-02T18:26:24Z MEMBER  

    create index issue_comments_user on issue_comments(user) I'm sure there are other user columns that could benefit from an index.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/35/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    610842926 MDU6SXNzdWU2MTA4NDI5MjY= 36 Add view for better display of dependent repos simonw 9599 closed 0     2 2020-05-01T16:33:44Z 2020-05-02T16:50:31Z 2020-05-02T16:30:11Z MEMBER  

    sql select repos.full_name as repo, 'https://github.com/' || repos2.full_name as dependent, repos2.created_at as dependent_repo_created, repos2.updated_at as dependent_repo_updated, repos2.stargazers_count as dependent_repo_stars, repos2.watchers_count as dependent_repo_watchers from dependents join repos as repos2 on dependents.dependent = repos2.id join repos on dependents.repo = repos.id order by repos2.created_at desc https://dogsheep.simonwillison.net/github?sql=select%0D%0A++repos.full_name+as+repo%2C%0D%0A++%27https%3A%2F%2Fgithub.com%2F%27+%7C%7C+repos2.full_name+as+dependent%2C%0D%0A++repos2.created_at+as+dependent_repo_created%2C%0D%0A++repos2.updated_at+as+dependent_repo_updated%2C%0D%0A++repos2.stargazers_count+as+dependent_repo_stars%2C%0D%0A++repos2.watchers_count+as+dependent_repo_watchers%0D%0Afrom%0D%0A++dependents%0D%0A++join+repos+as+repos2+on+dependents.dependent+%3D+repos2.id%0D%0A++join+repos+on+dependents.repo+%3D+repos.id%0D%0Aorder+by%0D%0A++repos2.created_at+desc

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/36/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    516967682 MDU6SXNzdWU1MTY5Njc2ODI= 10 Add this repos_starred view simonw 9599 closed 0     3 2019-11-04T05:44:38Z 2020-05-02T16:37:36Z 2020-05-02T16:37:36Z MEMBER  

    sql create view repos_starred as select stars.starred_at, users.login, repos.* from repos join stars on repos.id = stars.repo join users on repos.owner = users.id order by starred_at desc;

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/10/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    610843136 MDU6SXNzdWU2MTA4NDMxMzY= 37 Mechanism for creating views if they don't yet exist simonw 9599 closed 0     3 2020-05-01T16:34:10Z 2020-05-02T16:19:47Z 2020-05-02T16:19:31Z MEMBER  

    Needed for #36 #10 #12

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/37/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    610284471 MDU6SXNzdWU2MTAyODQ0NzE= 46 Error running 'search' for the first time simonw 9599 closed 0     0 2020-04-30T18:11:20Z 2020-04-30T18:11:58Z 2020-04-30T18:11:58Z MEMBER  

    % twitter-to-sqlite search infodemic.db '#infodemic' Traceback (most recent call last): File "/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/bin/twitter-to-sqlite", line 11, in <module> load_entry_point('twitter-to-sqlite', 'console_scripts', 'twitter-to-sqlite')() File "/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/lib/python3.7/site-packages/click/core.py", line 829, in __call__ return self.main(*args, **kwargs) File "/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/lib/python3.7/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/lib/python3.7/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/lib/python3.7/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/lib/python3.7/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/Users/simon/Dropbox/Development/twitter-to-sqlite/twitter_to_sqlite/cli.py", line 867, in search for tweet in tweets: File "/Users/simon/Dropbox/Development/twitter-to-sqlite/twitter_to_sqlite/utils.py", line 165, in fetch_timeline [since_type_id, since_key], sqlite3.OperationalError: no such table: since_ids

    twitter-to-sqlite 206156866 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/46/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    602533352 MDU6SXNzdWU2MDI1MzMzNTI= 2 Ability to convert HEIC images to JPEG simonw 9599 closed 0   Apple Photos online and securely browsable 5324096 1 2020-04-18T19:23:43Z 2020-04-28T16:47:21Z 2020-04-28T16:47:21Z MEMBER  
    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/2/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    606032950 MDU6SXNzdWU2MDYwMzI5NTA= 11 Try running S3 uploads in a thread pool simonw 9599 closed 0     0 2020-04-24T04:34:31Z 2020-04-24T16:45:41Z 2020-04-24T16:45:41Z MEMBER  

    Since #10 provided such a speedup, can the same thing be done for the actual uploads?

    http://ls.pwd.io/2013/06/parallel-s3-uploads-using-boto-and-threads-in-python/ suggests it can really help performance.

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/11/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    606028272 MDU6SXNzdWU2MDYwMjgyNzI= 10 Speed up hashing step using threads simonw 9599 closed 0     0 2020-04-24T04:20:08Z 2020-04-24T04:32:35Z 2020-04-24T04:32:35Z MEMBER  

    This TODO from the code:

    https://github.com/dogsheep/photos-to-sqlite/blob/2e7f2c67cc18b02c75bb64992a05b0196e507252/photos_to_sqlite/cli.py#L82-L90

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/10/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    605938063 MDU6SXNzdWU2MDU5MzgwNjM= 9 upload command should be resumable, should only upload photos not already uploaded simonw 9599 closed 0     2 2020-04-23T23:31:08Z 2020-04-23T23:39:14Z 2020-04-23T23:39:14Z MEMBER  

    Follow on from #4.

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/9/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    605147638 MDU6SXNzdWU2MDUxNDc2Mzg= 8 Should I have used MD5 instead of SHA256? simonw 9599 closed 0     2 2020-04-23T00:02:08Z 2020-04-23T00:03:35Z 2020-04-23T00:03:35Z MEMBER  

    https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html

    Objects created by the PUT Object, POST Object, or Copy operation, or through the AWS Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that are an MD5 digest of their object data.

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/8/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    603624862 MDU6SXNzdWU2MDM2MjQ4NjI= 31 Issue and milestone should have foreign key to repo simonw 9599 closed 0     3 2020-04-21T00:46:24Z 2020-04-22T01:20:19Z 2020-04-22T01:20:19Z MEMBER  

    Currently the repo column on those tables is a string simonw/datasette rather than an ID referencing a row in repos.

    Originally posted by @simonw in https://github.com/dogsheep/github-to-sqlite/issues/29#issuecomment-616883275

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/31/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    604222295 MDU6SXNzdWU2MDQyMjIyOTU= 32 Issue comments don't appear to populate issues foreign key simonw 9599 closed 0     3 2020-04-21T19:17:32Z 2020-04-22T01:17:44Z 2020-04-22T01:17:44Z MEMBER  

    https://github-to-sqlite.dogsheep.net/github?sql=select+html_url%2C+id%2C+issue+from+issue_comments+order+by+updated_at+desc+limit+101

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/32/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    603618244 MDU6SXNzdWU2MDM2MTgyNDQ= 30 Issues milestone column is the wrong type simonw 9599 closed 0     2 2020-04-21T00:24:34Z 2020-04-21T00:45:23Z 2020-04-21T00:36:22Z MEMBER  

    https://github-to-sqlite.dogsheep.net/github/issues?milestone=2857392

    It is TEXT when it should be an INTEGER - which is why the foreign key label is not correctly displayed.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/30/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    603617013 MDU6SXNzdWU2MDM2MTcwMTM= 29 Milestones should have foreign key to creator and repo simonw 9599 closed 0     1 2020-04-21T00:20:44Z 2020-04-21T00:43:58Z 2020-04-21T00:43:58Z MEMBER  

    https://github-to-sqlite.dogsheep.net/github/milestones

    Creator is an integer but not a foreign key to users

    Repo is missing entirely!

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/29/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    602575575 MDU6SXNzdWU2MDI1NzU1NzU= 6 Add progress bar to upload command simonw 9599 closed 0     2 2020-04-18T23:32:41Z 2020-04-19T00:15:24Z 2020-04-19T00:15:24Z MEMBER  

    Upload was added in #4

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/6/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    602533539 MDU6SXNzdWU2MDI1MzM1Mzk= 4 Upload all my photos to a secure S3 bucket simonw 9599 closed 0   Apple Photos online and securely browsable 5324096 14 2020-04-18T19:24:50Z 2020-04-18T21:58:11Z 2020-04-18T21:57:13Z MEMBER  
    • [x] Create a bucket with bucket credentials
    • [x] Programmatically upload some recent photos to it (from a notebook)
    • [x] Turn this into a script
    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    602551638 MDU6SXNzdWU2MDI1NTE2Mzg= 5 photos-to-sqlite s3-auth command simonw 9599 closed 0     1 2020-04-18T21:05:25Z 2020-04-18T21:08:44Z 2020-04-18T21:08:44Z MEMBER  

    Modeled on github-to-sqlite auth - prompts the user for their S3 credentials and saves them to auth.json.

    dogsheep-photos 256834907 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/5/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    601333634 MDU6SXNzdWU2MDEzMzM2MzQ= 28 Pull repository contributors simonw 9599 closed 0     3 2020-04-16T18:46:40Z 2020-04-18T15:05:10Z 2020-04-18T15:05:10Z MEMBER  

    https://developer.github.com/v3/repos/#list-contributors

    GET /repos/:owner/:repo/contributors

    Not sure if this should be a separate command or should be part of the existing repos command. I'm leaning towards a new contributors command.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/28/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    601330277 MDU6SXNzdWU2MDEzMzAyNzc= 27 Repos have a big blob of JSON in the organization column simonw 9599 closed 0     5 2020-04-16T18:43:14Z 2020-04-18T00:19:16Z 2020-04-18T00:18:52Z MEMBER  

    e.g. https://github-to-sqlite.dogsheep.net/github/repos

    This appears to be obsolete because the owner column already links to that record, albeit in the users table with type set to Organization: https://github-to-sqlite.dogsheep.net/github/users/53015001

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/27/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    602176870 MDU6SXNzdWU2MDIxNzY4NzA= 43 "twitter-to-sqlite lists" command for retrieving a user's owned lists simonw 9599 closed 0     1 2020-04-17T19:08:59Z 2020-04-17T23:48:28Z 2020-04-17T23:30:39Z MEMBER  

    https://developer.twitter.com/en/docs/accounts-and-users/create-manage-lists/api-reference/get-lists-ownerships

    https://api.twitter.com/1.1/lists/ownerships.json

    twitter-to-sqlite 206156866 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/43/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    585353598 MDU6SXNzdWU1ODUzNTM1OTg= 37 Handle "User not found" error simonw 9599 closed 0     3 2020-03-20T22:14:32Z 2020-04-17T23:43:46Z 2020-04-17T23:43:46Z MEMBER  

    While running user-timeline I got this bug (because a screen name I asked for didn't exist): ``` File "/Users/simonw/Dropbox/Development/twitter-to-sqlite/twitter_to_sqlite/utils.py", line 185, in transform_user user["created_at"] = parser.parse(user["created_at"]) KeyError: 'created_at'

    import pdb pdb.pm() /Users/simonw/Dropbox/Development/twitter-to-sqlite/twitter_to_sqlite/utils.py(185)transform_user() -> user["created_at"] = parser.parse(user["created_at"]) (Pdb) user {'errors': [{'code': 50, 'message': 'User not found.'}]} ```

    twitter-to-sqlite 206156866 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/37/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    602173589 MDU6SXNzdWU2MDIxNzM1ODk= 42 Error running user-timeline with --sql and --ids together simonw 9599 closed 0     0 2020-04-17T19:02:06Z 2020-04-17T23:34:40Z 2020-04-17T23:34:40Z MEMBER  

    $ twitter-to-sqlite user-timeline tweets.db --sql='select id from users' --ids Traceback (most recent call last): File "/Users/simonw/.local/share/virtualenvs/twitter-to-sqlite-4ech4lJi/bin/twitter-to-sqlite", line 11, in <module> load_entry_point('twitter-to-sqlite', 'console_scripts', 'twitter-to-sqlite')() File "/Users/simonw/.local/share/virtualenvs/twitter-to-sqlite-4ech4lJi/lib/python3.7/site-packages/click/core.py", line 764, in __call__ return self.main(*args, **kwargs) File "/Users/simonw/.local/share/virtualenvs/twitter-to-sqlite-4ech4lJi/lib/python3.7/site-packages/click/core.py", line 717, in main rv = self.invoke(ctx) File "/Users/simonw/.local/share/virtualenvs/twitter-to-sqlite-4ech4lJi/lib/python3.7/site-packages/click/core.py", line 1137, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/Users/simonw/.local/share/virtualenvs/twitter-to-sqlite-4ech4lJi/lib/python3.7/site-packages/click/core.py", line 956, in invoke return ctx.invoke(self.callback, **ctx.params) File "/Users/simonw/.local/share/virtualenvs/twitter-to-sqlite-4ech4lJi/lib/python3.7/site-packages/click/core.py", line 555, in invoke return callback(*args, **kwargs) File "/Users/simonw/Dropbox/Development/twitter-to-sqlite/twitter_to_sqlite/cli.py", line 284, in user_timeline "@{:" + str(max(len(identifier) for identifier in identifiers)) + "}" File "/Users/simonw/Dropbox/Development/twitter-to-sqlite/twitter_to_sqlite/cli.py", line 284, in <genexpr> "@{:" + str(max(len(identifier) for identifier in identifiers)) + "}" TypeError: object of type 'int' has no len() But this DID work - casting to strings: $ twitter-to-sqlite user-timeline tweets.db --sql='select "" || id from users' --ids ... this worked ...

    twitter-to-sqlite 206156866 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/42/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    602181581 MDU6SXNzdWU2MDIxODE1ODE= 44 tweet["source"] can be an empty string simonw 9599 closed 0     0 2020-04-17T19:18:26Z 2020-04-17T22:01:44Z 2020-04-17T22:01:44Z MEMBER  

    Got this excepion: File "/Users/simonw/Dropbox/Development/twitter-to-sqlite/twitter_to_sqlite/utils.py", line 641, in extract_and_save_source details = m.groupdict() AttributeError: 'NoneType' object has no attribute 'groupdict' I traced it back to this tweet: https://twitter.com/osder/status/578712651393576960 ``` (Pdb) source_re re.compile('(?P<name>.*?)') (Pdb) locals()['source'] '' (Pdb) u

    /Users/simonw/Dropbox/Development/twitter-to-sqlite/twitter_to_sqlite/utils.py(393)save_tweets() -> tweet["source"] = extract_and_save_source(db, tweet["source"]) (Pdb) tweet {'created_at': '2015-03-20T00:20:22+00:00', 'id': 578712651393576960, 'full_text': '@osder', 'truncated': False, 'display_text_range': [0, 6], 'source': '', 'in_reply_to_status_id': 578712521382715392, 'in_reply_to_user_id': 1545741, 'in_reply_to_screen_name': 'osder', 'geo': None, 'coordinates': None, 'place': None, 'contributors': None, 'is_quote_status': False, 'retweet_count': 0, 'favorite_count': 0, 'favorited': False, 'retweeted': False, 'lang': 'und', 'user': 1545741} ```

    twitter-to-sqlite 206156866 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/44/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    601265023 MDU6SXNzdWU2MDEyNjUwMjM= 25 Improvements to demo instance simonw 9599 closed 0     1 2020-04-16T17:26:55Z 2020-04-16T18:07:12Z 2020-04-16T18:07:12Z MEMBER  
    • [x] Demo should pull issue-comments as well
    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/25/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    601271612 MDU6SXNzdWU2MDEyNzE2MTI= 26 Topics are missing from repositories simonw 9599 closed 0     2 2020-04-16T17:36:32Z 2020-04-16T17:41:11Z 2020-04-16T17:41:11Z MEMBER  

    I'm sure this used to work, but right now repositories are fetched without their topics.

    https://developer.github.com/v3/repos/ says you need to send a custom Accept header of application/vnd.github.mercy-preview+json to get topics.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/26/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    591613579 MDU6SXNzdWU1OTE2MTM1Nzk= 41 Bug: recorded a since_id for None, None simonw 9599 closed 0     0 2020-04-01T04:29:43Z 2020-04-01T04:31:11Z 2020-04-01T04:31:11Z MEMBER  

    This shouldn't happen in the since_ids table (relates to #39):

    twitter-to-sqlite 206156866 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/41/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    590669793 MDU6SXNzdWU1OTA2Njk3OTM= 40 Feature: record history of follower counts simonw 9599 closed 0     5 2020-03-30T23:32:28Z 2020-04-01T04:13:05Z 2020-04-01T04:13:05Z MEMBER  

    We currently over-write the follower count every time we import a tweet (when we import that user profile again):

    https://github.com/dogsheep/twitter-to-sqlite/blob/810cb2af5a175837204389fd7f4b5721f8b325ab/twitter_to_sqlite/utils.py#L293-L294

    It would be neat if we noticed if that user's follower count (and maybe other counts?) had changed since we last saved them and recorded that change in a separate history table. This would be an inexpensive way of building up rough charts of follower count over time.

    twitter-to-sqlite 206156866 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/40/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    492297930 MDU6SXNzdWU0OTIyOTc5MzA= 10 Rethink progress bars for various commands simonw 9599 closed 0     5 2019-09-11T15:06:47Z 2020-04-01T03:45:48Z 2020-04-01T03:45:48Z MEMBER  

    Progress bars and the --silent option are implemented inconsistently across commands at the moment.

    This is made more challenging by the fact that for many operations the total length is not known.

    https://click.palletsprojects.com/en/7.x/api/#click.progressbar

    twitter-to-sqlite 206156866 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/10/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    590666760 MDU6SXNzdWU1OTA2NjY3NjA= 39 --since feature can be confused by retweets simonw 9599 closed 0     11 2020-03-30T23:25:33Z 2020-04-01T03:45:16Z 2020-04-01T03:45:16Z MEMBER  

    If you run twitter-to-sqlite user-timeline ... --since it's supposed to fetch Tweets those specific users tweeted since last time the command was run.

    It does this by seeking out the max ID of their previous tweets:

    https://github.com/dogsheep/twitter-to-sqlite/blob/810cb2af5a175837204389fd7f4b5721f8b325ab/twitter_to_sqlite/cli.py#L305-L311

    BUT... this has a nasty flaw: if another account had retweeted one of their recent tweets the retweeted-tweet will have been loaded into the database - so we may treat that as the most recent since ID and miss a bunch of their tweets!

    twitter-to-sqlite 206156866 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/39/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    589491711 MDU6SXNzdWU1ODk0OTE3MTE= 7 Upgrade to sqlite-utils 2.x simonw 9599 closed 0     0 2020-03-28T02:24:51Z 2020-03-28T02:25:03Z 2020-03-28T02:25:03Z MEMBER  
    swarm-to-sqlite 205429375 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/swarm-to-sqlite/issues/7/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    503234169 MDU6SXNzdWU1MDMyMzQxNjk= 2 Track and use the 'since' value simonw 9599 closed 0     3 2019-10-07T05:02:59Z 2020-03-27T22:22:30Z 2020-03-27T22:22:30Z MEMBER  

    Pocket says:

    Whenever possible, you should use the since parameter, or count and and offset parameters when retrieving a user's list. After retrieving the list, you should store the current time (which is provided along with the list response) and pass that in the next request for the list. This way the server only needs to return a small set (changes since that time) instead of the user's entire list every time.

    At the bottom of https://getpocket.com/developer/docs/v3/retrieve

    pocket-to-sqlite 213286752 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/pocket-to-sqlite/issues/2/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    503233021 MDU6SXNzdWU1MDMyMzMwMjE= 1 Use better pagination (and implement progress bar) simonw 9599 closed 0     4 2019-10-07T04:58:11Z 2020-03-27T22:13:57Z 2020-03-27T22:13:57Z MEMBER  

    Right now we attempt to load everything at once - which caps out at 5,000 items and is really slow.

    We can do better by implementing pagination using count and offset.

    pocket-to-sqlite 213286752 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/pocket-to-sqlite/issues/1/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    589402939 MDU6SXNzdWU1ODk0MDI5Mzk= 4 Store authentication information as "pocket_access_token" etc simonw 9599 closed 0     0 2020-03-27T20:43:22Z 2020-03-27T20:43:59Z 2020-03-27T20:43:59Z MEMBER  

    The pocket_ prefix will mean that the same auth.json file can be used for other Dogsheep tools without Pocket over-riding a value set by some other tool.

    pocket-to-sqlite 213286752 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/pocket-to-sqlite/issues/4/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    586595839 MDU6SXNzdWU1ODY1OTU4Mzk= 23 Release 1.0 simonw 9599 closed 0   1.0 5225818 1 2020-03-24T00:03:55Z 2020-03-24T00:15:50Z 2020-03-24T00:15:50Z MEMBER  

    Need to compile release notes.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/23/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    521275281 MDU6SXNzdWU1MjEyNzUyODE= 13 Set up a live demo Datasette instance simonw 9599 closed 0   1.0 5225818 9 2019-11-12T01:27:02Z 2020-03-24T00:03:26Z 2020-03-24T00:03:25Z MEMBER  

    I deployed https://github-to-sqlite-releases-j7hipcg4aq-uc.a.run.app/ by running this: ```

    !/bin/bash

    Fetch repos for simonw and dogsheep

    github-to-sqlite repos github.db simonw dogsheep -a auth.json

    Fetch releases for the repos tagged 'datasette-io'

    sqlite-utils github.db " select full_name from repos where rowid in ( select repos.rowid from repos, json_each(repos.topics) j where j.value = 'datasette-io' )" --csv --no-headers | while read repo; do github-to-sqlite releases \ github.db $(echo $repo | tr -d '\r') \ -a auth.json; sleep 2; done; And then deploying using this: $ datasette publish cloudrun github.db \ --title "github-to-sqlite releases demo" \ --about_url="https://github.com/simonw/github-to-sqlite" \ --about='github-to-sqlite' \ --install=datasette-render-markdown \ --install=datasette-json-html \ --service=github-to-sqlite-releases ``` This should happen automatically for every release. I can run it once a day in Circle CI to keep the demo database up-to-date.

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/13/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed
    586561727 MDU6SXNzdWU1ODY1NjE3Mjc= 21 Turn GitHub API errors into exceptions simonw 9599 closed 0   1.0 5225818 2 2020-03-23T22:37:24Z 2020-03-23T23:48:23Z 2020-03-23T23:48:22Z MEMBER  

    This would have really helped in debugging the mess in #13. Running with this auth.json is a useful demo: json {"github_personal_token": ""}

    github-to-sqlite 207052882 issue    
    {
        "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/21/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    }
      completed

    Next page

    Advanced export

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

    CSV options:

    CREATE TABLE [issues] (
       [id] INTEGER PRIMARY KEY,
       [node_id] TEXT,
       [number] INTEGER,
       [title] TEXT,
       [user] INTEGER REFERENCES [users]([id]),
       [state] TEXT,
       [locked] INTEGER,
       [assignee] INTEGER REFERENCES [users]([id]),
       [milestone] INTEGER REFERENCES [milestones]([id]),
       [comments] INTEGER,
       [created_at] TEXT,
       [updated_at] TEXT,
       [closed_at] TEXT,
       [author_association] TEXT,
       [pull_request] TEXT,
       [body] TEXT,
       [repo] INTEGER REFERENCES [repos]([id]),
       [type] TEXT
    , [active_lock_reason] TEXT, [performed_via_github_app] TEXT, [reactions] TEXT, [draft] INTEGER, [state_reason] TEXT);
    CREATE INDEX [idx_issues_repo]
                    ON [issues] ([repo]);
    CREATE INDEX [idx_issues_milestone]
                    ON [issues] ([milestone]);
    CREATE INDEX [idx_issues_assignee]
                    ON [issues] ([assignee]);
    CREATE INDEX [idx_issues_user]
                    ON [issues] ([user]);
    Powered by Datasette · Queries took 251.737ms · About: github-to-sqlite