Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
ad22296
в1.3 - Минорненькое, добавил myschol fm
cryptexctl Dec 8, 2024
c738d95
в1.6 - подготовка в к в2.0, пока-что в бете
cryptexctl Dec 10, 2024
71d54d1
Надо бы поменять ридми...
cryptexctl Dec 10, 2024
b4a199c
ya puknul
cryptexctl Dec 11, 2024
6833406
Update puknul
cryptexctl Dec 11, 2024
37e3605
Update puknul
cryptexctl Dec 11, 2024
a5448ba
короче скрипт работает, можно использовать
cryptexctl Dec 11, 2024
1962b09
Create build.yml
cryptexctl Dec 11, 2024
1fe3aa6
Update build.yml
cryptexctl Dec 11, 2024
efc0564
Update build.yml
cryptexctl Dec 11, 2024
31df388
Update build.yml
cryptexctl Dec 11, 2024
1dbf788
Update build.yml
cryptexctl Dec 11, 2024
1007370
блять молюсь чтобы ты работало
cryptexctl Dec 11, 2024
2bb840f
Update build.yml
cryptexctl Dec 11, 2024
746798e
Update build.yml
cryptexctl Dec 11, 2024
38bc0f8
Update build.yml
cryptexctl Dec 11, 2024
4fea17e
Update build.yml
cryptexctl Dec 11, 2024
08f5a00
Update build.yml
cryptexctl Dec 11, 2024
9eb4c0b
это щас будет ебля с ребилдом
cryptexctl Dec 11, 2024
2a12d42
Разрешён конфликт с UserInterfaceState.xcuserstate
cryptexctl Dec 11, 2024
58ab4b7
Удалён конфликтующий файл UserInterfaceState.xcuserstate
cryptexctl Dec 11, 2024
f552a1b
Create objective-c-xcode.yml
cryptexctl Dec 11, 2024
5bd8850
Update objective-c-xcode.yml
cryptexctl Dec 11, 2024
1e99d26
Update objective-c-xcode.yml
cryptexctl Dec 11, 2024
ffaa328
Update objective-c-xcode.yml
cryptexctl Dec 11, 2024
bd03e41
Update objective-c-xcode.yml
cryptexctl Dec 11, 2024
d967cdb
Update objective-c-xcode.yml
cryptexctl Dec 11, 2024
323827f
Create xuy.yml
cryptexctl Dec 12, 2024
271e1d6
Update README.md
cryptexctl Dec 12, 2024
4f00981
Update README.md
cryptexctl Dec 12, 2024
58c27fe
Updated waka-readme graph with new metrics
github-actions[bot] Dec 12, 2024
b572536
Update README.md
cryptexctl Dec 12, 2024
2b18585
Updated waka-readme graph with new metrics
github-actions[bot] Dec 12, 2024
f1cbc7f
Update README.md
cryptexctl Dec 13, 2024
08083c8
попытка в автосборку
cryptexctl Dec 14, 2024
fa48e14
зачем вы ветку обновили
cryptexctl Dec 14, 2024
9c6c4e1
блять я не туда залил
cryptexctl Dec 14, 2024
a6020cd
Updated waka-readme graph with new metrics
github-actions[bot] Dec 15, 2024
25f6671
Updated waka-readme graph with new metrics
github-actions[bot] Dec 16, 2024
eecc34a
Updated waka-readme graph with new metrics
github-actions[bot] Dec 17, 2024
1d27ab5
Updated waka-readme graph with new metrics
github-actions[bot] Dec 18, 2024
09cd6c9
Update xuy.yml
cryptexctl Dec 18, 2024
42addcb
Updated waka-readme graph with new metrics
github-actions[bot] Dec 19, 2024
f7e3aca
Updated waka-readme graph with new metrics
github-actions[bot] Dec 20, 2024
7a28188
Updated waka-readme graph with new metrics
github-actions[bot] Dec 21, 2024
1e673bc
Updated waka-readme graph with new metrics
github-actions[bot] Dec 22, 2024
f1be228
Updated waka-readme graph with new metrics
github-actions[bot] Dec 23, 2024
ecc4fe9
Updated waka-readme graph with new metrics
github-actions[bot] Dec 24, 2024
628ba38
Updated waka-readme graph with new metrics
github-actions[bot] Dec 25, 2024
0d4df2f
Updated waka-readme graph with new metrics
github-actions[bot] Dec 26, 2024
0f49d60
Updated waka-readme graph with new metrics
github-actions[bot] Dec 27, 2024
a3218f1
Updated waka-readme graph with new metrics
github-actions[bot] Dec 28, 2024
3c3b2e2
Updated waka-readme graph with new metrics
github-actions[bot] Dec 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions .github/workflows/objective-c-xcode.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Build and Archive iOS Project

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
build:
runs-on: macos-latest

steps:
# Шаг 1: Клонирование репозитория
- name: Checkout source code
uses: actions/checkout@v3

# Шаг 2: Настройка Xcode
- name: Set up Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: 16.1

# Шаг 3: Сборка xcarchive
- name: Build xcarchive
run: |
xcodebuild clean archive \
-project EasyMusic.xcodeproj \
-scheme EasyMusic \
-configuration Release \
-archivePath ./build/EasyMusic.xcarchive \
-destination "generic/platform=iOS" \
CODE_SIGN_IDENTITY="" \
CODE_SIGNING_ALLOWED=NO
- name: Check archive contents
run: |
ls -la ./build/EasyMusic.xcarchive
ls -la ./build/EasyMusic.xcarchive/Products/Applications
ls -la ./build/EasyMusic.xcarchive/dSYMs
# Шаг 4: Сохранение xcarchive как артефакт
- name: Upload xcarchive as artifact
uses: actions/upload-artifact@v3
with:
name: EasyMusic.xcarchive
path: ./build/EasyMusic.xcarchive

# Шаг 5: Добавление инструкции по созданию .ipa
- name: Upload instructions
run: echo "To create .ipa:\n1. Open Xcode Organizer or use xcodebuild.\n2. Use xcarchive to generate .ipa.\n3. For manual export, run:\nxcodebuild -exportArchive -archivePath ./EasyMusic.xcarchive -exportPath ./EasyMusic.ipa -exportOptionsPlist ./ExportOptions.plist" > README_FOR_IPA.txt
- name: Upload README
uses: actions/upload-artifact@v3
with:
name: README_FOR_IPA
path: README_FOR_IPA.txt
16 changes: 16 additions & 0 deletions .github/workflows/xuy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Work Stats Readme

on:
workflow_dispatch:
schedule:
# Runs every 2 hours
- cron: "0 */9 * * *"

jobs:
update-readme:
name: Update this repo's README
runs-on: ubuntu-latest
steps:
- uses: athul/waka-readme@master
with:
WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
37 changes: 11 additions & 26 deletions EasyMusic.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
/* End PBXFileReference section */

/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
F0CD7D9B2D059D7B0034CC02 /* Exceptions for "EasyMusic" folder in "EasyMusic" target */ = {
F0D851512D064F7E001A76ED /* Exceptions for "EasyMusic" folder in "EasyMusic" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Info.plist,
Expand All @@ -43,20 +43,11 @@
F0CD7D6D2D059CED0034CC02 /* EasyMusic */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
F0CD7D9B2D059D7B0034CC02 /* Exceptions for "EasyMusic" folder in "EasyMusic" target */,
F0D851512D064F7E001A76ED /* Exceptions for "EasyMusic" folder in "EasyMusic" target */,
);
path = EasyMusic;
sourceTree = "<group>";
};
F0CD7D7E2D059CEE0034CC02 /* EasyMusicTests */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = EasyMusicTests;
sourceTree = "<group>";
};
F0CD7D882D059CEE0034CC02 /* EasyMusicUITests */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = EasyMusicUITests;
sourceTree = "<group>";
name = EasyMusic;
path = /Users/arbung/iOS/calcul/platonfm/EasyMusic/EasyMusic;
sourceTree = "<absolute>";
};
/* End PBXFileSystemSynchronizedRootGroup section */

Expand Down Expand Up @@ -89,8 +80,6 @@
isa = PBXGroup;
children = (
F0CD7D6D2D059CED0034CC02 /* EasyMusic */,
F0CD7D7E2D059CEE0034CC02 /* EasyMusicTests */,
F0CD7D882D059CEE0034CC02 /* EasyMusicUITests */,
F0CD7D6C2D059CED0034CC02 /* Products */,
);
sourceTree = "<group>";
Expand Down Expand Up @@ -143,9 +132,6 @@
dependencies = (
F0CD7D7D2D059CEE0034CC02 /* PBXTargetDependency */,
);
fileSystemSynchronizedGroups = (
F0CD7D7E2D059CEE0034CC02 /* EasyMusicTests */,
);
name = EasyMusicTests;
packageProductDependencies = (
);
Expand All @@ -166,9 +152,6 @@
dependencies = (
F0CD7D872D059CEE0034CC02 /* PBXTargetDependency */,
);
fileSystemSynchronizedGroups = (
F0CD7D882D059CEE0034CC02 /* EasyMusicUITests */,
);
name = EasyMusicUITests;
packageProductDependencies = (
);
Expand Down Expand Up @@ -409,7 +392,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_ASSET_PATHS = "\"EasyMusic/Preview Content\"";
DEVELOPMENT_TEAM = 25G2F7AWV6;
ENABLE_PREVIEWS = YES;
Expand All @@ -419,14 +402,15 @@
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UIStatusBarHidden = NO;
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
IPHONEOS_DEPLOYMENT_TARGET = 15.6;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.2;
MARKETING_VERSION = 1.6;
PRODUCT_BUNDLE_IDENTIFIER = platon.EasyMusic;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
Expand All @@ -441,7 +425,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_ASSET_PATHS = "\"EasyMusic/Preview Content\"";
DEVELOPMENT_TEAM = 25G2F7AWV6;
ENABLE_PREVIEWS = YES;
Expand All @@ -451,14 +435,15 @@
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UIStatusBarHidden = NO;
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
IPHONEOS_DEPLOYMENT_TARGET = 15.6;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.2;
MARKETING_VERSION = 1.6;
PRODUCT_BUNDLE_IDENTIFIER = platon.EasyMusic;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
Expand Down
Binary file not shown.
13 changes: 13 additions & 0 deletions EasyMusic/AppSettings.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//
// AppSettings.swift
// EasyMusic
//
// Created by Platon on 10.12.2024.
//


import SwiftUI

class AppSettings: ObservableObject {
@Published var useNewDesign: Bool = false
}
4 changes: 2 additions & 2 deletions EasyMusic/Assets.xcassets/AppIcon.appiconset/Contents.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"value" : "dark"
}
],
"filename" : "asdasdasd.jpg",
"filename" : "newtinted 1.jpg",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
Expand All @@ -25,7 +25,7 @@
"value" : "tinted"
}
],
"filename" : "gkjhkjhkj.jpg",
"filename" : "newtinted.jpg",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
Expand Down
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 35 additions & 0 deletions EasyMusic/ClassicDesignView.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
//
// ClassicDesignView.swift
// EasyMusic
//
// Created by Platon on 10.12.2024.
//

import SwiftUI

struct ClassicDesignView: View {
var body: some View {
List(stations, id: \.name) { station in
NavigationLink(destination: RadioPlayer(station: station)) {
HStack {
Circle()
.fill(LinearGradient(
gradient: Gradient(colors: station.colors),
startPoint: .top,
endPoint: .bottom
))
.frame(width: 50, height: 50)

VStack(alignment: .leading) {
Text(station.name)
.font(.headline)
Text(station.description)
.font(.subheadline)
.lineLimit(2)
}
}
}
}
.navigationTitle("Каналы")
}
}
127 changes: 16 additions & 111 deletions EasyMusic/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,122 +8,27 @@
import SwiftUI

struct ContentView: View {
@State private var currentStationIndex: Int = 0
@State private var isPlaying: Bool = false
@ObservedObject private var radioPlayer = RadioPlayer.shared

private let stations: [Station] = [
Station(
name: "Tabris FM",
description: "Радио, на котором крутятся отобранные, нормальные, приятные треки многих жанров. Плейлист пополняется ежедневно в районе от 18:00 до 22:00.",
streamURL: "https://stream.zeno.fm/uzrnuzqmen6tv",
color: LinearGradient(colors: [.red], startPoint: .top, endPoint: .bottom)
),
Station(
name: "Night FM",
description: "Радио для концентрации, успокоения, наслаждения. На радио играет спокойная музыка различных исполнителей. Идеально подойдет для ночных прогулок и поездок.",
streamURL: "https://stream.zeno.fm/lgxpsux5v9avv",
color: LinearGradient(colors: [.blue, .cyan], startPoint: .top, endPoint: .bottom)
),
Station(
name: "Penis FM",
description: "Радио для тех, кого обычные треки не устраивают и они слушают альтернативные жанры. На радио играют треки таких исполнителей как Dekma, Кишлак и т.д.",
streamURL: "https://stream.zeno.fm/hfrwlmkuux4uv",
color: LinearGradient(colors: [.blue, .purple], startPoint: .top, endPoint: .bottom)
),
Station(
name: "Platon FM",
description: "Музыка всех жанров, характеров и исполнителей. Идеально подойдет для меломанов.",
streamURL: "http://45.95.234.91:8000/music",
color: LinearGradient(colors: [.yellow, .orange], startPoint: .top, endPoint: .bottom)
)
]

private var currentStation: Station {
stations[currentStationIndex]
}
@StateObject private var appSettings = AppSettings()

var body: some View {
ZStack {
currentStation.color
.ignoresSafeArea()

VStack(spacing: 20) {
Text(currentStation.name)
.font(.largeTitle)
.fontWeight(.bold)
.foregroundColor(.white)

Text(currentStation.description)
.multilineTextAlignment(.center)
.foregroundColor(.white)
.padding()

Text("Now Playing: \(radioPlayer.trackTitle)")
.foregroundColor(.white)
.font(.headline)

Spacer()

VStack {
Button(action: togglePlay) {
Image(systemName: isPlaying ? "pause.circle.fill" : "play.circle.fill")
.resizable()
.frame(width: 80, height: 80)
.foregroundColor(.white)
.padding(.bottom, 20)
}

HStack {
Button(action: previousStation) {
Image(systemName: "chevron.left")
.resizable()
.frame(width: 40, height: 40)
.foregroundColor(.white)
}
Spacer()
Button(action: nextStation) {
Image(systemName: "chevron.right")
.resizable()
.frame(width: 40, height: 40)
.foregroundColor(.white)
}
}
.padding(.horizontal, 40)
NavigationView {
VStack {
if appSettings.useNewDesign {
NewDesignView()
} else {
ClassicDesignView()
}
}
.padding()
}
.onAppear {
NotificationCenter.default.addObserver(forName: .nextStation, object: nil, queue: .main) { _ in
self.nextStation()
}
NotificationCenter.default.addObserver(forName: .previousStation, object: nil, queue: .main) { _ in
self.previousStation()
.navigationTitle("EasyMusic")
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
NavigationLink(destination: SettingsView(appSettings: appSettings)) {
Image(systemName: "gearshape")
.imageScale(.large)
.foregroundColor(.blue)
}
}
}
}
}

private func togglePlay() {
if isPlaying {
radioPlayer.stop()
} else {
radioPlayer.playStream(url: currentStation.streamURL)
}
isPlaying.toggle()
}

private func previousStation() {
if currentStationIndex > 0 {
currentStationIndex -= 1
radioPlayer.playStream(url: currentStation.streamURL)
}
}

private func nextStation() {
if currentStationIndex < stations.count - 1 {
currentStationIndex += 1
radioPlayer.playStream(url: currentStation.streamURL)
}
}
}
Loading
Loading