Coder Social home page Coder Social logo

bonnguyenitc / tiktok-scraper Goto Github PK

View Code? Open in Web Editor NEW

This project forked from naseif/tiktok-scraper

0.0 1.0 0.0 242 KB

Scraper for TikTok. Download videos, music, fetch users info and more.

Home Page: https://naseif.github.io/tiktok-scraper/

License: MIT License

TypeScript 100.00%

tiktok-scraper's Introduction

tiktok-scraper

A fast light-weight scraper for tiktok to fetch and download video posts, video music, user info and more.

Installation

npm i tiktok-scraper-ts

Importing

TypeScript

import * as tiktokscraper from "tiktok-scraper-ts";

import { TTScraper } from "tiktok-scraper-ts"; // Individual classes

JavaScript

const tiktokscraper = require("tiktok-scraper-ts");

const { TTScraper } = require("tiktok-scraper-ts"); // Individual classes

Class Methods

.video(url, noWaterMark) scrapes video info and download link. You can decide if the video should have a watermark or not. Returns Promise<Video>
.user(username) Scrapes user info. Returns Promise<User>
.getAllVideosFromUser(username) Scrapes all available videos for the given user. Returns Promise<IVideo[]>
.getMusic(url) Scrapes Music info from a video. Returns Promise<Music>
.downloadAllVideosFromUser(username, path?: optional) Downloads all Videos of the given user. Returns Promise<void>
.noWaterMark(link) Returns a direct download link for the video without TikTok Watermark.
.hashtag(tag) Scrapes a hashtag posts

Individual Functions

Since 1.2.6 you can also import functions directly

API

fetchVideo(url, true); // Same as TTScraper.video(url, noWaterMark)
fetchUser(username); // Same as TTScraper.user(username)
fetchAllVideosFromUser(username); // Same as TTScraper.getAllVideosFromUser(username)
fetchMusic(url); // Same as TTScraper.getMusic(url)
fetchVideoNoWaterMark(url); // Same as TTScraper.noWaterMark(url)
hashtag(tag); // Same as TTScraper.hashtag(tag)

Examples

Cookies Support

Since 1.3.5 you can use cookies. In some cases where the request is not successful, a second request using puppteer will be made. However the request could take 2x longer. To avoid this you can use cookies. This is optional though.

The recommended way to get cookies is by installing the cookies.txt extension for the browser and then go to www.tiktok.com and export the cookies for current site. Then save the cookies.txt file and give the path of the cookie file as a parameter to the TTScraper class.

This is the only supported way to use cookies for now.

import { TTScraper } from "tiktok-scraper-ts";

const TikTokScraper = new TTScraper("./cookies.txt"); // all requests will try to use this cookie if it's valid

Fetch info for a single video

import { TTScraper } from "tiktok-scraper-ts";
const TikTokScraper = new TTScraper();

(async () => {
  const fetchVideo = await TikTokScraper.video("link", true); // second argument set to true to fetch the video without watermark
  console.log(fetchVideo);
})();

// OR

import { fetchVideo } from "tiktok-scraper-ts";

(async () => {
  const video = await fetchVideo("link");
  console.log(video);
})();

// ==>

Video {
  id: '7049800036758080773',
  description: undefined,
  createdAt: '05/01/2022',
  height: 1024,
  width: 576,
  duration: 10,
  resolution: '720p',
  shareCount: 12400,
  likesCount: 554500,
  commentCount: 7535,
  playCount: 5500000,
  cover: '',
  playURL: 'PLAY LINK',
  downloadURL: 'Download Link',
  fomrat: 'mp4'
}

Fetch user page

import { TTScraper } from "tiktok-scraper-ts";

const TikTokScraper = new TTScraper();

(async () => {
  const fetchUser = await TikTokScraper.user("user");
  console.log(fetchUser);
})();

// OR

import { fetchUser } from "tiktok-scraper-ts";

(async () => {
  const user = await fetchUser("link");
  console.log(user);
})();

// ==>

User {
  id: '',
  uniqueId: 'user',
  nickname: 'new user',
  avatar: 'PP Link',
  signature: '',
  createdAt: '12/12/2021',
  verified: false,
  secretUID: 'MS4wLjABAAAAkLv5v2jUnsIzViWXSAQoj5U4o685FeSDFSDfsdfsdflrk-k75Znw',
  bioLink: undefined,
  privateAccount: false,
  isUnderAge18: false,
  followers: 1,
  following: 2,
  hearts: 0,
  videos: 0
}

Common Types

IUser
export interface IUser {
  /**
   * the id of the User
   */
  id: string;
  /**
   * The tiktok unique id of the User
   */
  uniqueId: string;
  /**
   * optional nickname of the User
   */
  nickname: string;
  /**
   * the avatar link of the User
   */
  avatar: string;
  /**
   * the bio description of the User
   */
  signature: string;
  /**
   * the date of the creation of the User
   */
  createdAt: string;
  /**
   * Whether the User is a verified User by TikTok
   */
  verified: boolean;
  /**
   * the secret UID of the User
   */
  secretUID: string;
  /**
   * The link in the bio if the it contains any
   */
  bioLink: string;
  /**
   * Whether the account privacy is set to private
   */
  privateAccount: boolean;
  /**
   * Whether the User is underage
   */
  isUnderAge18: boolean;
  /**
   * Number of followers for this User
   */
  followers: number;
  /**
   * Number of the accounts this user follows
   */
  following: number;
  /**
   * How many likes this User got over the time
   */
  hearts: number;
  /**
   * Number of the Videos this User has posted
   */
  videos: number;
}
IVideo
export interface IVideo {
  /**
   * the unique id of the video
   */
  id: string;
  /**
   * the description of the video if available
   */
  description: string;
  /**
   * the date on which the video was created on tiktok
   */
  createdAt: string;
  /**
   * height of the video
   */
  height: number;
  /**
   * width of the video
   */
  width: number;
  /**
   * duration of the video
   */
  duration: number;
  /**
   * resolution of the video
   */
  resolution: string;
  /**
   * Number of times the video was shared
   */
  shareCount: number;
  /**
   * Number of likes on the video
   */
  likesCount: number;
  /**
   * Number of comments on the video
   */
  commentCount: number;
  /**
   * Number of times the video has been played
   */
  playCount: number;
  /**
   * a direct url to the video cover
   */
  cover?: string;
  /**
   * A direct url to the dynamic video cover
   */
  dynamicCover?: string;
  /**
   * a direct play url for the video
   */
  playURL?: string;
  /**
   * a direct download url for the video
   */
  downloadURL?: string;
  /**
   * the format of the video
   */
  fomrat?: string;
}
IMusic
export interface IMusic {
  /**
   * tiktok music ic
   */
  id: number;
  /**
   * tiktok music title
   */
  title: string;
  /**
   * direct link to this music
   */
  playURL: string;
  /**
   * tiktok music original cover
   */
  coverLarge: string;
  /**
   * tiktok music thumnail cover
   */
  coverThumb: string;
  /**
   * tiktok music author
   */
  author: string;
  /**
   * tiktok music duration
   */
  duration: number;
  /**
   * Whether the music is original or user made
   */
  original?: boolean;
  /**
   * The Album name if it is part of an album
   */
  album?: string;
}

Contributions

Software contributions are welcome. If you are not a dev, testing and reproting bugs can also be very helpful!

Questions?

Please open an issue if you have questions, wish to request a feature, etc.

tiktok-scraper's People

Contributors

naseif avatar spawnrad avatar

Watchers

James Cloos avatar

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.