@@ -291,7 +291,7 @@ async function RuTracker(query, categoryId, page) {
291291 'Peers' : data ( element ) . find ( 'td.row4.leechmed.bold' ) . text ( ) . trim ( ) ,
292292 // Заменяем все символы пробела на обычные пробелы и форматируем дату (передаем пробел вторым параметром разделителя)
293293 'Date' : formatDate (
294- data ( element ) . find ( 'td.row4 p' ) . text ( ) . trim ( ) ,
294+ data ( element ) . find ( 'td.row4 p' ) . text ( ) . trim ( ) . replace ( / ( \d { 1 , 2 } - [ А - Я а - я ] { 3 } - \d { 2 } ) . * / , '$1' ) ,
295295 "-"
296296 )
297297 }
@@ -721,8 +721,40 @@ async function Kinozal(query, categoryId, page, year, format) {
721721 // +++ Анализ заголовка
722722 // Забираем все элементы 's'
723723 const s = data ( element ) . find ( '.s' )
724- // Разбиваем дату из 3-его элемента массива 's'
725- const date = s . eq ( 2 ) . text ( ) . trim ( ) . split ( " " )
724+ // Забираем дату из 3-его элемента 's'
725+ const sDate = s . eq ( 2 ) . text ( ) . trim ( ) // сейчас || сегодня в 15:17 || вчера в 23:51 || 06.10.2024 в 19:47
726+ // Разбиваем дату на массив
727+ const dateArray = sDate . split ( " " )
728+ let date
729+ let time
730+ // Получаем текущую дату и время
731+ const today = new Date ( )
732+ let currentDay = String ( today . getDate ( ) ) . padStart ( 2 , '0' )
733+ let currentMonth = String ( today . getMonth ( ) + 1 ) . padStart ( 2 , '0' ) // Месяцы начинаются с 0
734+ let currentYear = today . getFullYear ( )
735+ // Проверяем и обновляем дату и время до формата dd.mm.yyyy и hh:mm
736+ if ( dateArray . includes ( 'сейчас' ) ) {
737+ date = `${ currentDay } .${ currentMonth } .${ currentYear } `
738+ time = `${ today . getHours ( ) } :${ today . getMinutes ( ) } `
739+ }
740+ // Получаем текущую дату и вытаскиваем время из массива
741+ else if ( dateArray . includes ( 'сегодня' ) ) {
742+ date = `${ currentDay } .${ currentMonth } .${ currentYear } `
743+ time = dateArray [ 2 ]
744+ }
745+ // Вычитаем один день
746+ else if ( dateArray . includes ( 'вчера' ) ) {
747+ today . setDate ( today . getDate ( ) - 1 )
748+ currentDay = String ( today . getDate ( ) ) . padStart ( 2 , '0' )
749+ currentMonth = String ( today . getMonth ( ) + 1 ) . padStart ( 2 , '0' )
750+ currentYear = today . getFullYear ( )
751+ date = `${ currentDay } .${ currentMonth } .${ currentYear } `
752+ time = dateArray [ 2 ]
753+ }
754+ else {
755+ date = dateArray [ 0 ]
756+ time = dateArray [ 2 ]
757+ }
726758 // Получем жанр по type id
727759 const categoryGetId = data ( element ) . find ( "td.bt img" ) ?. attr ( "onclick" ) ?. match ( / \d + / ) [ 0 ]
728760 // Получаем название жанра по id через индекс массива
@@ -745,7 +777,8 @@ async function Kinozal(query, categoryId, page, year, format) {
745777 'Category' : category ,
746778 'Seeds' : data ( element ) . find ( '.sl_s' ) . text ( ) . trim ( ) ,
747779 'Peers' : data ( element ) . find ( '.sl_p' ) . text ( ) . trim ( ) ,
748- 'Date' : `${ date [ 0 ] } ${ date [ 2 ] } `
780+ 'Time' : time ,
781+ 'Date' : date
749782 }
750783 torrents . push ( torrent )
751784 }
@@ -979,30 +1012,10 @@ async function KinozalRssCustom(typeData, categoryId, year, format) {
9791012 const torrents = [ ]
9801013 if ( dataKinozal . length === 50 ) {
9811014 dataKinozal . forEach ( element => {
982- let updateDate
983- const date = element . Date
984- const today = new Date ( )
985- let time = date . split ( ' ' ) [ 1 ]
986- if ( date . includes ( 'сегодня' ) ) {
987- // Получаем формат: 2024-10-08T04:21:27+00:00
988- const currentDay = String ( today . getDate ( ) ) . padStart ( 2 , '0' )
989- const currentMonth = String ( today . getMonth ( ) + 1 ) . padStart ( 2 , '0' ) // Месяцы начинаются с 0
990- const currentYear = today . getFullYear ( )
991- updateDate = `${ currentYear } -${ currentMonth } -${ currentDay } T${ time } +00:00`
992- }
993- else if ( date . includes ( 'вчера' ) ) {
994- // Вычитаем один день
995- today . setDate ( today . getDate ( ) - 1 ) ;
996- const currentDay = String ( today . getDate ( ) ) . padStart ( 2 , '0' )
997- const currentMonth = String ( today . getMonth ( ) + 1 ) . padStart ( 2 , '0' )
998- const currentYear = today . getFullYear ( )
999- updateDate = `${ currentYear } -${ currentMonth } -${ currentDay } T${ time } +00:00`
1000- }
1001- else {
1002- // Парсим дату: 06.10.2024 21:46
1003- let date2 = date . split ( ' ' ) [ 0 ] . split ( '.' )
1004- updateDate = `${ date2 [ 2 ] } -${ date2 [ 1 ] } -${ date2 [ 0 ] } T${ time } +00:00`
1005- }
1015+ let dateArray = element . Date . split ( '.' )
1016+ let time = element . Time
1017+ // Получаем формат: YYYY-MM-DDTHH:MM:SS+00:00
1018+ let updateDate = `${ dateArray [ 2 ] } -${ dateArray [ 1 ] } -${ dateArray [ 0 ] } T${ time } :00+00:00`
10061019 const torrent = {
10071020 'date' : updateDate ,
10081021 'title' : element . Name ,
@@ -1124,8 +1137,8 @@ async function RuTor(query, categoryId, page) {
11241137 const torrents = [ ]
11251138 let html
11261139 let url
1127- for ( const url of urls ) {
1128- const urlQuery = url
1140+ for ( const urlQuery of urls ) {
1141+ url = urlQuery . replace ( / ^ ( h t t p s : \/ \/ r u t o r \. [ a - z ] { 2 , 4 } ) . + / , "$1" ) // подстановочный параметр для рабочего url
11291142 try {
11301143 const response = await axiosProxy . get ( urlQuery , {
11311144 timeout : 3000 ,
@@ -1562,6 +1575,12 @@ async function NoNameClub(query, categoryId, page) {
15621575 const sizeIndex = count === 4 ? 1 : count === 5 ? 2 : 1
15631576 // Исключаем первый элемент байт из массива (slice(1))
15641577 const size = data ( element ) . find ( `.gensmall:eq(${ sizeIndex } )` ) . text ( ) . trim ( ) . split ( ' ' , 3 ) . slice ( 1 ) . join ( ' ' )
1578+ // Забираем и преобразуем timestamp
1579+ const dataArray = unixTimestamp (
1580+ data ( element ) . find ( `.gensmall:eq(${ sizeIndex + 2 } )` ) . text ( ) . trim ( ) . split ( ' ' ) [ 0 ]
1581+ ) . split ( ' ' )
1582+ const date = dataArray [ 0 ]
1583+ const time = dataArray [ 1 ]
15651584 const torrent = {
15661585 'Name' : data ( element ) . find ( '.genmed a b' ) . text ( ) . trim ( ) ,
15671586 'Id' : data ( element ) . find ( '.genmed a' ) . attr ( 'href' ) . replace ( / .+ t = / , '' ) ,
@@ -1573,9 +1592,8 @@ async function NoNameClub(query, categoryId, page) {
15731592 'Seeds' : data ( element ) . find ( '.seedmed' ) . text ( ) . trim ( ) ,
15741593 'Peers' : data ( element ) . find ( '.leechmed' ) . text ( ) . trim ( ) ,
15751594 // Забираем и преобразуем timestamp
1576- 'Date' : unixTimestamp (
1577- data ( element ) . find ( `.gensmall:eq(${ sizeIndex + 2 } )` ) . text ( ) . trim ( ) . split ( ' ' ) [ 0 ]
1578- )
1595+ 'Time' : time ,
1596+ 'Date' : date
15791597 }
15801598 torrents . push ( torrent )
15811599 }
@@ -2121,7 +2139,7 @@ const options = {
21212139 openapi : '3.0.0' ,
21222140 info : {
21232141 title : 'TorAPI' ,
2124- version : '0.5.1 ' ,
2142+ version : '0.5.2 ' ,
21252143 description : 'Unofficial API (backend) for RuTracker, Kinozal, RuTor and NoNameClub' ,
21262144 contact : {
21272145 name : "© Lifailon (Alex Kup)" ,
0 commit comments