Git Product home page Git Product logo

linkding's People

Contributors

ab623 avatar acbgbca avatar andrewdolphin avatar bachya avatar bah0 avatar bohrium272 avatar crahan avatar dependabot[bot] avatar fivefold avatar hugo-vrijswijk avatar hypebeast avatar jhauris avatar jonathan-s avatar kgh02017 avatar kzshantonu avatar livingwithhippos avatar mattofr avatar mckennajones avatar operepadia avatar pascaliske avatar pettijohn avatar plockaby avatar qiaohao9 avatar rithask avatar rogryza avatar sissbruecker avatar strubbl avatar tianheg avatar vitormarcal avatar vslinko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

linkding's Issues

Enhancement: category and pagination

Firstly I want to thank you for this wonderful bookmark manager. It is just what I'm looking for.

Two suggestions you may consider:
1). Pagination. If someone happens to manage many bookmarks, that would be diserable.
2). Category. In addition to tags, category is still an effective way to organise bookmarks.

Thanks again!

Database locked

I've just installed Linkding for Docker with permanent storage, but I can create user, or login, I get the following error :
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/django/db/backends/base/base.py", line 240, in _commit
return self.connection.commit()
sqlite3.OperationalError: database is locked

Want to be compatible with PostgreSQL

I installed linkding manually and accessed top page, then linkding responded Server Error (500).
It seems to happen it when accessing https://example.com/bookmarks. When trying /bookmarks/new, /settings, /bookmarklet and /logout, linkding showed pages normally.
How can I fix this?

  • OS: Debian 10.2
  • Python: 3.7.6

Improve admin utilization

Currently linkding provides no management UI of its own, however it comes with the default Django Admin which is quite powerful and could solve quite a few use cases. As such the admin panel should be linked from settings and be improved:

  • user management for adding accounts or changing password
  • auth token management to revoke auth tokens
  • bookmark view: ensure title is displayed
  • bulk operations on bookmarks (delete, archive, unarchive)
  • tag view: show how often the tag is used
  • bulk operations on tags (delete, delete unused)

Wayback Machine Integration

I think a really interesting feature for linkding to adapt would be an integration with Internet Archive (IA). I've looked into this myself, and got an almost working prototype, but run into an issue with response time and rate limiting of the IA API.

In short, I added an archive_url variable to each Bookmark and queried the https://web.archive.org/save/{bookmark.url} endpoint on creation. This would create a backup, and link to it in the response's Location header. However, as mentioned above, there were two issues:

  1. The response time of the archive API is quite slow and blocks the main thread until completion. This could potentially be solved with some sort of asynchronous request, but I'm not familiar enough with Django to know how to implement this.
  2. Though I was successful in making several requests to /save, there appears to be some sort of rate limiting and not very much information on how it works (that I could find).

Regardless, I think this is a really cool feature that I would definitely be interested in (implementing and using).

Import does not import bookmark descriptions

Currently the import only imports bookmark titles, but ignores the optional description. I think the issue is that the loose Netscape HTML format makes it difficult to relate link elements (<a>) with description elements (<dd>) using the current HTML parser (BeautifulSoup).

minor ui nitpicks

Hi, first of all thank you for making linkding! I've been looking for a while for a selfhosted alternative to pinboard.in and I think I finally found one.

I just wanted to comment on two minor issues:

  1. The search bar and button on mobile don't look like they do on desktop, is this intentional? Because it doesn't look good in my opinion.
  2. Always on mobile, the hamburger menu can't be closed once it has been opened. I have to click on a link or on the search bar to hide it.

Thanks!

Missing "description" request body parameter in API causes 500

Version: 1.3.1
Architecture: Docker

When I attempt to omit the description request body parameter in the POST /api/bookmarks/ API call, I get a 500 response. The API should either instruct me to include this field or gracefully handle its absence.

Unused tags still get suggested after no longer being attached to any bookmarks

I don't quite know if this is intended behavior (it might be?) but the suggest box when editing bookmarks suggests every tag ever used rather than just tags that are currently in use. This is kind of a pain if you accidentally saved something with a tag that had a typo, or imported a batch of bookmarks that had tags you don't wish to use.

/archive and /unarchive API routes return 404

Version: 1.3.1
Architecture: Docker

I'm hosting linkding behind Traefik. I've confirmed that all API endpoints work with my host/token. The exceptions are POST /api/bookmarks/<id>/archive/ and POST /api/bookmarks/<id>/unarchive/, both of which return 404 responses when I query them:

Archive

Request:

POST /api/bookmarks/1/archive/ HTTP/1.1
Authorization: Token REDACTED
Host: REDACTED
Connection: close
User-Agent: Paw/3.2.2 (Macintosh; OS X/11.2.1) GCDHTTPRequest
Content-Length: 0

Response:

HTTP/1.1 404 Not Found
Content-Length: 77
Content-Type: text/html
X-Frame-Options: SAMEORIGIN
Date: Thu, 18 Feb 2021 01:06:19 GMT
Connection: close

<h1>Not Found</h1><p>The requested resource was not found on this server.</p>

Unarchive

Request:

POST /api/bookmarks/1/unarchive/ HTTP/1.1
Authorization: Token REDACTED
Host: REDACTED
Connection: close
User-Agent: Paw/3.2.2 (Macintosh; OS X/11.2.1) GCDHTTPRequest
Content-Length: 0

Response:

HTTP/1.1 404 Not Found
Content-Length: 77
Content-Type: text/html
X-Frame-Options: SAMEORIGIN
Date: Thu, 18 Feb 2021 01:06:19 GMT
Connection: close

<h1>Not Found</h1><p>The requested resource was not found on this server.</p>

Error importing bookmarks

Running in a docker from hub.docker.com:
sissbruecker/linkding:latest | pulled on 2020-04-07 15:16:52

I can't seem to get the import to work. I've tried exporting from Firefox and Chrome, but always the same error:
An error occurred during bookmark import.

Any pointers to enabling error logs on the docker instance? If I was running the dev setup, I would enable the debug logs in django settings, but want to avoid that, if possible and keep it within docker.

Enhancement: detect duplicates at entry time

Thanks for this great app. Perfect for managing a bunch of bookmarks.

What do you think about a warning/message when trying to bookmark a page that's already bookmarked? If that sounds good, give me a couple pointers and I'll give you a PR.

Search autocomplete

Add an auto-complete component that provides suggestions for searches:

  • Tags
  • Recent searches
  • Bookmarks

Tag generation when importing

I just discovered linkding, and think it may be what I've been hoping for, except for one issue.

Is there a way to get it to turn bookmark folder names into tags when importing?

That is, if I have a bookmark like this stored three folders deep...

Cars > Restoration > Paint > http://example.com/howtopaintcars

...I'd like to have it automatically tagged Cars, Restoration and Paint.

I have a couple thousand bookmarks to import, so bringing them in without tags is unworkable, as is manual tagging.

This approach wouldn't be perfect in all cases, but would retain much of the organization I've already established.

add an archive function

hi,
it would be cool if links could be archived an therefore not being shown in the main list.

use case
i like adding links which are

  • noteworthy
  • on my todo list

after finishing my task the links on my todo list should disappear from the main list while not being deleted. i still want to find them if i have to check on them later on.

behaviour
links can only be removed from the list. once removed, they are deleted and can never be found again

feature request
Add an button to archive a link. Archived links are shown in a seperate list. the tag list should remain the same but filter only on the archived links.

Bookmark view

  • you can switch to the Archive view
  • links can be Archived
  • search an tags work only for the main list

image

Archive view

  • you can switch back to the main Bookmarks view
  • links can be Restored to the main bookmark list
  • search an tags work only for the archived list

image

Increase limit on bookmark URL length

I tried to add a URL but got:

Ensure this value has at most 200 characters (it has 265).

This seems pretty low as clean URLs even without tracking/marketing parameters can often go beyond 200 chars. No such complaint was made for any link at the time of import so it does seem to work (or does it trim such URLs while importing?)

Would request for an increased limit on bookmark URL length.

Import should scrape title and description from URL

Currently bookmarks automatically use the title + description from the website when added manually.

The same should also work when importing bookmarks. This would be easy to add, but might slow down the import immensely due to the high number or requests that need to be executed. Would have to check if that is acceptable or if this can be solved through async jobs/tasks or similar.

Enhancement: add archive funcitonality

I love this app.

If you can support archive, it would be even nice.

The motivation is obvious, cleanup interesting but not oftenly used stuffs.
Though bookmarks can be recovered by tag filtering or searching.

Make tags case-insensitive

hi,
first of all, i really like your service and get used to it.

behaviour
tags are case-sensitive. but due to the highlight/capitalization the first letter is uppercase while the tag itself maybe not. having the same tag lower-case and capitalized shows the tag also twice.

image

expected behaviour
tags should be case-insensitive. this would

  • show the same tag only once
  • make tagging easier especially when on mobile

Enhancement: return to same page we were on after editing a bookmark

I am retrospectively trying to add tags to all my bookmarks. Once I reached page 2, edited a bookmark, and saved it, I was redirected back to the homepage (page 1). I'm having to manually go back to page 2 and edit the next bookmark.

A good UX would be to go back to the same page we were on before hitting the edit button.

Add a dark mode

It would be nice if this included a dark mode.

I will likely PR this at some point (since it's the one thing between now and me using linkding), though I'm not familiar with Django so we'll see~
Otherwise I could skip making it a config setting and just do it in CSS (using prefers-color-scheme)... what would be preferred here?

Novice help.

Hello, I am a novice, how to deploy linkding to heroku, I tried several times, but failed, I hope the boss can provide a tutorial, thank you very much!

Add an API for backup / store data in pure text

It's nice that you considered the backups which is one of the very important component for a service.
But I have to idea for you to improve the user experience for backups.

  1. Add an API for backup. Then users could remotely do backups by calling this API.
  2. Store the data in pure text. If all data store in pure text, then everything can be backuped by regularly commit and push through VCS.

BUG: Search with tag is a bit broken

#typography is a valid tag, but I don't see it in search results:

image

But #typography, (notice the extra ,) returns the search:

image

Is that the intended behavior?

Add Favicon

I looked into creating a PR for this one, but I'm not sure how to go about it. The current project logo appears to be a Spectre link icon made in CSS, and I couldn't find any .svg or raster image version to make into a favicon.

This is a bit of a convenience feature, but it would definitely improve the overall look as I have mine pinned in the Bookmarks bar.

Enhancement: let user configure to open links in same tab instead on a new window/tab

My use-case: I use my linkding site as the default new tab page. I would like to quickly search and open a link in the same tab.

Currently, clicking a link opens a new tab and I'm left with the new tab that I had opened with linkding, as well as the actual link I wanted to open in another new tab.

This actually involves two facets once a user configures these:

  1. autofocus on the linkding search bar
  2. update the target values on the linkding bookmark entries to open in current tab

feature request: tag edit

Thank you for your great work. I found linkding was missing tag edit function. Could you can it. tks.

Option to create bookmarks public

Would it be possible to implement an option to have the bookmark display in a public list?

Say if you were to do to /public at the end of the url it would display a list of URLs that users have set as public when creating the bookmark. Probably not high on the todo list, but would be nice to see if possible 👍

Great bookmark software. Been using it for over a week now!

thank you and a chrome extension

Hello @sissbruecker, wanted to let you know I love linkding and I use it every day.

I put together a little Chromium extension for my preferred way of using Linkding, thought you'd might like to know about it. And possibly it will be of use to someone besides me :)

Keep up the great work!

Add an invitiation workflow

Currently there is no UI workflow to add new users to the system. The only options are creating new super-users using the Django script or enabling registration for a limited time. For self-hosted scenarios, it would make sense if the application would support invites. That would make it simple to add specific users (such as family members, friends, colleagues) without setting a password for them.

The workflow would look something like this:

  • Application provides a page + form to invite a new user per mail
  • User clicks on link in mail and lands on page / form where they can complete their registration details and set their password
  • Completing the form enables the account and the user is now able to login

Would need to consider if this needs to be behind a config flag or if the invite feature can be active all the time (for super users).

Archived bookmarks - no result when searching for a word which is used only as tag

Actual behavoiour

If you search the archive for a word which is used as Tag but not in the Title or Description the Tag is shown in the Tags list but not in the results.

Archive

Before search: There is an entry where the search term matches a Tag.

grafik

Search result

No results but an entry in the Tags list.

grafik

Expected behaviour

As in the normal (unarchived) bookmarks list the result should be shown if a searchterm matches a Tag.

grafik

Improve Netscape bookmarks file parsing

Currently linkding uses the beautiful-soup library to parse import files. Since the format is missing closing tags in many places this leads to a high number of nested tags / recursion when parsing the files. This leads to errors when parsing files with a large number of bookmarks.

I plan to replace beautiful-soup with a custom parser that does not have the nesting issue.

Add archive/unarchive button to edit bookmark page

Feature request

Can you add an Archive button to the edit bookmark page?

Use case

i just bought an article on my todo list. while changing the tags from todo to bought i had to to Save my entry and Archiveit afterwards. An Archive or Save and archive button would be useful.

Vice versa there should be an button to Restore the link from the archive if the entry is already archived.

hidden feature request

You may want to change the title from Edit bookmark to Edit archived bookmark if you edit an archived bookmark,

Example

grafik

Show URL if title is not available

If you add a bookmark and linkding fails to fetch title/description, the bookmark will be displayed as "None" in the list. I think URL should be displayed in such cases.

Screenshot_2021-01-11 linkding

invalid request block size: 4243 (max 4096)...skip

Installed at Unraid but can't open WebUI. This is the log:

Operations to perform:
Apply all migrations: admin, auth, bookmarks, contenttypes, sessions
Running migrations:
No migrations to apply.
There is already a secret key in `secretkey.txt`
[uWSGI] getting INI configuration from uwsgi.ini
[uwsgi-static] added mapping for /static => static
*** Starting uWSGI 2.0.18 (64bit) on [Sun Sep 6 07:36:41 2020] ***
compiled with version: 6.3.0 20170516 on 07 June 2020 12:18:45

os: Linux-4.19.107-Unraid #1 SMP Sun Mar 8 14:34:03 CDT 2020
nodename: 86ee98549238
machine: x86_64
clock source: unix
detected number of CPU cores: 8
current working directory: /etc/linkding
writing pidfile to /tmp/linkding.pid
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
setgid() to 33
setuid() to 33
chdir() to /etc/linkding
your processes number limit is 123542
your memory page size is 4096 bytes
detected max file descriptor number: 40960
building mime-types dictionary from file /etc/mime.types...554 entry found
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uWSGI http bound on :9090 fd 4
uwsgi socket 0 bound to TCP address 127.0.0.1:34187 (port auto-assigned) fd 3
Python version: 3.7.7 (default, May 20 2020, 21:22:20) [GCC 6.3.0 20170516]

Python main interpreter initialized at 0x55a85049e140
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 416720 bytes (406 KB) for 8 cores
*** Operational MODE: preforking+threaded ***
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x55a85049e140 pid: 10 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 10)
spawned uWSGI worker 1 (pid: 11, cores: 2)
spawned uWSGI worker 2 (pid: 12, cores: 2)
spawned uWSGI worker 3 (pid: 14, cores: 2)
spawned uWSGI worker 4 (pid: 16, cores: 2)
*** Stats server enabled on 127.0.0.1:9191 fd: 18 ***
spawned uWSGI http 1 (pid: 18)
invalid request block size: 4211 (max 4096)...skip
[uwsgi-http key: 10.1.0.10:9090 client_addr: 10.1.0.100 client_port: 3026] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]

Add Lotus Notes links

Hello,

I am trying to setup linkding to use it with Lotus Notes.

I want to add Lotus Notes Document links as bookmarks.
Unfortunately its not possible.

A notes url/link looks like this:
notes://NOTESSERVER.SUBDMAIN.DOMAIN.COM/C12H9BF2F0261BDA/7B18866DH/THGUJZC1257D330032D158/0807E72E8A1D1B52C12585G/HFZ&RUZG

If you open this link, it redirects you to the document in Lotus Notes.
Would that be possible to add?

API for app development

Hello,

Does linkding have API for developing browser extensions, desktop application etc. ?

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

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

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.