Skip to content
This repository has been archived by the owner on Jan 9, 2023. It is now read-only.
/ You.JS Public archive

An unofficial JavaScript library for You.com.

License

Notifications You must be signed in to change notification settings

YouAPI/You.JS

Repository files navigation


You.JS Logo

You.JS - Deprecated

An unofficial JavaScript library for you.com.

AboutInstallHow To UseLicense

This project is currently unmaintained as You.com does not have an official public API. When they do, development on You.JS will resume, probably at https://github.com/You-OpenSource/You-JS. In the meantime, this project is archived and will be marked as deprecated on NPM.

About

Welcome to the the You.JS Library!

This library allows developers to easily access and utilize all of the functionality of the You.com platform through a simple and intuitive JavaScript API. With the library, developers can access a variety of You.com apps and services, including but not limited to:

  • The search engine

To get started with You.JS, read install and then how to use.

We hope you enjoy using You.JS!

adapted from YouDotCom's README.md

Install

To install the You.JS library, simply run the following command in your terminal:

npm install youdotjs

Note: You.JS is named youdotjs on npm because youjs is already taken and you.js is too similar.

You must also download curl-impersonate, put it somewhere, and add an environment variable called CURL_BINARY that points to one of the impersonated curl binaries (such as curl_chrome99 or curl_ff100).

Note: curl-impersonate does not currently work on Windows. If you are on Windows, you can either use WSL or use the curl-impersonate-win.

Alternatively, you may also implement the Fetcher function yourself to bypass CloudFlare's anti-bot measures. I have taken a shortcut and simply used curl-impersonate, but you may use any method you wish. I will explain more in the how to use section.

How To Use

Fetcher

The Fetcher function is used to create a custom fetcher for the library to use. It is a function that takes a URL and returns a promise that resolves to a string containing the HTML of the page at the given URL. The curlFetch function is an example of a fetcher that uses curl-impersonate to bypass CloudFlare's anti-bot measures.

It is recommended that you use a fetcher that bypasses CloudFlare's anti-bot measures, as the library will not work without one. However, if you do not want to use a fetcher, you may use the httpsFetch function, which uses the https module to fetch the page. However, this will not bypass CloudFlare's anti-bot measures, so the library will not work.

Using a Fetcher

The Fetcher function takes one or two arguments. The first argument is the URL to fetch. The second argument is an optional object containing options for the fetcher. It returns a promise that resolves to a FetcherResponse object.

TODO: Add documentation for all objects

The Fetcher is defined as follows:

type Fetcher = (url: string, options?: FetcherOptions) => Promise<FetcherResponse>;

The FetcherOptions object is defined as follows:

interface FetcherOptions {
  headers?: { [key: string]: string };
  rawHeaders?: string[]; // [key, value, key, value, ...]
  method?: string;
  body?: string;
  timeout?: number;
}

The FetcherResponse object is defined as follows:

interface FetcherResponse  {
  status: number | undefined;
  statusText: string | undefined;
  headers: { [key: string]: string };
  rawHeaders: string[];
  body: string;
}

To use, for example, httpsFetch, you would do the following:

import { httpsFetch } from 'youdotjs';

httpsFetch('https://example.com').then((response) => {
  console.log(response.body);
}).catch((error) => {
  console.error(error);
});

curlFetch

To use the curlFetch function, you must first download curl-impersonate, put it somewhere, and add an environment variable called CURL_BINARY that points to one of the impersonated curl binaries (such as curl_chrome99 or curl_ff100).

Note: curl-impersonate does not currently work on Windows. If you are on Windows, you can either use WSL or use the curl-impersonate-win.

Search

TODO: Add documentation for search

For now, you can see the Search.ts file for documentation. (I'm originally a Java developer, so this is why all the files are CamelCase.)

YouChat

Currently not implemented because CloudFlare's restrictions on the YouChat API are too strict.

Discord

We also have an active Discord server where you can chat with developers and get help with using the library. Our Discord community is a great place to ask questions, share your projects, and get feedback from other developers.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details

About

An unofficial JavaScript library for You.com.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published