Skip to content

Unlocking Decentralized Ratings, Reviews and Movies with a sub protocol powered by the Nostr Protocol. ๐Ÿฟ๐Ÿฆ–

Notifications You must be signed in to change notification settings

jrc-dev/nostrassic-park

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 

Repository files navigation

Nostrassic Park Sub Protocol

Unlocking Decentralized Ratings, Reviews and Movies client applications with a sub protocol powered by the Nostr Protocol. ๐Ÿฟ๐Ÿฆ–

Operates on the Nostr Protocol ensuring that no centralized company controls the content, reviews and ratings.

Clients

Nostr Potatoes๐ŸŽฌ๐Ÿฟ๐Ÿฅ”

Key Features

  • Decentralization: Operates on the Nostr Protocol, ensuring that no central authority controls the content or reviews. Decentralization fosters real diversity and independence.

  • User-Powered Ratings: Your ratings and preferences matter. Nostrassic Park relies on the collective wisdom of users you follow, allowing you to discover content that resonates with your unique taste.

  • Enhanced Trust: By basing recommendations on the ratings of people in your network, Nostrassic Park aims to create a more trustworthy platform where you can confidently explore movies and series.

Why ?

In the world of entertainment, reviews can be a battleground for differing opinions and cultural narratives. It's not uncommon to encounter instances where movies and series become embroiled in what's often referred to as the "cultural war," where diverse perspectives clash.

Corporate interests often play a significant role in shaping the perception of movies and series. Some companies may attempt to influence reviews to promote their content or downplay negative feedback. Understanding these dynamics can help users make informed choices.

Ex: Rotten Tomatoes Under Fire After PR Firm's Scheme to Pay Critics for Positive Reviews Uncovered

Ex: Is โ€˜The Rings of Powerโ€™ Getting Review Bombed? Amazon Suspends Ratings

Critics and reviewers also carry significant weight in shaping public opinion. While many critics offer thoughtful, unbiased analysis, some may have ideological or biased motivations that influence their reviews. It's essential to approach reviews with a critical eye and consider multiple viewpoints.

Very short summary of how it works, if you don't plan to read anything else:

Rating a movie is an event in Nostr Protocol with metadatas about the rate and the movie using Proof of Work(NIP-13).

To create a rating for a movie, we create an event of type rating and that you are the author.

To get a movie's rating, we look for a rating-type event and that you are the author.

To remove a rating from a movie, we create an event deletion NIP-09 of kind 5 for the note event.

To calculate a movie's rating, we look for all the ratings of those you follow(NIP-02) and calculate the average.

  • Create a Rating Event:
let event = {
    kind: 1985,
    pubkey: pubkey,
    tags: [
        ['t', movie.id],
        ['l', 'nostr-movie/rating', movie.id, `{"quality": 0.5}`],
        ['l', 'ImdbId', movie.imdbId],
        ['l', 'tmdbId', movie.tmdbId],
        ['l', 'name', movie.name],
        ['l', 'year', movie.year],
        ['l', 'postReviewId', movie?.postReviewId],
    ],
    content: `Just publishing the metadata rating for ${movie.name}.`
  };
  event = await Wallet.mineEvent(event, 15, 5000); //PoW NIP-13
  event = await Wallet.signEvent(event);
....
  • Finding my Rating Event:
const event = await relay.get(
    {
        kinds: [1985],
        authors: [pubkey],
        '#t': [movieIdentifier]
    }
);
  • Remove rating Event:
let eventDelete = {
    kind: 5, //NIP-09
    pubkey: pubkey,
    tags: [
        ['e', event.id],
        ['t', movieId]
    ],
    content: `Just removing movie rating event.`,
    created_at: Math.round(Date.now() / 1000)
};
  • To calculate a movie's rating:
const myContactList = await relay.get(
    {
        kinds: [3],
        authors: [pubkey]
    }
);
const myFriendsReviewPromises = myContactList.map((pub) => {
    return findRatingById({ pubkey, movieId});
});
const myFriendsRating = await Promise.all(myFriendsReviewPromises);
const sumOfRates = myFriendsRating.reduce((accumulator, rate) => {
    const rate = getRateQuality(rate);
    return accumulator + rate;
}, 0);
.....
async function findRatingById(e) {
  const event = await relay.get(
      {
          kinds: [1985],
          authors: [pubkey],
          '#t': [movieId]
      }
  );
  return event;
}

About

Unlocking Decentralized Ratings, Reviews and Movies with a sub protocol powered by the Nostr Protocol. ๐Ÿฟ๐Ÿฆ–

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published