You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
231 lines
7.3 KiB
231 lines
7.3 KiB
"use client";
|
|
|
|
import React, { useState, useEffect} from 'react';
|
|
import {
|
|
Container,
|
|
Grid,
|
|
Header,
|
|
List,
|
|
Segment
|
|
} from 'semantic-ui-react';
|
|
import Link from 'next/link';
|
|
import Image from 'next/image'
|
|
import { Item } from 'semantic-ui-react';
|
|
import 'semantic-ui-css/semantic.min.css';
|
|
import AudioPlayer from 'react-h5-audio-player';
|
|
import 'react-h5-audio-player/lib/styles.css';
|
|
|
|
type Props = {
|
|
id: number;
|
|
audio: string;
|
|
description: string;
|
|
urlImg: string;
|
|
link_plafthorm_ya: string;
|
|
link_plafthorm_go: string;
|
|
link_plafthorm_ap: string;
|
|
link_plafthorm_yu: string;
|
|
title_items: string;
|
|
children: Node;
|
|
datePub: string;
|
|
}
|
|
|
|
|
|
const Views = async (e : number) =>{
|
|
console.log('id:',e)
|
|
await fetch('/api/podcasts/views', {method: 'POST', body: e as any})
|
|
.then((data) => {
|
|
console.log(data)
|
|
})
|
|
}
|
|
|
|
|
|
const PodcastBlocks: React.FC<Props> = ({id, audio, description, urlImg, title_items, datePub, link_plafthorm_ya, link_plafthorm_go, link_plafthorm_ap, link_plafthorm_yu}) => (
|
|
<>
|
|
<div className="m-3 card lg:card-side bg-base-100 shadow-xl">
|
|
<div className="flex flex-col items-center bg-white border border-gray-200 rounded-lg shadow md:flex-row ">
|
|
<div className="mb-3 object-cover rounded-t-lg md:w-auto md:min-w-64 md:max-w-64 md:rounded-s-lg md:m-3">
|
|
<Image
|
|
src={'/img/'+urlImg}
|
|
alt={title_items}
|
|
width="0"
|
|
height="0"
|
|
sizes="100vh"
|
|
className="w-full"
|
|
/>
|
|
</div>
|
|
<div className="width_99 flex flex-col justify-between p-4 leading-normal flex-auto">
|
|
<h2 className="card-title">{title_items}</h2>
|
|
<p>{description}</p>
|
|
<div className="card-actions justify-end">
|
|
<AudioPlayer
|
|
src={"audio/"+audio}
|
|
onPlay={e => Views(id)}
|
|
/>
|
|
</div>
|
|
<p className="mt-3"> Дата публикации: {datePub} | Прослушали: {100} </p>
|
|
<div className="flex flex-row">
|
|
<div className="basis-1/4">
|
|
<a href={link_plafthorm_ya}>
|
|
<Image
|
|
src={'/img/badge_white.png'}
|
|
alt={title_items}
|
|
width="0"
|
|
height="0"
|
|
sizes="200vw"
|
|
className="w-auto row-span-2"
|
|
/>
|
|
</a>
|
|
</div>
|
|
<div className="basis-1/4">
|
|
<a href={link_plafthorm_go}>
|
|
<Image
|
|
src={'/img/RU_Google_Podcasts_Badge_2x.png'}
|
|
alt={title_items}
|
|
width="0"
|
|
height="0"
|
|
sizes="200vw"
|
|
className="w-auto row-span-2"
|
|
/>
|
|
</a>
|
|
</div>
|
|
<div className="basis-1/4">
|
|
<a href={link_plafthorm_ap}>
|
|
<Image
|
|
src={'/img/Apple_podcast.png'}
|
|
alt={title_items}
|
|
width="0"
|
|
height="0"
|
|
sizes="200vw"
|
|
className="w-auto row-span-2"
|
|
/>
|
|
</a>
|
|
</div>
|
|
<div className="basis-1/4">
|
|
<a href={link_plafthorm_yu}>
|
|
<Image
|
|
src={'/img/youtube.png'}
|
|
alt={title_items}
|
|
width="0"
|
|
height="0"
|
|
sizes="200vw"
|
|
className="w-auto row-span-2"
|
|
/>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</>
|
|
)
|
|
|
|
|
|
export default function Home() {
|
|
interface IUser {
|
|
[x: string]: any;
|
|
name: string;
|
|
};
|
|
const [data, setData] = useState<IUser>();
|
|
const [isLoading, setLoading] = useState(false)
|
|
|
|
|
|
useEffect(() => {
|
|
setLoading(true)
|
|
fetch('/api/podcasts/all')
|
|
.then((res) => res.json())
|
|
.then((data) => {
|
|
setData(data);
|
|
console.log(data)
|
|
setLoading(false);
|
|
})
|
|
}, [])
|
|
|
|
if (isLoading) return <p>Загрузка...</p>
|
|
if (!data) return <p>Нет интернета</p>
|
|
|
|
const podcasts = data.map((obj: JSX.IntrinsicAttributes & Props, index: React.Key | null | undefined) => <PodcastBlocks key={index} {...obj}/> );
|
|
|
|
return (
|
|
<>
|
|
<Segment style={{ padding: '8em 0em' }} vertical>
|
|
<Grid container stackable textAlign='center'>
|
|
<Grid.Row>
|
|
<Grid.Column width={12} textAlign='center'>
|
|
<span className='text-4xl'>Подкаст-студия</span>
|
|
<Header as='h3' style={{ fontSize: '4em' }}>
|
|
<span className='text-orange-600'>Blog</span>
|
|
Baster
|
|
</Header>
|
|
<Header as='h3' style={{ fontSize: '2em' }}>
|
|
Увлечены. Качественно.
|
|
За новое звучание.
|
|
</Header>
|
|
<p style={{ fontSize: '1.33em' }}>
|
|
Если вы хотите стать нашим партнером или рекламодателем — пишите на podcast@blogbaster.xyz
|
|
</p>
|
|
</Grid.Column>
|
|
</Grid.Row>
|
|
</Grid>
|
|
</Segment>
|
|
<Segment vertical>
|
|
<Container>
|
|
<Item.Group>
|
|
{podcasts}
|
|
</Item.Group>
|
|
</Container>
|
|
</Segment>
|
|
|
|
<Segment inverted vertical style={{ padding: '5em 0em' }}>
|
|
<Container>
|
|
<Grid divided inverted stackable>
|
|
<Grid.Row>
|
|
<Grid.Column width={3}>
|
|
<Header inverted as='h4' content='Социальные сети' />
|
|
<List link inverted>
|
|
<Link className='mb-3 block text-base font-medium font-bold mb-2'
|
|
href='https://vk.com/blogbaster_xyz'>
|
|
Вконтакте
|
|
</Link>
|
|
<Link className='mb-3 block text-base font-medium font-bold mb-2'
|
|
href='https://t.me/medishik'>
|
|
Telegram
|
|
</Link>
|
|
</List>
|
|
</Grid.Column>
|
|
<Grid.Column width={3}>
|
|
<Header inverted as='h4' content='Платформы' />
|
|
<List link inverted>
|
|
<Link className='mb-3 block text-base font-medium font-bold mb-2'
|
|
href='https://music.yandex.ru/search?text=нравится%20слушать'>
|
|
Яндекс музыка
|
|
</Link>
|
|
<Link className='mb-3 block text-base font-medium font-bold mb-2'
|
|
href='https://podcasts.google.com/feed/aHR0cHM6Ly9ibG9nYmFzdGVyLnh5ei9hcGkvcG9kY2FzdHMvaG9iYml0cy9yc3M?sa=X&ved=2ahUKEwiu-_yViMKDAxUIefEDHSfWA_MQ9sEGegQIARAE'>
|
|
Google подкасты
|
|
</Link>
|
|
<Link className='mb-3 block text-base font-medium font-bold mb-2'
|
|
href='https://www.apple.com/apple-podcasts/'>
|
|
Apple подкасты
|
|
</Link>
|
|
</List>
|
|
</Grid.Column>
|
|
<Grid.Column width={7}>
|
|
<Header as='' inverted>
|
|
<Link className='mb-3 block text-base font-medium font-bold mb-2'
|
|
href='https://vk.com/blogbaster_xyz'>
|
|
О нас
|
|
</Link>
|
|
</Header>
|
|
<p>
|
|
BlogBaster 2024
|
|
</p>
|
|
</Grid.Column>
|
|
</Grid.Row>
|
|
</Grid>
|
|
</Container>
|
|
</Segment>
|
|
</>
|
|
)
|
|
} |