Skip to content

Commit

Permalink
feat(new site): cinematik (#263)
Browse files Browse the repository at this point in the history
  • Loading branch information
we11adam committed Nov 9, 2023
1 parent 7719024 commit a4ed83e
Show file tree
Hide file tree
Showing 8 changed files with 117 additions and 16 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ node_modules
.cache
src/config.json
src/i18n.json
tg-channel.txt
tg-channel.txt
bun.lockb
24 changes: 24 additions & 0 deletions src/components/Container.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,30 @@ const Container = () => {
}
</>
}
{CURRENT_SITE_NAME === 'Cinematik' && <>
<tr>
<td className="rowhead"><Title /></td>
<td><UploadSiteList /></td>
</tr>
<tr>
<td className="rowhead">
{$t('快捷操作')}
</td>
<td>
<FunctionList />
</td>
</tr>
{!quickSearchClosed && <tr>
<td className="rowhead">
<h4 className="quick-search" onClick={checkQuickResult}>{$t('快速检索')}</h4>
</td>
<td>
<SearchList />
</td>
</tr>
}
</>
}
{
CURRENT_SITE_NAME === 'TeamHD' &&
<>
Expand Down
16 changes: 16 additions & 0 deletions src/config/Cinematik.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
url: https://cinematik.net
host: cinematik.net
siteType: Cinematik
icon: data:image/png;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8ACAgIAA0NDQATExMAFBQUABsbGwAfHx8AJycnACoqKgAtLS0AMTExADU1NQA5OTkAPj4+AEFBQQBFRUUASEhIAE1NTQBRUVEAVVVVAFlZWQBdXV0AYWFhAGVlZQBpaWkAbm5uAHJycgB1dXUAenp6AH5+fgCCgoIAhoaGAImJiQCOjo4AkpKRAJSUlACdnZ0ApaWlAKioqACsrKwAsrKyALS0tAC8vLwAxcXFAM3NzQDa2toA6enoAO/u7QD+/v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/ykgICAfHx8fICv///////8iJiAZGRkYGRgiKf//////IBsZFBQUFBQSIC4p/////yIkGxQQEhISEB0wLib///8gGRUQDQ0NDQ0SFBkfKf//ICIZDBQdEgwMCQwYGxv//x8dFQkZMC0fDQkJFRsZ//8fHxUFGDAwMCwYBxUbGP//Hx8YAhgwMDAwIgUVHxj//x0VDTEVMDAqFQUCEBUV//8dIhgxDSkVAzExMRUgFf//HRAJMTECMTExMTEMEBX//x0lGTExMTExMTExGSQU//8dEgwxMTExMTExMQwQFP//HSAVMTExMTExMTEVIBX//yYYGBUYGBgYGBUYGBQg/4Af//+AD///gAf/P4AD//+AAf85gAH//4AB//+AAf//gAH/P4AB++eAAb5fgAFc6YABvl+AAVc6gAE/v4AB/z8=
asSource: true
asTarget: false
uploadPath: /upload.php
seedDomSelector: "body > table.mainouter > tbody > tr > td > table:nth-child(5) > tbody > tr:nth-child(3)"
needDoubanInfo: true
search:
path: /browse.php
params:
search: "{imdb}"
cat: 0
incldead: 1
srchdtls: 1
28 changes: 14 additions & 14 deletions src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,35 +39,35 @@ if (CURRENT_SITE_NAME) {
console.log(TORRENT_INFO);
});

let target = $(currentSiteInfo.seedDomSelector)[0] as HTMLElement|null;
const element = document.createElement('div');
render(<App />, element);
let refNode = $(currentSiteInfo.seedDomSelector)[0] as HTMLElement|null;
const app = document.createElement('div');
render(<App />, app);
if (['PTP', 'BTN', 'GPW', 'EMP', 'RED', 'DicMusic', 'MTV'].includes(CURRENT_SITE_NAME)) {
const torrentId = getUrlParam('torrentid');
if (CURRENT_SITE_NAME === 'GPW') {
target = document.querySelector(`#torrent_detail_${torrentId} >td`);
refNode = document.querySelector(`#torrent_detail_${torrentId} >td`);
} else if (CURRENT_SITE_NAME === 'EMP') {
const groupId = getUrlParam('id');
target = document.querySelector(`.groupid_${groupId}.torrentdetails>td`);
refNode = document.querySelector(`.groupid_${groupId}.torrentdetails>td`);
} else if (CURRENT_SITE_NAME === 'MTV') {
target = document.querySelector(`#torrentinfo${torrentId}>td`);
refNode = document.querySelector(`#torrentinfo${torrentId}>td`);
} else {
target = document.querySelector(`#torrent_${torrentId} >td`);
refNode = document.querySelector(`#torrent_${torrentId} >td`);
}
target?.prepend(element);
refNode?.prepend(app);
} else if (CURRENT_SITE_NAME === 'UHDBits') {
const torrentId = getUrlParam('torrentid');
$(`#torrent_${torrentId} >td`).prepend(document.createElement('blockquote'));
$(`#torrent_${torrentId} >td blockquote:first`)?.prepend(element);
$(`#torrent_${torrentId} >td blockquote:first`)?.prepend(app);
} else if (CURRENT_SITE_NAME === 'SpeedApp') {
const div = document.createElement('div');
div.setAttribute('class', 'row col-md-12 mt-5');
element.setAttribute('class', 'card-body card');
div.appendChild(element);
target?.parentNode?.insertBefore(div, target);
app.setAttribute('class', 'card-body card');
div.appendChild(app);
refNode?.parentNode?.insertBefore(div, refNode);
} else {
Array.from(element.childNodes).forEach(node => {
target?.parentNode?.insertBefore(node, target);
Array.from(app.childNodes).forEach(child => {
refNode?.parentNode?.insertBefore(child, refNode);
});
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/source/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { CURRENT_SITE_NAME, CURRENT_SITE_INFO } from '../const';
import getPTPInfo from './ptp';
import getBHDInfo from './bhd';
import getHDBInfo from './hdb';
import getTikInfo from './tik';
import getTTGInfo from './ttg';
import getUNIT3DInfo from './unit3d';
import getNexusPHPInfo from './nexusphp';
Expand All @@ -23,6 +24,7 @@ import getSpeedAppInfo from './speedapp';
const siteNameMap = {
BeyondHD: getBHDInfo,
HDBits: getHDBInfo,
Cinematik: getTikInfo,
TTG: getTTGInfo,
HDT: getHDTInfo,
KG: getKGInfo,
Expand Down
57 changes: 57 additions & 0 deletions src/source/tik.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { CURRENT_SITE_INFO, CURRENT_SITE_NAME, TORRENT_INFO } from '../const';
import {
formatTorrentTitle,
getInfoFromBDInfo,
getSourceFromTitle,
} from '../common';

export default async () => {
// const torrentId = getUrlParam('id');
TORRENT_INFO.sourceSite = CURRENT_SITE_NAME;
TORRENT_INFO.sourceSiteType = CURRENT_SITE_INFO.siteType;
const typeText = $('td.heading:contains(Type)').eq(0).next().text();
const isMovie = typeText !== 'TV-Series';
// const isBluray = TORRENT_INFO.videoType.match(/bluray/i);
const tags: (string | null)[] = [];
$('td.heading:contains(Tags)').eq(0).next().children().each((_, child) => {
tags.push(child.textContent);
});
const size = $('td.heading:contains(Size)').eq(0).next().text()
.replace(/[0-9.]+ GB\s+\(([0-9,]+) bytes\)/i, (_, size) => size.replace(/,/g, ''));
const title = $('h1').eq(0).text();
const imdbNumber = $('span:contains("IMDB id:") a').text();
const descContainer = $('td.heading:contains(Description)').eq(0).next();
const desc = descContainer.text();
const rawDesc = descContainer.html();
TORRENT_INFO.mediaInfo = $('td[style~=dotted]').text();
const { videoCodec, audioCodec, resolution, mediaTags } = getInfoFromBDInfo(TORRENT_INFO.mediaInfo);
TORRENT_INFO.size = parseInt(size, 10);
TORRENT_INFO.title = formatTorrentTitle(title);
TORRENT_INFO.description = desc;
TORRENT_INFO.screenshots = getImagesFromDesc(rawDesc);
TORRENT_INFO.year = $('span.gr_hsep:contains(Year)').text().replace('Year: ', '').trim();
TORRENT_INFO.movieName = $('div.gr_tdsep h1:first-child').text();
TORRENT_INFO.imdbUrl = `https://www.imdb.com/title/tt${imdbNumber}/`;
TORRENT_INFO.category = isMovie ? 'movie' : 'tvPack';
TORRENT_INFO.source = getSourceFromTitle(TORRENT_INFO.title);
TORRENT_INFO.videoType = tags.includes('Blu-ray') ? 'bluray' : 'dvd';
TORRENT_INFO.videoCodec = videoCodec;
TORRENT_INFO.audioCodec = audioCodec;
TORRENT_INFO.resolution = resolution;
TORRENT_INFO.tags = mediaTags;
};

function getImagesFromDesc (desc: string) {
const screenshots: string[] = [];
if (!desc) {
return screenshots;
}
const matches = desc.match(/[a-z0-9]{32}/g);
if (!matches) {
return screenshots;
}
for (const m of matches) {
screenshots.push(`https://hostik.cinematik.net/gal/ori/${m[0]}/${m[1]}/${m}.jpg`);
}
return screenshots;
}
1 change: 1 addition & 0 deletions src/style.ts
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ td.title-td h4{
svg.setting-svg{
height: 20px;
width: 20px;
vertical-align: middle;
animation: 5s linear rotate infinite;
cursor: pointer;
}
Expand Down
2 changes: 1 addition & 1 deletion src/target/zhuque.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
buildPTPDescription,
} from './common';
import {
getTMDBIdByIMDBId, getIMDBIdByUrl,
getIMDBIdByUrl,
} from '../common';
const currentSiteInfo = PT_SITE.ZHUQUE;
export default (info: TorrentInfo.Info) => {
Expand Down

0 comments on commit a4ed83e

Please sign in to comment.