{
"response":{
"count":1
"items":[
{
"adding_date":1671701038,
"can_comment":0,
"can_like":1,
"can_repost":1,
"can_subscribe":1,
"can_add_to_faves":1,
"can_add":1,
"comments":0,
"date":1671701032,
"description":"",
"duration":15,
"image":[
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=1&type=39&tkn=3uLZ5s_T4TtRsvZfIwLngp8Qdjs&fn=vid_s",
"width":130,
"height":96,
"with_padding":1
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=1&type=39&tkn=3uLZ5s_T4TtRsvZfIwLngp8Qdjs&fn=vid_m",
"width":160,
"height":120,
"with_padding":1
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=1&type=39&tkn=3uLZ5s_T4TtRsvZfIwLngp8Qdjs&fn=vid_l",
"width":320,
"height":240,
"with_padding":1
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=1&type=39&tkn=3uLZ5s_T4TtRsvZfIwLngp8Qdjs&fn=vid_x",
"width":800,
"height":450,
"with_padding":1
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=1&type=39&tkn=3uLZ5s_T4TtRsvZfIwLngp8Qdjs&fn=vid_w",
"width":1280,
"height":720
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=1&type=39&tkn=3uLZ5s_T4TtRsvZfIwLngp8Qdjs&fn=vid_t",
"width":320,
"height":180
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=1&type=39&tkn=3uLZ5s_T4TtRsvZfIwLngp8Qdjs&fn=vid_u",
"width":720,
"height":405
}
],
"first_frame":[
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=0&type=39&tkn=WK9Wdwpqr6z6g9umM95aW3Ch3QM&fn=vid_f",
"width":720,
"height":405
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=0&type=39&tkn=WK9Wdwpqr6z6g9umM95aW3Ch3QM&fn=vid_md",
"width":480,
"height":270
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=0&type=39&tkn=WK9Wdwpqr6z6g9umM95aW3Ch3QM&fn=vid_d",
"width":240,
"height":135
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=0&type=39&tkn=WK9Wdwpqr6z6g9umM95aW3Ch3QM&fn=vid_sm",
"width":128,
"height":72
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=0&type=39&tkn=WK9Wdwpqr6z6g9umM95aW3Ch3QM&fn=vid_w",
"width":1280,
"height":720
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=0&type=39&tkn=WK9Wdwpqr6z6g9umM95aW3Ch3QM&fn=vid_h",
"width":960,
"height":540
},
{
"url":"https://i.mycdn.me/getVideoPreview?id=3376734079543&idx=0&type=39&tkn=WK9Wdwpqr6z6g9umM95aW3Ch3QM&fn=vid_w",
"width":1280,
"height":720
}
],
"width":1920,
"height":1080,
"id":456242110,
"owner_id":-22822305,
"ov_id":"4833925212306",
"title":"Анимированные vmoji в VK Звонках",
"is_favorite":false,
"player":"https://vk.com/video_ext.php?oid=-22822305&id=456242110&hash=e037414127166efe&__ref=vk.api&api_hash=1677682946870d1f6fa590a9b323_HAZDCNJWG42DA",
"added":0,
"repeat":1,
"type":"video",
"views":19271183,
"likes":{
"count":15007,
"user_likes":0
},
"reposts":{
"count":137,
"user_reposted":0
}
}
]
}
}
export function MainNode() {
const [tasks, setTasks] = useState(predefinedTasks)
const addTask = (listName, task) => {
// ..
// setTasks
// ..
}
const removeTask = (listNaem, taskId) => {
// ...
// setTasks
// ..
}
const moveTask = (fromListName, toListName, taskId) => {
// ..
// setTasks
// ..
}
return (
<main>
<TasksContainer type="Backlog" tasks={tasks.backlog} addTask={addTask}/>
<TasksContainer type="Ready" ... />
<TasksContainer type="InProgress" ... />
<TasksContainer type="Finished" ... />
</main>
)
}
export const TaskContext = createContext();
export const TaskProvider = ({ children }) => {
const [tasks, setTasks] = useState(predefinedTasks)
const addTask = (listName, task) => {
// ..
// setTasks
// ..
}
const removeTask = (listNaem, taskId) => {
// ...
// setTasks
// ..
}
const moveTask = (fromListName, toListName, taskId) => {
// ..
// setTasks
// ..
}
return (
<TaskContext.Provider value={{ tasks, moveTask, addTask }}>
{children}
</TaskContext.Provider>
);
}
const TaskList = ({ listName }) => {
const { tasks, moveTask, addTask } = useContext(TaskContext);
// ....
}
// так не работет
tasks.backlog.push(...)
// так работает
const tasks = {....} // объект с задачами
const updatedTasks = { // создаем новый объект с задачами
...tasks,
[listName]: [...tasks[listName], newTask]
};
setTasks(updatedTasks) // обновляем состояние
let events = {
'2019-12-29': ['name1', 'name3', 'name5', 'name7'],
'2019-12-30': ['name4', 'name8', 'name9'],
'2019-12-31': ['name2', 'name6']
};
// Преобразуем объект в массив объектов с помощью метода reduce
// Object.keys(events) возвращает массив дат (ключей объекта events)
let result = Object.keys(events).reduce((acc, date) => {
// acc (аккумулятор) — это значение, которое сохраняется между итерациями
// date — это текущий элемент массива (в данном случае дата из объекта events)
// На каждой итерации для текущей даты перебираем все события
events[date].forEach(event => {
// Добавляем объект { date, event } в аккумуляторный массив acc
acc.push({ date, event });
});
// Возвращаем аккумулятор после обработки всех событий для текущей даты
return acc;
}, []); // [] — начальное значение аккумулятора, с которого начинается накапливание данных
// Как работает reduce:
// 1. В начале acc равен [] (пустой массив).
// 2. На каждой итерации мы добавляем в acc новые объекты { date, event }.
// 3. Когда все даты и события обработаны, reduce возвращает конечный аккумулятор — массив объектов.
// Выводим результат в консоль
console.log(result);
When bundling with Webpack for the backend - you usually don't want to bundle its node_modules dependencies. This library creates an externals function that ignores node_modules when bundling in Webpack.
import { deleteAsync } from "del"
import zipPlugin from "gulp-zip"
export const zip = () => {
deleteAsync(`./${app.path.rootFolder}.zip`);
// return app.gulp.src(`${app.path.buildFolder}/.**/*.*`, {})
return app.gulp.src(`${app.path.buildFolder}/**/*.*`, {})
.pipe(app.plugins.plumber(
app.plugins.notify.onError({
title: "ZIP",
message: "Error:<%= error.message %>"
})
)
)
.pipe(zipPlugin(`./${app.path.rootFolder}.zip`))
.pipe(app.gulp.dest('./'));
}
What SpoofDPI does to bypass this is to send the first 1 byte of a request to the server, and then send the rest.
$('.daterangepicker').addClass('opensleft').removeClass('opensright');
// $('.daterangepicker').addClass('opensright').removeClass('opensleft');
{
"currentPage": 1,
"totalPages": 173,
"pageSize": 15,
"itemsInPage": 15,
"totalItems": 2591,
"items": [
{
"eventId": 314749,
"eventType": 7,
"eventStatus": 1,
"buyerOrganizationName": "NAXÇIVAN MUXTAR RESPUBLİKASI QAZ İSTİSMAR XİDMƏTİ",
"eventName": "Qaz tikinti quraşdırma materialları və avadanlıqlarının satınalınması",
"publishDate": "2024-08-27T19:50:59",
"endDate": "2024-09-18T18:00:00",
"hasNewVersion": false,
"awardedParticipantName": null,
"awardedParticipantVoen": null,
"documentViewType": 0,
"actualVersionId": 0,
"privateRfxId": 93247
}
.....
]
}
module.exports = {
data: {
isDev: process.env.NODE_ENV === 'development'
}
}
<div {% if isDev %} class="debug" {% endif %} ></div>
<!-- or -->
<div class="{{ 'debug' if isDev }}"></div>
autoprefixer({
overrideBrowserslist: ['last 4 versions'],
cascade: false
}),
"browserslist": [
"last 4 versions"
]
last 4 versions
контент от сервера загружается потом
import requests
url = 'https://nlstar.com/ru/office4/login/'
s = requests.Session()
r = s.get(url)
csrf_token = r.cookies['csrftoken']
data = {
'login': '007-2400101',
'password': '377609',
'csrfmiddlewaretoken': csrf_token
}
d = s.post(url, data=data, headers=dict(Referer=url))
dd = s.get('https://nlstar.com/')
print(dd.text)