There should be a way to pay only the workers when you buy something. In that case, you could pay them but only after pirating and making sure you enjoy it. Since there is nothing like that, I think you should pay only content from small creators. Big creators already have plenty, and paying for anything else just gives money to greedy executives who then lower the quality of the content to make more money. Of course, if you have the means and don’t pay anything, you are just making sure there will be less of that content made in the future. It isn’t scalable; if everybody pirated content without paying a single cent, there would be no content made except by hobbyists who don’t want to make a living out of it.
I really like to see communities like lemmy.film, mtgzone.com, and programming.dev and wish there was an instance about literature.
This has already been mentioned a few times. Just find the relevant issue on GitHub and give it an upvote.
I knew I recognized him from somewhere. He was the developer of lib.reviews. https://github.com/eloquence
Imagus is a browser extension for Firefox that allows users to enlarge images and display images/videos from links with a simple mouse-over. It is similar to the Hover Zoom extension, which is a popular tool for browsing memes and gifs on desktop. However, Hover Zoom has been flagged as spyware, so users may want to consider using Imagus instead. Imagus works with a wider range of links than Hover Zoom, including those from imgur. The extension also has customizable settings, including an expandable set of rules for getting larger images, media, or other content.
I’ve saved this, but it would be nice to see the syntax somewhere in the search engine
A function decorator: You can create a decorator that handles the connection and cursor creation and passes the cursor to the decorated function.
import sqlite3
from functools import wraps
DB_FILE = "your_database_file.db"
def with_cursor(func):
@wraps(func)
def wrapper(*args, **kwargs):
conn = sqlite3.connect(DB_FILE)
cursor = conn.cursor()
result = func(cursor, *args, **kwargs)
conn.commit()
cursor.close()
conn.close()
return result
return wrapper
@with_cursor
def insert_post_to_db(cursor: sqlite3.Cursor, issue: Issue, lemmy_post_id: int) -> None:
cursor.execute(
"INSERT INTO posts (issue_url, lemmy_post_id, issue_title, issue_body) VALUES (?, ?, ?, ?)",
(issue.url, lemmy_post_id, issue.title, issue.formatted_body),
)
A context manager: Create a context manager that handles the connection and cursor creation, as well as closing the connection when done. This way, you can use the with
statement to manage the connection and cursor in your functions.
import sqlite3
DB_FILE = "your_database_file.db"
class DatabaseConnection:
def __enter__(self):
self.conn = sqlite3.connect(DB_FILE)
self.cursor = self.conn.cursor()
return self.cursor
def __exit__(self, exc_type, exc_val, exc_tb):
self.conn.commit()
self.cursor.close()
self.conn.close()
def insert_post_to_db(issue: Issue, lemmy_post_id: int) -> None:
with DatabaseConnection() as cursor:
cursor.execute(
"INSERT INTO posts (issue_url, lemmy_post_id, issue_title, issue_body) VALUES (?, ?, ?, ?)",
(issue.url, lemmy_post_id, issue.title, issue.formatted_body),
)
This is so cool. It’s exactly what I had in mind when thinking of a modern bash alternative.
Which is why we should make the implementer’s job easier by providing only the relevant information instead of wasting their time with a flood of comments on the issue tracker.
I like this idea, but I would suggest generalizing it to apply to any similar posts. That way, we can find the best answers to a question without having to open multiple posts asking the same thing.
Issue #1908: Merge comments from similar posts into a single view
Oh yeah I was thinking more along the lines of video games or movies where there are too many people creating it. For books, etc you can definitely donate.